summaryrefslogtreecommitdiff
path: root/src/main/java/com/c2kernel/process/module
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/c2kernel/process/module')
-rw-r--r--src/main/java/com/c2kernel/process/module/Module.java37
-rw-r--r--src/main/java/com/c2kernel/process/module/ModuleAgent.java9
-rw-r--r--src/main/java/com/c2kernel/process/module/ModuleImport.java5
-rw-r--r--src/main/java/com/c2kernel/process/module/ModuleItem.java17
-rw-r--r--src/main/java/com/c2kernel/process/module/ModuleManager.java1
-rw-r--r--src/main/java/com/c2kernel/process/module/ModuleResource.java6
6 files changed, 72 insertions, 3 deletions
diff --git a/src/main/java/com/c2kernel/process/module/Module.java b/src/main/java/com/c2kernel/process/module/Module.java
index 08ea4dc..d015aea 100644
--- a/src/main/java/com/c2kernel/process/module/Module.java
+++ b/src/main/java/com/c2kernel/process/module/Module.java
@@ -18,8 +18,11 @@ import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.entity.proxy.ItemProxy;
import com.c2kernel.events.Event;
import com.c2kernel.events.History;
+import com.c2kernel.lifecycle.instance.predefined.entitycreation.Aggregation;
+import com.c2kernel.lifecycle.instance.predefined.entitycreation.AggregationMember;
import com.c2kernel.lifecycle.instance.predefined.entitycreation.Dependency;
import com.c2kernel.lifecycle.instance.predefined.entitycreation.DependencyMember;
+import com.c2kernel.lifecycle.instance.predefined.entitycreation.Geometry;
import com.c2kernel.lifecycle.instance.predefined.entitycreation.NewAgent;
import com.c2kernel.lifecycle.instance.predefined.entitycreation.NewItem;
import com.c2kernel.lifecycle.instance.predefined.entitycreation.Property;
@@ -134,6 +137,10 @@ public class Module {
else if (type.equals("Item")) {
ModuleItem newItem = new ModuleItem();
newItem.workflow = imp.getAttribute("workflow");
+ if (imp.hasAttribute("initialPath"))
+ newItem.initialPath = imp.getAttribute("initialPath");
+ else
+ newItem.initialPath = "/desc/"+ns;
NodeList pnl = imp.getElementsByTagName("Property");
for (int j=0; j<pnl.getLength(); j++) {
Element p = (Element)pnl.item(j);
@@ -156,6 +163,24 @@ public class Module {
}
newItem.deps.add(newDep);
}
+ NodeList aggnl = imp.getElementsByTagName("Aggregation");
+ for (int j=0; j<aggnl.getLength(); j++) {
+ Element agg = (Element)aggnl.item(j);
+ Aggregation newAgg = new Aggregation();
+ newAgg.name = agg.getAttribute("name");
+ newAgg.isDescription = agg.getAttribute("isDescription").equals("true");
+ NodeList depmemnl = agg.getElementsByTagName("AggregationMember");
+ for (int k=0; k<depmemnl.getLength(); k++) {
+ Element memElem = (Element)depmemnl.item(k);
+ Element geom = (Element)memElem.getElementsByTagName("Geometry").item(0);
+ //HACK: please kill me
+ AggregationMember newAggMem = new AggregationMember(Integer.parseInt(memElem.getAttribute("slotNo")), memElem.getAttribute("itemDescriptionPath"),
+ memElem.getAttribute("itemPath"), new Geometry(Integer.parseInt(geom.getAttribute("x")), Integer.parseInt(geom.getAttribute("y")),
+ Integer.parseInt(geom.getAttribute("width")), Integer.parseInt(geom.getAttribute("height"))));
+ newAgg.aggregationMemberList.add(newAggMem);
+ }
+ newItem.aggs.add(newAgg);
+ }
newImp = newItem;
}
else if (type.equals("Agent")) {
@@ -174,6 +199,8 @@ public class Module {
newImp.importName = imp.getAttribute("name");
imports.add(newImp);
+ Logger.msg(8, "Found import "+imports.size()+"- "+newImp.importName+": "+newImp.getClass().getSimpleName());
+
}
}
@@ -197,6 +224,7 @@ public class Module {
public void importAll(ItemProxy serverEntity) {
for (ModuleImport thisImp : imports) {
+ Logger.msg(5, "Importing "+thisImp.importName+" "+thisImp.getClass().getSimpleName());
if (thisImp instanceof ModuleResource) {
ModuleResource thisRes = (ModuleResource)thisImp;
try {
@@ -208,7 +236,7 @@ public class Module {
else if (thisImp instanceof ModuleItem) {
ModuleItem thisItem = (ModuleItem)thisImp;
try {
- NewItem item = new NewItem(thisItem.importName, "/desc/"+ns, thisItem.workflow);
+ NewItem item = new NewItem(thisItem.importName, thisItem.initialPath, thisItem.workflow);
item.propertyList = thisItem.props;
DomainPath itemPath = new DomainPath(new DomainPath(item.initialPath), item.name);
if (itemPath.exists()) continue;
@@ -233,6 +261,9 @@ public class Module {
for (Dependency thisDep : thisItem.deps) {
Gateway.getStorage().put(newProxy.getSystemKey(), thisDep.create(), newProxy);
}
+ for (Aggregation thisAgg : thisItem.aggs) {
+ Gateway.getStorage().put(newProxy.getSystemKey(), thisAgg.create(), newProxy);
+ }
Gateway.getStorage().commit(newProxy);
} catch (Exception ex) {
Logger.error("Error importing item "+thisItem.importName+" from module "+name);
@@ -244,7 +275,7 @@ public class Module {
try {
Gateway.getLDAPLookup().getRoleManager().getAgentPath(thisAgent.importName);
Logger.msg(3, "Module.importAll() - User '"+thisAgent.importName+"' found.");
- return;
+ continue;
} catch (ObjectNotFoundException ex) { }
Logger.msg("Module.importAll() - User '"+thisAgent.importName+"' not found. Creating.");
@@ -260,7 +291,7 @@ public class Module {
Logger.error("Error importing agent "+thisAgent.importName+" from module "+name);
Logger.error(ex);
}
- }
+ }
}
}
diff --git a/src/main/java/com/c2kernel/process/module/ModuleAgent.java b/src/main/java/com/c2kernel/process/module/ModuleAgent.java
new file mode 100644
index 0000000..d90ac2e
--- /dev/null
+++ b/src/main/java/com/c2kernel/process/module/ModuleAgent.java
@@ -0,0 +1,9 @@
+package com.c2kernel.process.module;
+
+import java.util.ArrayList;
+
+
+public class ModuleAgent extends ModuleImport {
+ String password;
+ ArrayList<String> roles = new ArrayList<String>();
+} \ No newline at end of file
diff --git a/src/main/java/com/c2kernel/process/module/ModuleImport.java b/src/main/java/com/c2kernel/process/module/ModuleImport.java
new file mode 100644
index 0000000..f505a40
--- /dev/null
+++ b/src/main/java/com/c2kernel/process/module/ModuleImport.java
@@ -0,0 +1,5 @@
+package com.c2kernel.process.module;
+
+public abstract class ModuleImport {
+ String importName;
+} \ No newline at end of file
diff --git a/src/main/java/com/c2kernel/process/module/ModuleItem.java b/src/main/java/com/c2kernel/process/module/ModuleItem.java
new file mode 100644
index 0000000..f74788d
--- /dev/null
+++ b/src/main/java/com/c2kernel/process/module/ModuleItem.java
@@ -0,0 +1,17 @@
+package com.c2kernel.process.module;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import com.c2kernel.lifecycle.instance.predefined.entitycreation.Aggregation;
+import com.c2kernel.lifecycle.instance.predefined.entitycreation.Dependency;
+import com.c2kernel.lifecycle.instance.predefined.entitycreation.Property;
+
+public class ModuleItem extends ModuleImport {
+ ArrayList<Property> props = new ArrayList<Property>();
+ HashMap<String, String> outcomes = new HashMap<String, String>();
+ ArrayList<Dependency> deps = new ArrayList<Dependency>();
+ ArrayList<Aggregation> aggs = new ArrayList<Aggregation>();
+ String workflow;
+ String initialPath;
+} \ No newline at end of file
diff --git a/src/main/java/com/c2kernel/process/module/ModuleManager.java b/src/main/java/com/c2kernel/process/module/ModuleManager.java
index b99b325..aa598fa 100644
--- a/src/main/java/com/c2kernel/process/module/ModuleManager.java
+++ b/src/main/java/com/c2kernel/process/module/ModuleManager.java
@@ -46,6 +46,7 @@ public class ModuleManager {
}
Logger.debug(5, "Checking dependencies");
+ //TODO: order the importing so each modules dependencies are imported ahead of it
boolean depFailed = false;
for (Module thisMod : modules) {
ArrayList<String> deps = thisMod.getDependencies();
diff --git a/src/main/java/com/c2kernel/process/module/ModuleResource.java b/src/main/java/com/c2kernel/process/module/ModuleResource.java
new file mode 100644
index 0000000..98d15d4
--- /dev/null
+++ b/src/main/java/com/c2kernel/process/module/ModuleResource.java
@@ -0,0 +1,6 @@
+package com.c2kernel.process.module;
+
+public class ModuleResource extends ModuleImport {
+ String resourceType;
+ String resourceLocation;
+} \ No newline at end of file