From 24314dc1699c7e73048fa24e33729f1aa1ec0e86 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Fri, 6 Jul 2012 11:00:24 +0200 Subject: Modules serialize with Castor. Just about to remove the parsing. CastorXMLUtility is now a static member of gateway. Domain specific instances can be used by domain applications, but the maps do not interfere with the kernel. --- .../predefined/entitycreation/Aggregation.java | 25 ++-- .../entitycreation/AggregationMember.java | 29 +++++ .../predefined/entitycreation/CreateNewAgent.java | 11 +- .../predefined/entitycreation/CreateNewItem.java | 4 +- .../predefined/entitycreation/Dependency.java | 39 +++++- .../entitycreation/DependencyMember.java | 23 ++++ .../predefined/entitycreation/NewAgent.java | 42 +++++-- .../predefined/entitycreation/NewItem.java | 133 +++++++++++++-------- .../predefined/entitycreation/Outcome.java | 18 +++ .../predefined/entitycreation/Property.java | 26 ---- 10 files changed, 238 insertions(+), 112 deletions(-) create mode 100644 src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Outcome.java delete mode 100644 src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Property.java (limited to 'src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation') diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Aggregation.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Aggregation.java index b99e898..88d9249 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Aggregation.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Aggregation.java @@ -2,6 +2,9 @@ package com.c2kernel.lifecycle.instance.predefined.entitycreation; import java.util.ArrayList; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; + import com.c2kernel.collection.MembershipException; import com.c2kernel.common.ObjectNotFoundException; import com.c2kernel.graph.model.GraphPoint; @@ -9,17 +12,15 @@ import com.c2kernel.lookup.DomainPath; import com.c2kernel.property.PropertyDescription; import com.c2kernel.property.PropertyDescriptionList; import com.c2kernel.property.PropertyUtility; -import com.c2kernel.utils.CastorHashMap; public class Aggregation implements java.io.Serializable { public boolean isDescription; - public ArrayList aggregationMemberList; + public ArrayList aggregationMemberList = new ArrayList(); public String name; public Aggregation() { super(); - aggregationMemberList = new ArrayList(); } public Aggregation(String name, boolean isDescription) { @@ -28,16 +29,26 @@ public class Aggregation implements java.io.Serializable { this.isDescription = isDescription; } - public com.c2kernel.collection.Aggregation create() throws MembershipException, ObjectNotFoundException { + public Aggregation(Element agg) { + name = agg.getAttribute("name"); + isDescription = agg.getAttribute("isDescription").equals("true"); + NodeList depmemnl = agg.getElementsByTagName("AggregationMember"); + for (int k=0; k0) { PropertyDescriptionList propList = PropertyUtility.getPropertyDescriptionOutcome(new DomainPath(thisMem.itemDescriptionPath).getSysKey()); for (PropertyDescription pd : propList.list) { - props.put(pd.getName(), pd.getDefaultValue()); + thisMem.props.put(pd.getName(), pd.getDefaultValue()); if (pd.getIsClassIdentifier()) classProps.append((classProps.length()>0?",":"")).append(pd.getName()); } @@ -46,7 +57,7 @@ public class Aggregation implements java.io.Serializable { int syskey = new DomainPath(thisMem.itemPath).getSysKey(); if (syskey == -1) throw new MembershipException("Cannot find "+thisMem.itemPath+" specified for collection."); - newAgg.addMember(syskey, props, classProps.toString(), new GraphPoint(thisMem.geometry.x, thisMem.geometry.y), thisMem.geometry.width, thisMem.geometry.height); + newAgg.addMember(syskey, thisMem.props, classProps.toString(), new GraphPoint(thisMem.geometry.x, thisMem.geometry.y), thisMem.geometry.width, thisMem.geometry.height); } } return newAgg; diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/AggregationMember.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/AggregationMember.java index 29d3cf9..64215da 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/AggregationMember.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/AggregationMember.java @@ -1,11 +1,19 @@ package com.c2kernel.lifecycle.instance.predefined.entitycreation; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; +import org.w3c.dom.Text; + +import com.c2kernel.utils.CastorHashMap; +import com.c2kernel.utils.KeyValuePair; + public class AggregationMember implements java.io.Serializable { public int slotNo; public String itemDescriptionPath; public String itemPath; public Geometry geometry; + public CastorHashMap props = new CastorHashMap(); public AggregationMember() { @@ -18,4 +26,25 @@ public class AggregationMember implements java.io.Serializable { this.itemPath = itemPath; this.geometry = geometry; } + + public AggregationMember(Element memElem) { + Element geom = (Element)memElem.getElementsByTagName("Geometry").item(0); + this.slotNo = Integer.parseInt(memElem.getAttribute("slotNo")); + this.itemDescriptionPath = memElem.getAttribute("itemDescriptionPath"); + this.itemPath = memElem.getAttribute("itemPath"); + this.geometry = new Geometry(Integer.parseInt(geom.getAttribute("x")), Integer.parseInt(geom.getAttribute("y")), + Integer.parseInt(geom.getAttribute("width")), Integer.parseInt(geom.getAttribute("height"))); + NodeList cmpnl = memElem.getElementsByTagName("MemberProperty"); + for (int l=0; l dependencyMemberList; + public ArrayList dependencyMemberList = new ArrayList(); + public CastorHashMap props = new CastorHashMap(); + Element elem; public Dependency() { super(); - dependencyMemberList = new ArrayList(); } public Dependency(String itemDesc) { @@ -27,14 +33,36 @@ public class Dependency implements java.io.Serializable { this.itemDescriptionPath = itemDesc; } - /** + public Dependency(Element dep) { + elem = dep; + name = dep.getAttribute("name"); + isDescription = dep.getAttribute("isDescription").equals("true"); + NodeList cpnl = dep.getElementsByTagName("CollectionProperty"); + for (int k=0; k0) { PropertyDescriptionList propList = PropertyUtility.getPropertyDescriptionOutcome(new DomainPath(itemDescriptionPath).getSysKey()); - CastorHashMap props = new CastorHashMap(); StringBuffer classProps = new StringBuffer(); for (PropertyDescription pd : propList.list) { props.put(pd.getName(), pd.getDefaultValue()); @@ -49,7 +77,8 @@ public class Dependency implements java.io.Serializable { int syskey = new DomainPath(thisMem.itemPath).getSysKey(); if (syskey == -1) throw new MembershipException("Cannot find "+thisMem.itemPath+" specified for collection."); - newDep.addMember(syskey); + com.c2kernel.collection.DependencyMember newDepMem = newDep.addMember(syskey); + newDepMem.getProperties().putAll(thisMem.props); } return newDep; } diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/DependencyMember.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/DependencyMember.java index b70619f..e20fe8b 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/DependencyMember.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/DependencyMember.java @@ -1,10 +1,18 @@ package com.c2kernel.lifecycle.instance.predefined.entitycreation; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; +import org.w3c.dom.Text; + +import com.c2kernel.utils.CastorHashMap; +import com.c2kernel.utils.KeyValuePair; + public class DependencyMember implements java.io.Serializable { public String itemPath; + public CastorHashMap props = new CastorHashMap(); public DependencyMember() { super(); @@ -15,4 +23,19 @@ public class DependencyMember implements java.io.Serializable { } + public DependencyMember(Element elem) { + itemPath = elem.getAttribute("itemPath"); + NodeList cmpnl = elem.getElementsByTagName("MemberProperty"); + for (int l=0; l roles; + public ArrayList roles = new ArrayList(); + public ArrayList properties = new ArrayList(); public NewAgent() { - super(); - roles = new ArrayList(); + super(null); } public NewAgent(String name, String password) { + super(null); this.name = name; this.password = password; } - protected void create(int agentId) throws ObjectNotFoundException, ObjectCannotBeUpdated, NoSuchAlgorithmException, CannotManageException, ObjectAlreadyExistsException { + public NewAgent(Element imp) { + super(imp); + password = imp.getAttribute("password"); + NodeList rolenl = imp.getElementsByTagName("Role"); + for (int j=0; j propertyList; - - /** - * Field _aggregationList - */ - public ArrayList aggregationList; - - /** - * Field _dependencyList - */ - public ArrayList dependencyList; - + public ArrayList properties = new ArrayList(); + public ArrayList aggregationList = new ArrayList(); + public ArrayList dependencyList = new ArrayList(); + public ArrayList outcomes = new ArrayList(); + public String ns; public NewItem() { - super(); - propertyList = new ArrayList(); - aggregationList = new ArrayList(); - dependencyList = new ArrayList(); + super(null); } public NewItem(String name, String initialPath, String wf) { @@ -70,17 +58,44 @@ public class NewItem { this.workflow = wf; } - public void setProperty(String name, String value) { - for (Property prop : propertyList) { - if (prop.name.equals(name)) { - prop.value = value; - return; - } - } - propertyList.add(new Property(name, value)); - } - - protected void create(int agentId) throws ObjectCannotBeUpdated, ObjectNotFoundException, CannotManageException, ObjectAlreadyExistsException { + public NewItem(String ns, Element elem) { + super(elem); + this.ns = ns; + workflow = elem.getAttribute("workflow"); + if (elem.hasAttribute("initialPath")) + initialPath = elem.getAttribute("initialPath"); + else + initialPath = "/desc/"+ns; + NodeList pnl = elem.getElementsByTagName("Property"); + for (int j=0; j