summaryrefslogtreecommitdiff
path: root/src/main/java/com/c2kernel/process/resource/DefaultResourceImportHandler.java
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2014-04-03 08:44:17 +0200
committerAndrew Branson <andrew.branson@cern.ch>2014-04-03 08:44:17 +0200
commit2f855591dea0eb5ffbcce490dd7a7eb9c2f00a23 (patch)
tree851a855b9c1f2c0853e33c70d83e391ed8f4bc98 /src/main/java/com/c2kernel/process/resource/DefaultResourceImportHandler.java
parentedbcf27952c6608e2d471e1494ee37a7108cffcf (diff)
ResourceImportHandler interface to allow custom <Resource> types or
override the structure of standard ones. Specify with ResourceImportHandler.<resType> c2kprop. DefaultResourceImportHandler is used if not defined, which handled the 5 standard types (CA,EA,OD,SC,SM). Fixes #178 Conflicts: src/main/java/com/c2kernel/process/Bootstrap.java src/main/java/com/c2kernel/process/module/Module.java
Diffstat (limited to 'src/main/java/com/c2kernel/process/resource/DefaultResourceImportHandler.java')
-rw-r--r--src/main/java/com/c2kernel/process/resource/DefaultResourceImportHandler.java88
1 files changed, 88 insertions, 0 deletions
diff --git a/src/main/java/com/c2kernel/process/resource/DefaultResourceImportHandler.java b/src/main/java/com/c2kernel/process/resource/DefaultResourceImportHandler.java
new file mode 100644
index 0000000..3b3abfc
--- /dev/null
+++ b/src/main/java/com/c2kernel/process/resource/DefaultResourceImportHandler.java
@@ -0,0 +1,88 @@
+package com.c2kernel.process.resource;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import com.c2kernel.lookup.DomainPath;
+import com.c2kernel.persistency.outcome.Outcome;
+import com.c2kernel.process.Gateway;
+import com.c2kernel.property.PropertyDescriptionList;
+import com.c2kernel.utils.Resource;
+
+public class DefaultResourceImportHandler implements ResourceImportHandler {
+
+ String resType;
+ String schemaName;
+ String typeRoot;
+ DomainPath typeRootPath;
+ String wfDef;
+ PropertyDescriptionList props;
+
+ public DefaultResourceImportHandler(String resType) throws Exception {
+ this.resType = resType;
+ if (resType.equals("CA")) {
+ wfDef = "ManageCompositeActDef";
+ schemaName = "CompositeActivityDef";
+ typeRoot = "/desc/ActivityDesc";
+ }
+ else if (resType.equals("EA")) {
+ wfDef = "ManageElementaryActDef";
+ schemaName = "ElementaryActivityDef";
+ typeRoot = "/desc/ActivityDesc";
+ }
+ else if (resType.equals("OD")) {
+ wfDef = "ManageSchema";
+ schemaName = "Schema";
+ typeRoot = "/desc/OutcomeDesc";
+ }
+ else if (resType.equals("SC")) {
+ wfDef = "ManageScript";
+ schemaName = "Script";
+ typeRoot = "/desc/Script";
+ }
+ else if (resType.equals("SM")) {
+ wfDef = "ManageStateMachine";
+ schemaName = "StateMachine";
+ typeRoot = "/desc/StateMachine";
+ }
+ else throw new Exception("Unknown bootstrap item type: "+resType);
+ typeRootPath = new DomainPath(typeRoot);
+ props = (PropertyDescriptionList)Gateway.getMarshaller().unmarshall(Resource.getTextResource(null, "boot/property/"+resType+"Prop.xml"));
+ }
+
+ @Override
+ public DomainPath getTypeRoot() {
+ return typeRootPath;
+ }
+
+ @Override
+ public String getName() {
+ return schemaName;
+ }
+
+ @Override
+ public DomainPath getPath(String name, String ns) throws Exception {
+ return new DomainPath(typeRoot+"/system/"+(ns==null?"kernel":ns)+'/'+name);
+ }
+
+ @Override
+ public Set<Outcome> getResourceOutcomes(String name, String ns, String location, int version) throws Exception {
+ HashSet<Outcome> retArr = new HashSet<Outcome>();
+ String data = Resource.getTextResource(ns, location);
+ if (data == null)
+ throw new Exception("No data found for "+schemaName+" "+name);
+ Outcome resOutcome = new Outcome(0, data, schemaName, 0);
+ retArr.add(resOutcome);
+ return retArr;
+ }
+
+ @Override
+ public PropertyDescriptionList getPropDesc() throws Exception {
+ return props;
+ }
+
+ @Override
+ public String getWorkflowName() throws Exception {
+ return wfDef;
+ }
+}