X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.support.jcr%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fjcr%2FSlcJcrUtils.java;h=7f0f18a0cc2742acfd4ec66536594c36dc99dfd1;hb=12419f46844753798cd1b1eab3a7379611f25e47;hp=ed2294f30087a45066a3799f706fa5d788312401;hpb=9bab32638cc6a08ba96c3feca190733e9d1ac0ac;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/SlcJcrUtils.java b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/SlcJcrUtils.java index ed2294f30..7f0f18a0c 100644 --- a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/SlcJcrUtils.java +++ b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/SlcJcrUtils.java @@ -4,33 +4,42 @@ import java.util.Calendar; import java.util.GregorianCalendar; import org.argeo.jcr.JcrUtils; +import org.argeo.slc.deploy.ModuleDescriptor; -/** Utilities around the SLC JCR model. Note that it relies on fixed base paths. */ +/** + * Utilities around the SLC JCR model. Note that it relies on fixed base paths + * (convention over configuration) for optimization purposes. + */ public class SlcJcrUtils { public final static Integer AGENT_FACTORY_DEPTH = 3; - public final static Integer EXECUTION_MODULES_DEPTH = AGENT_FACTORY_DEPTH + 2; - public final static Integer EXECUTION_FLOWS_DEPTH = EXECUTION_MODULES_DEPTH + 3; /** Extracts the path of a flow relative to its execution module */ public static String flowRelativePath(String fullFlowPath) { String[] tokens = fullFlowPath.split("/"); StringBuffer buf = new StringBuffer(fullFlowPath.length()); - for (int i = EXECUTION_FLOWS_DEPTH; i < tokens.length; i++) { + for (int i = AGENT_FACTORY_DEPTH + 3; i < tokens.length; i++) { buf.append('/').append(tokens[i]); } return buf.toString(); } + /** Module node name based on module name and version */ + public static String getModuleNodeName(ModuleDescriptor moduleDescriptor) { + return moduleDescriptor.getName() + "_" + moduleDescriptor.getVersion(); + } + /** Extracts the execution module name of a flow */ public static String flowExecutionModuleName(String fullFlowPath) { String[] tokens = fullFlowPath.split("/"); - return tokens[EXECUTION_MODULES_DEPTH + 1]; + String moduleNodeName = tokens[AGENT_FACTORY_DEPTH + 2]; + return moduleNodeName.substring(0, moduleNodeName.lastIndexOf('_')); } /** Extracts the execution module version of a flow */ public static String flowExecutionModuleVersion(String fullFlowPath) { String[] tokens = fullFlowPath.split("/"); - return tokens[EXECUTION_MODULES_DEPTH + 2]; + String moduleNodeName = tokens[AGENT_FACTORY_DEPTH + 2]; + return moduleNodeName.substring(moduleNodeName.lastIndexOf('_') + 1); } /** Extracts the agent factory of a flow */ @@ -57,11 +66,14 @@ public class SlcJcrUtils { } - // public static void main(String[] args) { - // String path = - // "/slc/agents/vm/54654654654/executionModules/org.argeo/1.2.3/myFlow"; - // System.out.println(flowRelativePath(path)); - // System.out.println(flowExecutionModuleName(path)); - // System.out.println(flowAgentFactoryPath(path)); - // } + public static void main(String[] args) { + String path = "/slc/agents/vm/default/org.argeo_1.2.3/myPath/myFlow"; + System.out.println("Flow relative path: " + flowRelativePath(path)); + System.out.println("Execution Module Name: " + + flowExecutionModuleName(path)); + System.out.println("Execution Module Version: " + + flowExecutionModuleVersion(path)); + System.out.println("Agent Factory path: " + flowAgentFactoryPath(path)); + } + }