package de.superx.job; import static com.fasterxml.jackson.annotation.JsonTypeInfo.As.EXISTING_PROPERTY; import static com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME; import org.apache.commons.lang.StringUtils; import com.fasterxml.jackson.annotation.JsonTypeInfo; @JsonTypeInfo(use = NAME, include = EXISTING_PROPERTY, property = "type", visible = true) public abstract class ActionNode { public enum ActionType { LOAD(LoadAction.class, 1), DOSQL(SqlScriptAction.class, 2), DOQUERY(SqlAction.class, 3), UNLOAD(UnloadAction.class, 4), MSG(null, 5), TRANSFER(TransferAction.class, 6), KETTLE(KettleAction.class, 7), CONTAINER(ContainerNode.class, 8), UNLOADPARAMS(UnloadParams.class, 9), TIMESTAMP(Timestamp.class, 10), LOAD_ETL_ROUTINES(LoadEtlRoutinesAction.class, 11), LOAD_MONDRIAN_SCHEMA(LoadMondrianSchemaAction.class, 12), UNKNOWN(null, 13), EXTRACT(ExtractAction.class, 14), UPGRADE_DBFORMS_CONFIG(UpgradeDbFormsConfigAction.class, 16), EXECUTE_DBT(ExecuteDbtAction.class, 17), UPDATE_METADATA(UpdateMetadataAction.class, 18), EXECUTE_SQLFLUFF(ExecuteSQLFluffAction.class, 19), REMOVE_SPRING_BATCH_HISTORY(RemoveSpringBatchHistoryAction.class, 20), EXECUTE_ACTION_GROUP(ExecuteActionGroupAction.class, 21), ; private Class clazz; private int stepTypeId; private ActionType(Class clazz, int stepTypeId) { this.clazz = clazz; this.stepTypeId = stepTypeId; } public int getStepTypeId() { return this.stepTypeId; } public Class getActionClass() { return this.clazz; } public static ActionType getActionTypeById(int stepTypeId) { for(ActionType actionType : values()) { if(actionType.getStepTypeId() == stepTypeId) { return actionType; } } return ActionType.UNKNOWN; } } public ActionType type; public String name; public String id; public Integer tid; public Integer systemInfoId; public boolean active; public Integer custom; public ActionNode(String name, String id, Integer systemInfoId, boolean active, Integer custom, ActionType type) { if (name == null) { throw new IllegalArgumentException("Name must not be null"); } // table batch_step_execution.set_name is varchar(100)! this.name = StringUtils.abbreviate(name, 100); if (id == null || id.isEmpty()) { this.id = this.name.toLowerCase().replace(" ", "_"); } else { this.id = id; } this.type = type; this.systemInfoId = systemInfoId; this.active = active; this.custom = custom; } public ActionNode(String name, String id, Integer systemInfoId, boolean active, ActionType type) { this(name, id, systemInfoId, active, Integer.valueOf(0), type); } public ActionNode() {} }