--- /dev/null
+package org.argeo.slc.core.execution.tasks;\r
+\r
+import java.lang.reflect.Method;\r
+import java.util.UUID;\r
+\r
+import org.argeo.slc.SlcException;\r
+import org.argeo.slc.deploy.DeployedSystem;\r
+import org.argeo.slc.deploy.DeployedSystemManager;\r
+import org.argeo.slc.execution.Executable;\r
+import org.argeo.slc.process.SlcExecution;\r
+import org.argeo.slc.process.SlcExecutionRelated;\r
+import org.argeo.slc.process.SlcExecutionStep;\r
+import org.argeo.slc.structure.StructureRegistry;\r
+\r
+public class SlcManagerTask implements Executable, SlcExecutionRelated {\r
+ private String uuid;\r
+ private String slcExecutionUuid;\r
+ private String slcExecutionStepUuid;\r
+ \r
+ private String action;\r
+ private DeployedSystemManager<DeployedSystem> manager;\r
+\r
+ public final void execute() {\r
+ uuid = UUID.randomUUID().toString();\r
+ executeActions(StructureRegistry.ALL);\r
+ }\r
+ \r
+ protected void executeActions(String mode) {\r
+ try {\r
+ Method method = manager.getClass().getMethod(action, null);\r
+ method.invoke(manager, null);\r
+ } catch (Exception e) {\r
+ throw new SlcException("Cannot execute action " + action\r
+ + " for manager " + manager, e);\r
+ }\r
+ }\r
+ \r
+ public void setAction(String action) {\r
+ this.action = action;\r
+ }\r
+\r
+ public void setManager(DeployedSystemManager<DeployedSystem> manager) {\r
+ this.manager = manager;\r
+ }\r
+\r
+ public String getUuid() {\r
+ return uuid;\r
+ }\r
+\r
+ public void setUuid(String uuid) {\r
+ this.uuid = uuid;\r
+ }\r
+\r
+ public String getSlcExecutionUuid() {\r
+ return slcExecutionUuid;\r
+ }\r
+\r
+ public void setSlcExecutionUuid(String slcExecutionUuid) {\r
+ this.slcExecutionUuid = slcExecutionUuid;\r
+ }\r
+\r
+ public String getSlcExecutionStepUuid() {\r
+ return slcExecutionStepUuid;\r
+ }\r
+\r
+ public void setSlcExecutionStepUuid(String slcExecutionStepUuid) {\r
+ this.slcExecutionStepUuid = slcExecutionStepUuid;\r
+ }\r
+ \r
+ public void notifySlcExecution(SlcExecution slcExecution) {\r
+ if (slcExecution != null) {\r
+ slcExecutionUuid = slcExecution.getUuid();\r
+ SlcExecutionStep step = slcExecution.currentStep();\r
+ if (step != null) {\r
+ slcExecutionStepUuid = step.getUuid();\r
+ }\r
+ }\r
+ }\r
+}\r