X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.support.jcr%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fjcr%2Fexecution%2FJcrExecutionProcess.java;h=e9a3b6380fd803dcc478b9a7e6375fe3f8eb91d1;hb=b7ad99f6fc4414eeb82b9a4ae65aa20e02af66ce;hp=cca76d95ba57d98e8e36116c1bfb9bba04607893;hpb=74904a755b5b344238eafa798419b80c5e74f7ed;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrExecutionProcess.java b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrExecutionProcess.java index cca76d95b..e9a3b6380 100644 --- a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrExecutionProcess.java +++ b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrExecutionProcess.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2012 Mathieu Baudier + * Copyright (C) 2007-2012 Argeo GmbH * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,11 +15,14 @@ */ 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.Repository; import javax.jcr.RepositoryException; import org.apache.commons.logging.Log; @@ -28,12 +31,13 @@ import org.argeo.jcr.JcrUtils; import org.argeo.slc.SlcException; import org.argeo.slc.execution.ExecutionProcess; import org.argeo.slc.execution.ExecutionStep; +import org.argeo.slc.execution.RealizedFlow; import org.argeo.slc.jcr.SlcNames; import org.argeo.slc.jcr.SlcTypes; /** Execution process implementation based on a JCR node. */ public class JcrExecutionProcess implements ExecutionProcess, SlcNames { - private Log log = LogFactory.getLog(JcrExecutionProcess.class); + private final static Log log = LogFactory.getLog(JcrExecutionProcess.class); private final Node node; private Long nextLogLine = 1l; @@ -42,7 +46,7 @@ public class JcrExecutionProcess implements ExecutionProcess, SlcNames { this.node = node; } - public String getUuid() { + public synchronized String getUuid() { try { return node.getProperty(SLC_UUID).getString(); } catch (RepositoryException e) { @@ -50,7 +54,7 @@ public class JcrExecutionProcess implements ExecutionProcess, SlcNames { } } - public String getStatus() { + public synchronized String getStatus() { try { return node.getProperty(SLC_STATUS).getString(); } catch (RepositoryException e) { @@ -62,7 +66,7 @@ public class JcrExecutionProcess implements ExecutionProcess, SlcNames { } } - public void setStatus(String status) { + public synchronized void setStatus(String status) { try { node.setProperty(SLC_STATUS, status); // last modified properties needs to be manually updated @@ -106,7 +110,7 @@ public class JcrExecutionProcess implements ExecutionProcess, SlcNames { String path = node.getPath() + '/' + relPath; // clean special character // TODO factorize in JcrUtils - path = path.replace('@', '_').replace(':', '_'); + path = path.replace('@', '_'); Node location = JcrUtils.mkdirs(node.getSession(), path); Node logEntry = location.addNode(Long.toString(nextLogLine), @@ -132,8 +136,44 @@ public class JcrExecutionProcess implements ExecutionProcess, SlcNames { } } - public Node getNode() { - return node; + // public Node getNode() { + // return node; + // } + + public List getRealizedFlows() { + try { + List realizedFlows = new ArrayList(); + 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(); + 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); + } + } }