docs/docs-core/src/main/java/com/sismics/docs/core/util/ActionUtil.java

75 lines
2.0 KiB
Java
Raw Normal View History

package com.sismics.docs.core.util;
import com.sismics.docs.core.constant.ActionType;
2018-03-29 17:59:47 +02:00
import com.sismics.docs.core.dao.dto.DocumentDto;
import com.sismics.docs.core.util.action.Action;
import com.sismics.docs.core.util.action.AddTagAction;
import com.sismics.docs.core.util.action.ProcessFilesAction;
2018-03-13 14:09:39 +01:00
import com.sismics.docs.core.util.action.RemoveTagAction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import jakarta.json.JsonObject;
/**
* Action utilities.
*
* @author bgamard
*/
public class ActionUtil {
/**
* Logger.
*/
private static final Logger log = LoggerFactory.getLogger(ActionUtil.class);
/**
2018-03-13 14:09:39 +01:00
* Find the action associated to an action type.
*
* @param actionType Action type
2018-03-13 14:09:39 +01:00
* @return Action
*/
2018-03-13 14:09:39 +01:00
private static Action findAction(ActionType actionType) {
Action action = null;
switch (actionType) {
case ADD_TAG:
action = new AddTagAction();
break;
2018-03-13 14:09:39 +01:00
case REMOVE_TAG:
action = new RemoveTagAction();
break;
case PROCESS_FILES:
action = new ProcessFilesAction();
break;
default:
log.error("Action type not handled: " + actionType);
2018-03-13 14:09:39 +01:00
break;
}
2018-03-13 14:09:39 +01:00
return action;
}
/**
* Validate an action.
*
* @param actionType Action type
* @param actionData Action data
* @throws Exception Validation error
*/
public static void validateAction(ActionType actionType, JsonObject actionData) throws Exception {
Action action = findAction(actionType);
action.validate(actionData);
}
/**
* Execute an action.
*
* @param actionType Action type
* @param actionData Action data
* @param documentDto Document DTO
*/
public static void executeAction(ActionType actionType, JsonObject actionData, DocumentDto documentDto) {
Action action = findAction(actionType);
action.execute(documentDto, actionData);
}
}