]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/AbstractExecutionModulesManager.java
Move to execution package
[gpl/argeo-slc.git] / runtime / org.argeo.slc.core / src / main / java / org / argeo / slc / core / execution / AbstractExecutionModulesManager.java
index 2db1eb31a2ac0632887764435e31f7d596766560..4e5672638fb1311b40a26e847285101f67fe24b4 100644 (file)
@@ -1,39 +1,21 @@
 package org.argeo.slc.core.execution;
 
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.SlcException;
-import org.argeo.slc.execution.ExecutionFlow;
-import org.argeo.slc.execution.ExecutionFlowDescriptor;
-import org.argeo.slc.execution.ExecutionModuleDescriptor;
+
 import org.argeo.slc.execution.ExecutionModulesManager;
-import org.argeo.slc.execution.ExecutionSpec;
-import org.argeo.slc.execution.ExecutionSpecAttribute;
-import org.argeo.slc.process.RealizedFlow;
 import org.argeo.slc.process.SlcExecution;
 import org.argeo.slc.process.SlcExecutionNotifier;
-import org.argeo.slc.process.SlcExecutionStep;
-import org.springframework.aop.scope.ScopedObject;
-import org.springframework.util.Assert;
 
 public abstract class AbstractExecutionModulesManager implements
                ExecutionModulesManager {
-       private final static Log log = LogFactory
-                       .getLog(AbstractExecutionModulesManager.class);
-
        private List<SlcExecutionNotifier> slcExecutionNotifiers = new ArrayList<SlcExecutionNotifier>();
        private ThreadGroup processesThreadGroup = new ThreadGroup("Processes");
 
        public void process(SlcExecution slcExecution) {
-               new ProcessThread(processesThreadGroup, slcExecution).start();
+               new ProcessThread(this, slcExecution).start();
        }
-
+/*
        protected void dispatchUpdateStatus(SlcExecution slcExecution,
                        String oldStatus, String newStatus) {
                for (Iterator<SlcExecutionNotifier> it = slcExecutionNotifiers
@@ -51,21 +33,16 @@ public abstract class AbstractExecutionModulesManager implements
                                .iterator(); it.hasNext();) {
                        it.next().addSteps(slcExecution, steps);
                }
-       }
+       }*/
 
        public void setSlcExecutionNotifiers(
                        List<SlcExecutionNotifier> slcExecutionNotifiers) {
                this.slcExecutionNotifiers = slcExecutionNotifiers;
        }
-
-       protected static ExecutionModuleDescriptor createDescriptor(
-                       String moduleName, String moduleVersion,
+/*
+       protected static void addFlowsToDescriptor(ExecutionModuleDescriptor md,
                        Map<String, ExecutionFlow> executionFlows) {
                // TODO: put this in a separate configurable object
-               ExecutionModuleDescriptor md = new ExecutionModuleDescriptor();
-               md.setName(moduleName);
-               md.setVersion(moduleVersion);
-
                for (String name : executionFlows.keySet()) {
                        ExecutionFlow executionFlow = executionFlows.get(name);
 
@@ -120,110 +97,81 @@ public abstract class AbstractExecutionModulesManager implements
                        // Add execution flow
                        md.getExecutionFlows().add(efd);
                }
-
-               return md;
        }
-
-       /** Thread of the SLC Process, starting the sub executions. */
-       private class ProcessThread extends Thread {
-               private final SlcExecution slcProcess;
-               private final ThreadGroup processThreadGroup;
-               private final List<RealizedFlow> flowsToProcess = new ArrayList<RealizedFlow>();
-
-               public ProcessThread(ThreadGroup processesThreadGroup,
-                               SlcExecution slcExecution) {
-                       super(processesThreadGroup, "SLC Process #"
-                                       + slcExecution.getUuid());
-                       this.slcProcess = slcExecution;
-                       processThreadGroup = new ThreadGroup("SLC Process #"
-                                       + slcExecution.getUuid() + " thread group");
-               }
-
-               public void run() {
-                       log.info("\n##\n## Process SLC Execution " + slcProcess + "\n##\n");
-
-                       // FIXME: hack to let the SlcExecution be registered on server
-                       try {
-                               Thread.sleep(500);
-                       } catch (InterruptedException e1) {
-                               // silent
-                       }
-
-                       slcProcess.setStatus(SlcExecution.STATUS_RUNNING);
-                       dispatchUpdateStatus(slcProcess, SlcExecution.STATUS_SCHEDULED,
-                                       SlcExecution.STATUS_RUNNING);
-
-                       flowsToProcess.addAll(slcProcess.getRealizedFlows());
-
-                       while (flowsToProcess.size() > 0) {
-                               RealizedFlow flow = flowsToProcess.remove(0);
-                               ExecutionThread thread = new ExecutionThread(this, flow);
-                               thread.start();
-
-                               synchronized (this) {
-                                       try {
-                                               wait();
-                                       } catch (InterruptedException e) {
-                                               // silent
-                                       }
-                               }
-                       }
-
-                       slcProcess.setStatus(SlcExecution.STATUS_FINISHED);
-                       dispatchUpdateStatus(slcProcess, SlcExecution.STATUS_RUNNING,
-                                       SlcExecution.STATUS_FINISHED);
-               }
-
-               public synchronized void flowCompleted() {
-                       notifyAll();
-               }
-
-               public SlcExecution getSlcProcess() {
-                       return slcProcess;
-               }
-
-               public ThreadGroup getProcessThreadGroup() {
-                       return processThreadGroup;
-               }
+*/
+       /**
+        * Thread of the SLC Process, starting the sub executions. private class
+        * ProcessThread extends Thread { private final SlcExecution slcProcess;
+        * private final ThreadGroup processThreadGroup; private final
+        * List<RealizedFlow> flowsToProcess = new ArrayList<RealizedFlow>();
+        * 
+        * public ProcessThread(ThreadGroup processesThreadGroup, SlcExecution
+        * slcExecution) { super(processesThreadGroup, "SLC Process #" +
+        * slcExecution.getUuid()); this.slcProcess = slcExecution;
+        * processThreadGroup = new ThreadGroup("SLC Process #" +
+        * slcExecution.getUuid() + " thread group"); }
+        * 
+        * public void run() { log.info("\n##\n## Process SLC Execution " +
+        * slcProcess + "\n##\n");
+        * 
+        * slcProcess.setStatus(SlcExecution.STATUS_RUNNING);
+        * dispatchUpdateStatus(slcProcess, SlcExecution.STATUS_SCHEDULED,
+        * SlcExecution.STATUS_RUNNING);
+        * 
+        * flowsToProcess.addAll(slcProcess.getRealizedFlows());
+        * 
+        * while (flowsToProcess.size() > 0) { RealizedFlow flow =
+        * flowsToProcess.remove(0); ExecutionThread thread = new
+        * ExecutionThread(this, flow); thread.start();
+        * 
+        * synchronized (this) { try { wait(); } catch (InterruptedException e) { //
+        * silent } } }
+        * 
+        * slcProcess.setStatus(SlcExecution.STATUS_FINISHED);
+        * dispatchUpdateStatus(slcProcess, SlcExecution.STATUS_RUNNING,
+        * SlcExecution.STATUS_FINISHED); }
+        * 
+        * public synchronized void flowCompleted() { notifyAll(); }
+        * 
+        * public SlcExecution getSlcProcess() { return slcProcess; }
+        * 
+        * public ThreadGroup getProcessThreadGroup() { return processThreadGroup; }
+        * }
+        */
+
+       /**
+        * Thread of a single execution private class ExecutionThread extends Thread
+        * { private final RealizedFlow realizedFlow; private final ProcessThread
+        * processThread;
+        * 
+        * public ExecutionThread(ProcessThread processThread, RealizedFlow
+        * realizedFlow) { super(processThread.getProcessThreadGroup(), "Flow " +
+        * realizedFlow.getFlowDescriptor().getName()); this.realizedFlow =
+        * realizedFlow; this.processThread = processThread; }
+        * 
+        * public void run() { ExecutionFlowDescriptor executionFlowDescriptor =
+        * realizedFlow .getFlowDescriptor(); String flowName =
+        * executionFlowDescriptor.getName();
+        * 
+        * dispatchAddStep(processThread.getSlcProcess(), new
+        * SlcExecutionStep(SlcExecutionStep.TYPE_PHASE_START, "Flow " + flowName));
+        * 
+        * try { execute(realizedFlow); } catch (Exception e) { // TODO: re-throw
+        * exception ? String msg = "Execution of flow " + flowName + " failed.";
+        * log.error(msg, e); dispatchAddStep(processThread.getSlcProcess(), new
+        * SlcExecutionStep(msg + " " + e.getMessage())); } finally {
+        * processThread.flowCompleted();
+        * dispatchAddStep(processThread.getSlcProcess(), new
+        * SlcExecutionStep(SlcExecutionStep.TYPE_PHASE_END, "Flow " + flowName)); }
+        * } }
+        */
+
+       public List<SlcExecutionNotifier> getSlcExecutionNotifiers() {
+               return slcExecutionNotifiers;
        }
 
-       /** Thread of a single execution */
-       private class ExecutionThread extends Thread {
-               private final RealizedFlow realizedFlow;
-               private final ProcessThread processThread;
-
-               public ExecutionThread(ProcessThread processThread,
-                               RealizedFlow realizedFlow) {
-                       super(processThread.getProcessThreadGroup(), "Flow "
-                                       + realizedFlow.getFlowDescriptor().getName());
-                       this.realizedFlow = realizedFlow;
-                       this.processThread = processThread;
-               }
-
-               public void run() {
-                       ExecutionFlowDescriptor executionFlowDescriptor = realizedFlow
-                                       .getFlowDescriptor();
-                       String flowName = executionFlowDescriptor.getName();
-
-                       dispatchAddStep(processThread.getSlcProcess(),
-                                       new SlcExecutionStep(SlcExecutionStep.TYPE_PHASE_START,
-                                                       "Flow " + flowName));
-
-                       try {
-                               execute(realizedFlow);
-                       } catch (Exception e) {
-                               // TODO: re-throw exception ?
-                               String msg = "Execution of flow " + flowName + " failed.";
-                               log.error(msg, e);
-                               dispatchAddStep(processThread.getSlcProcess(),
-                                               new SlcExecutionStep(msg + " " + e.getMessage()));
-                       } finally {
-                               processThread.flowCompleted();
-                               dispatchAddStep(processThread.getSlcProcess(),
-                                               new SlcExecutionStep(SlcExecutionStep.TYPE_PHASE_END,
-                                                               "Flow " + flowName));
-                       }
-               }
+       public ThreadGroup getProcessesThreadGroup() {
+               return processesThreadGroup;
        }
 
 }