]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.jcr/src/org/argeo/slc/jcr/execution/JcrExecutionProcess.java
Move Argeo SLC JCR components to Argeo JCR
[gpl/argeo-slc.git] / org.argeo.slc.jcr / src / org / argeo / slc / jcr / execution / JcrExecutionProcess.java
diff --git a/org.argeo.slc.jcr/src/org/argeo/slc/jcr/execution/JcrExecutionProcess.java b/org.argeo.slc.jcr/src/org/argeo/slc/jcr/execution/JcrExecutionProcess.java
deleted file mode 100644 (file)
index 8cc4dbe..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-package org.argeo.slc.jcr.execution;
-
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-import java.util.List;
-
-import javax.jcr.Node;
-import javax.jcr.NodeIterator;
-import javax.jcr.Property;
-import javax.jcr.Repository;
-import javax.jcr.RepositoryException;
-
-import org.argeo.api.cms.CmsLog;
-import org.argeo.jcr.JcrUtils;
-import org.argeo.slc.NameVersion;
-import org.argeo.slc.SlcException;
-import org.argeo.slc.SlcNames;
-import org.argeo.slc.SlcTypes;
-import org.argeo.slc.execution.ExecutionProcess;
-import org.argeo.slc.execution.ExecutionStep;
-import org.argeo.slc.execution.RealizedFlow;
-import org.argeo.slc.jcr.SlcJcrUtils;
-import org.argeo.slc.runtime.ProcessThread;
-
-/** Execution process implementation based on a JCR node. */
-public class JcrExecutionProcess implements ExecutionProcess, SlcNames {
-       private final static CmsLog log = CmsLog.getLog(JcrExecutionProcess.class);
-       private final Node node;
-
-       private Long nextLogLine = 1l;
-
-       public JcrExecutionProcess(Node node) {
-               this.node = node;
-       }
-
-       public synchronized String getUuid() {
-               try {
-                       return node.getProperty(SLC_UUID).getString();
-               } catch (RepositoryException e) {
-                       throw new SlcException("Cannot get uuid for " + node, e);
-               }
-       }
-
-       public synchronized String getStatus() {
-               try {
-                       return node.getProperty(SLC_STATUS).getString();
-               } catch (RepositoryException e) {
-                       log.error("Cannot get status: " + e);
-                       // we should re-throw exception because this information can
-                       // probably used for monitoring in case there are already unexpected
-                       // exceptions
-                       return UNKOWN;
-               }
-       }
-
-       public synchronized void setStatus(String status) {
-               try {
-                       node.setProperty(SLC_STATUS, status);
-                       // last modified properties needs to be manually updated
-                       // see https://issues.apache.org/jira/browse/JCR-2233
-                       JcrUtils.updateLastModified(node);
-                       node.getSession().save();
-               } catch (RepositoryException e) {
-                       JcrUtils.discardUnderlyingSessionQuietly(node);
-                       // we should re-throw exception because this information can
-                       // probably used for monitoring in case there are already unexpected
-                       // exceptions
-                       log.error("Cannot set status " + status + ": " + e);
-               }
-       }
-
-       /**
-        * Synchronized in order to make sure that there is no concurrent modification
-        * of {@link #nextLogLine}.
-        */
-       public synchronized void addSteps(List<ExecutionStep> steps) {
-               try {
-                       steps: for (ExecutionStep step : steps) {
-                               String type;
-                               if (step.getType().equals(ExecutionStep.TRACE))
-                                       type = SlcTypes.SLC_LOG_TRACE;
-                               else if (step.getType().equals(ExecutionStep.DEBUG))
-                                       type = SlcTypes.SLC_LOG_DEBUG;
-                               else if (step.getType().equals(ExecutionStep.INFO))
-                                       type = SlcTypes.SLC_LOG_INFO;
-                               else if (step.getType().equals(ExecutionStep.WARNING))
-                                       type = SlcTypes.SLC_LOG_WARNING;
-                               else if (step.getType().equals(ExecutionStep.ERROR))
-                                       type = SlcTypes.SLC_LOG_ERROR;
-                               else
-                                       // skip
-                                       continue steps;
-
-                               String relPath = SLC_LOG + '/' + step.getThread().replace('/', '_') + '/'
-                                               + step.getLocation().replace('.', '/');
-                               String path = node.getPath() + '/' + relPath;
-                               // clean special character
-                               // TODO factorize in JcrUtils
-                               path = path.replace('@', '_');
-
-                               Node location = JcrUtils.mkdirs(node.getSession(), path);
-                               Node logEntry = location.addNode(Long.toString(nextLogLine), type);
-                               logEntry.setProperty(SLC_MESSAGE, step.getLog());
-                               Calendar calendar = new GregorianCalendar();
-                               calendar.setTime(step.getTimestamp());
-                               logEntry.setProperty(SLC_TIMESTAMP, calendar);
-
-                               // System.out.println("Logged " + logEntry.getPath());
-
-                               nextLogLine++;
-                       }
-
-                       // last modified properties needs to be manually updated
-                       // see https://issues.apache.org/jira/browse/JCR-2233
-                       JcrUtils.updateLastModified(node);
-
-                       node.getSession().save();
-               } catch (Exception e) {
-                       JcrUtils.discardUnderlyingSessionQuietly(node);
-                       e.printStackTrace();
-               }
-       }
-
-       // public Node getNode() {
-       // return node;
-       // }
-
-       public List<RealizedFlow> getRealizedFlows() {
-               try {
-                       List<RealizedFlow> realizedFlows = new ArrayList<RealizedFlow>();
-                       Node rootRealizedFlowNode = node.getNode(SLC_FLOW);
-                       // we just manage one level for the time being
-                       NodeIterator nit = rootRealizedFlowNode.getNodes(SLC_FLOW);
-                       while (nit.hasNext()) {
-                               Node realizedFlowNode = nit.nextNode();
-
-                               if (realizedFlowNode.hasNode(SLC_ADDRESS)) {
-                                       String flowPath = realizedFlowNode.getNode(SLC_ADDRESS).getProperty(Property.JCR_PATH).getString();
-                                       NameVersion moduleNameVersion = SlcJcrUtils.moduleNameVersion(flowPath);
-                                       ((ProcessThread) Thread.currentThread()).getExecutionModulesManager().start(moduleNameVersion);
-                               }
-
-                               RealizedFlow realizedFlow = new JcrRealizedFlow(realizedFlowNode);
-                               if (realizedFlow != null)
-                                       realizedFlows.add(realizedFlow);
-                       }
-                       return realizedFlows;
-               } catch (RepositoryException e) {
-                       throw new SlcException("Cannot get realized flows", e);
-               }
-       }
-
-       public String getNodePath() {
-               try {
-                       return node.getPath();
-               } catch (RepositoryException e) {
-                       throw new SlcException("Cannot get process node path for " + node, e);
-               }
-       }
-
-       public Repository getRepository() {
-               try {
-                       return node.getSession().getRepository();
-               } catch (RepositoryException e) {
-                       throw new SlcException("Cannot get process JCR repository for " + node, e);
-               }
-       }
-}