summaryrefslogtreecommitdiff
path: root/src/main/java/com/c2kernel/entity/imports
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2014-09-09 12:13:21 +0200
committerAndrew Branson <andrew.branson@cern.ch>2014-09-09 12:13:21 +0200
commitda731d2bb81666b9c697d9099da632e7dfcdc0f7 (patch)
tree567693c3c48f3d15ecbb2dac4f9db03bb6e58c72 /src/main/java/com/c2kernel/entity/imports
parentae1e79e33fd30e3d8bcedbef8891a14a048276d7 (diff)
Replaced int sysKey Item identifier with UUID, which is now portable.
ItemPath objects are now used to identify Items throughout the kernel, replacing ints and Integers.
Diffstat (limited to 'src/main/java/com/c2kernel/entity/imports')
-rw-r--r--src/main/java/com/c2kernel/entity/imports/ImportAgent.java57
-rw-r--r--src/main/java/com/c2kernel/entity/imports/ImportAggregation.java21
-rw-r--r--src/main/java/com/c2kernel/entity/imports/ImportDependency.java16
-rw-r--r--src/main/java/com/c2kernel/entity/imports/ImportItem.java143
-rw-r--r--src/main/java/com/c2kernel/entity/imports/ImportRole.java14
5 files changed, 197 insertions, 54 deletions
diff --git a/src/main/java/com/c2kernel/entity/imports/ImportAgent.java b/src/main/java/com/c2kernel/entity/imports/ImportAgent.java
index 2aa6533..ac9911e 100644
--- a/src/main/java/com/c2kernel/entity/imports/ImportAgent.java
+++ b/src/main/java/com/c2kernel/entity/imports/ImportAgent.java
@@ -1,6 +1,5 @@
package com.c2kernel.entity.imports;
-import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import com.c2kernel.common.CannotManageException;
@@ -9,6 +8,7 @@ import com.c2kernel.common.ObjectCannotBeUpdated;
import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.entity.agent.ActiveEntity;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.lookup.RolePath;
import com.c2kernel.process.Gateway;
import com.c2kernel.process.module.ModuleImport;
@@ -18,10 +18,9 @@ import com.c2kernel.utils.Logger;
public class ImportAgent extends ModuleImport implements java.io.Serializable {
- public String password;
-
- public ArrayList<String> roles = new ArrayList<String>();
- public ArrayList<Property> properties = new ArrayList<Property>();
+ private String password;
+ private ArrayList<Property> properties = new ArrayList<Property>();
+ private ArrayList<String> roles = new ArrayList<String>();
public ImportAgent() {
}
@@ -31,17 +30,17 @@ public class ImportAgent extends ModuleImport implements java.io.Serializable {
this.password = password;
}
- public void create(int agentId) throws ObjectNotFoundException, ObjectCannotBeUpdated, NoSuchAlgorithmException, CannotManageException, ObjectAlreadyExistsException {
- AgentPath newAgent = Gateway.getNextKeyManager().generateNextAgentKey();
- newAgent.setAgentName(name);
+ @Override
+ public void create(AgentPath agentPath, boolean reset) throws ObjectNotFoundException, ObjectCannotBeUpdated, CannotManageException, ObjectAlreadyExistsException {
+ AgentPath newAgent = new AgentPath(getItemPath(), name);
newAgent.setPassword(password);
- ActiveEntity newAgentEnt = (ActiveEntity)Gateway.getCorbaServer().createEntity(newAgent);
+ ActiveEntity newAgentEnt = Gateway.getCorbaServer().createAgent(newAgent);
Gateway.getLookupManager().add(newAgent);
// assemble properties
properties.add(new com.c2kernel.property.Property("Name", name, true));
properties.add(new com.c2kernel.property.Property("Type", "Agent", false));
try {
- newAgentEnt.initialise(agentId, Gateway.getMarshaller().marshall(new PropertyArrayList(properties)), null, null);
+ newAgentEnt.initialise(agentPath.getSystemKey(), Gateway.getMarshaller().marshall(new PropertyArrayList(properties)), null, null);
} catch (Exception ex) {
Logger.error(ex);
throw new CannotManageException("Error initialising new agent");
@@ -57,4 +56,42 @@ public class ImportAgent extends ModuleImport implements java.io.Serializable {
}
}
+
+ @Override
+ public ItemPath getItemPath() {
+ if (itemPath == null) { // try to find agent if it already exists
+ try {
+ AgentPath existAgent = Gateway.getLookup().getAgentPath(name);
+ itemPath = existAgent;
+ } catch (ObjectNotFoundException ex) {
+ itemPath = new AgentPath(name);
+ }
+ }
+ return itemPath;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public ArrayList<String> getRoles() {
+ return roles;
+ }
+
+ public void setRoles(ArrayList<String> roles) {
+ this.roles = roles;
+ }
+
+ public ArrayList<Property> getProperties() {
+ return properties;
+ }
+
+ public void setProperties(ArrayList<Property> properties) {
+ this.properties = properties;
+ }
+
}
diff --git a/src/main/java/com/c2kernel/entity/imports/ImportAggregation.java b/src/main/java/com/c2kernel/entity/imports/ImportAggregation.java
index 1c75990..2f19452 100644
--- a/src/main/java/com/c2kernel/entity/imports/ImportAggregation.java
+++ b/src/main/java/com/c2kernel/entity/imports/ImportAggregation.java
@@ -1,11 +1,13 @@
package com.c2kernel.entity.imports;
import java.util.ArrayList;
+import java.util.UUID;
import com.c2kernel.collection.MembershipException;
import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.graph.model.GraphPoint;
import com.c2kernel.lookup.DomainPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.property.PropertyDescription;
import com.c2kernel.property.PropertyDescriptionList;
import com.c2kernel.property.PropertyUtility;
@@ -32,7 +34,13 @@ public class ImportAggregation implements java.io.Serializable {
for (ImportAggregationMember thisMem : aggregationMemberList) {
StringBuffer classProps = new StringBuffer();
if (thisMem.itemDescriptionPath != null && thisMem.itemDescriptionPath.length()>0) {
- PropertyDescriptionList propList = PropertyUtility.getPropertyDescriptionOutcome(new DomainPath(thisMem.itemDescriptionPath).getSysKey());
+ ItemPath itemPath;
+ try {
+ itemPath = new ItemPath(UUID.fromString(thisMem.itemDescriptionPath));
+ } catch (IllegalArgumentException ex) {
+ itemPath = new DomainPath(thisMem.itemDescriptionPath).getItemPath();
+ }
+ PropertyDescriptionList propList = PropertyUtility.getPropertyDescriptionOutcome(itemPath);
for (PropertyDescription pd : propList.list) {
thisMem.props.put(pd.getName(), pd.getDefaultValue());
if (pd.getIsClassIdentifier())
@@ -40,10 +48,15 @@ public class ImportAggregation implements java.io.Serializable {
}
}
if (thisMem.itemPath != null && thisMem.itemPath.length()>0) {
- int syskey = new DomainPath(thisMem.itemPath).getSysKey();
- if (syskey == -1)
+ ItemPath itemPath;
+ try {
+ itemPath = new ItemPath(UUID.fromString(thisMem.itemPath));
+ } catch (IllegalArgumentException ex) {
+ itemPath = new DomainPath(thisMem.itemPath).getItemPath();
+ }
+ if (itemPath == null)
throw new MembershipException("Cannot find "+thisMem.itemPath+" specified for collection.");
- newAgg.addMember(syskey, thisMem.props, classProps.toString(), new GraphPoint(thisMem.geometry.x, thisMem.geometry.y), thisMem.geometry.width, thisMem.geometry.height);
+ newAgg.addMember(itemPath, 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/entity/imports/ImportDependency.java b/src/main/java/com/c2kernel/entity/imports/ImportDependency.java
index e6ce909..a43f6e3 100644
--- a/src/main/java/com/c2kernel/entity/imports/ImportDependency.java
+++ b/src/main/java/com/c2kernel/entity/imports/ImportDependency.java
@@ -1,10 +1,12 @@
package com.c2kernel.entity.imports;
import java.util.ArrayList;
+import java.util.UUID;
import com.c2kernel.collection.MembershipException;
import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.lookup.DomainPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.property.PropertyDescription;
import com.c2kernel.property.PropertyDescriptionList;
import com.c2kernel.property.PropertyUtility;
@@ -42,7 +44,7 @@ public class ImportDependency implements java.io.Serializable {
public com.c2kernel.collection.Dependency create() throws MembershipException, ObjectNotFoundException {
com.c2kernel.collection.Dependency newDep = isDescription?new com.c2kernel.collection.DependencyDescription(name):new com.c2kernel.collection.Dependency(name);
if (itemDescriptionPath != null && itemDescriptionPath.length()>0) {
- PropertyDescriptionList propList = PropertyUtility.getPropertyDescriptionOutcome(new DomainPath(itemDescriptionPath).getSysKey());
+ PropertyDescriptionList propList = PropertyUtility.getPropertyDescriptionOutcome(new DomainPath(itemDescriptionPath).getItemPath());
StringBuffer classProps = new StringBuffer();
for (PropertyDescription pd : propList.list) {
props.put(pd.getName(), pd.getDefaultValue());
@@ -54,10 +56,16 @@ public class ImportDependency implements java.io.Serializable {
}
for (ImportDependencyMember thisMem : dependencyMemberList) {
- int syskey = new DomainPath(thisMem.itemPath).getSysKey();
- if (syskey == -1)
+ ItemPath itemPath;
+ try {
+ itemPath = new ItemPath(UUID.fromString(thisMem.itemPath));
+ } catch (IllegalArgumentException ex) {
+ itemPath = new DomainPath(thisMem.itemPath).getItemPath();
+ }
+
+ if (itemPath == null)
throw new MembershipException("Cannot find "+thisMem.itemPath+" specified for collection.");
- com.c2kernel.collection.DependencyMember newDepMem = newDep.addMember(syskey);
+ com.c2kernel.collection.DependencyMember newDepMem = newDep.addMember(itemPath);
newDepMem.getProperties().putAll(thisMem.props);
}
return newDep;
diff --git a/src/main/java/com/c2kernel/entity/imports/ImportItem.java b/src/main/java/com/c2kernel/entity/imports/ImportItem.java
index 3847fbf..c1562b2 100644
--- a/src/main/java/com/c2kernel/entity/imports/ImportItem.java
+++ b/src/main/java/com/c2kernel/entity/imports/ImportItem.java
@@ -18,6 +18,7 @@ import com.c2kernel.events.Event;
import com.c2kernel.events.History;
import com.c2kernel.lifecycle.CompositeActivityDef;
import com.c2kernel.lifecycle.instance.stateMachine.Transition;
+import com.c2kernel.lookup.AgentPath;
import com.c2kernel.lookup.DomainPath;
import com.c2kernel.lookup.ItemPath;
import com.c2kernel.persistency.ClusterStorage;
@@ -38,48 +39,64 @@ import com.c2kernel.utils.Logger;
public class ImportItem extends ModuleImport {
- public String initialPath;
- public String workflow;
- public Integer workflowVer;
- public ArrayList<Property> properties = new ArrayList<Property>();
- public ArrayList<ImportAggregation> aggregationList = new ArrayList<ImportAggregation>();
- public ArrayList<ImportDependency> dependencyList = new ArrayList<ImportDependency>();
- public ArrayList<ImportOutcome> outcomes = new ArrayList<ImportOutcome>();
- private String ns;
+ protected String initialPath;
+ protected String workflow;
+ protected Integer workflowVer;
+ protected ArrayList<Property> properties = new ArrayList<Property>();
+ protected ArrayList<ImportAggregation> aggregationList = new ArrayList<ImportAggregation>();
+ protected ArrayList<ImportDependency> dependencyList = new ArrayList<ImportDependency>();
+ protected ArrayList<ImportOutcome> outcomes = new ArrayList<ImportOutcome>();
public ImportItem() {
}
- public ImportItem(String name, String initialPath, String wf, int wfVer) {
+ public ImportItem(String ns, String name, String initialPath, ItemPath itemPath, String wf, int wfVer) {
this();
- this.name = name;
- this.initialPath = initialPath;
- this.workflow = wf;
- this.workflowVer = wfVer;
+ setNamespace(ns);
+ setName(name);
+ setInitialPath(initialPath);
+ setWorkflow(wf);
+ setWorkflowVer(wfVer);
+ }
+
+ @Override
+ public ItemPath getItemPath() {
+ if (itemPath == null) { // try to find item if it already exists
+ DomainPath existingItem = new DomainPath(initialPath+"/"+name);
+ if (existingItem.exists()) {
+ try {
+ itemPath = existingItem.getItemPath();
+ } catch (ObjectNotFoundException ex) { }
+ }
+ }
+ if (itemPath == null) itemPath = new ItemPath();
+ return itemPath;
}
+ @Override
public void setNamespace(String ns) {
- this.ns = ns;
+ super.setNamespace(ns);
if (initialPath == null) initialPath = "/desc/"+ns;
+ itemPath = null;
}
-
- public String getNamespace() {
- return ns;
+
+ @Override
+ public void setName(String name) {
+ super.setName(name);
+ itemPath = null;
}
- public void create(int agentId, boolean reset) throws ObjectCannotBeUpdated, ObjectNotFoundException, CannotManageException, ObjectAlreadyExistsException {
+ @Override
+ public void create(AgentPath agentPath, boolean reset) throws ObjectCannotBeUpdated, ObjectNotFoundException, CannotManageException, ObjectAlreadyExistsException {
DomainPath domPath = new DomainPath(new DomainPath(initialPath), name);
- ItemPath entPath; TraceableEntity newItem;
- if (domPath.exists()) {
- entPath = domPath.getEntity();
- newItem = Gateway.getCorbaServer().getItem(entPath.getSysKey());
+ TraceableEntity newItem;
+ if (getItemPath().exists()) {
+ newItem = Gateway.getCorbaServer().getItem(getItemPath());
}
else {
- // create item
- entPath = Gateway.getNextKeyManager().generateNextEntityKey();
- newItem = (TraceableEntity)Gateway.getCorbaServer().createEntity(entPath);
- Gateway.getLookupManager().add(entPath);
+ newItem = Gateway.getCorbaServer().createItem(getItemPath());
+ Gateway.getLookupManager().add(getItemPath());
}
// set the name property
@@ -124,7 +141,7 @@ public class ImportItem extends ModuleImport {
// (re)initialise the new item with properties, workflow and collections
try {
newItem.initialise(
- agentId,
+ agentPath.getSystemKey(),
Gateway.getMarshaller().marshall(new PropertyArrayList(properties)),
Gateway.getMarshaller().marshall(compact.instantiate()),
Gateway.getMarshaller().marshall(colls));
@@ -137,12 +154,12 @@ public class ImportItem extends ModuleImport {
// import outcomes
XMLUnit.setIgnoreWhitespace(true);
XMLUnit.setIgnoreComments(true);
- History hist = new History(entPath.getSysKey(), null);
+ History hist = new History(getItemPath(), null);
for (ImportOutcome thisOutcome : outcomes) {
com.c2kernel.persistency.outcome.Outcome newOutcome = new com.c2kernel.persistency.outcome.Outcome(-1, thisOutcome.getData(ns), thisOutcome.schema, thisOutcome.version);
Viewpoint impView;
try {
- impView = (Viewpoint)Gateway.getStorage().get(entPath.getSysKey(), ClusterStorage.VIEWPOINT+"/"+thisOutcome.schema+"/"+thisOutcome.viewname, null);
+ impView = (Viewpoint)Gateway.getStorage().get(getItemPath(), ClusterStorage.VIEWPOINT+"/"+thisOutcome.schema+"/"+thisOutcome.viewname, null);
Diff xmlDiff = new Diff(newOutcome.getDOM(), impView.getOutcome().getDOM());
if (xmlDiff.identical()) {
@@ -158,7 +175,7 @@ public class ImportItem extends ModuleImport {
}
} catch (ObjectNotFoundException ex) {
Logger.msg(3, "View "+thisOutcome.schema+"/"+thisOutcome.viewname+" not found in "+name+". Creating.");
- impView = new Viewpoint(entPath.getSysKey(), thisOutcome.schema, thisOutcome.viewname, thisOutcome.version, -1);
+ impView = new Viewpoint(getItemPath(), thisOutcome.schema, thisOutcome.viewname, thisOutcome.version, -1);
} catch (ClusterStorageException e) {
throw new ObjectCannotBeUpdated("Could not check data for view "+thisOutcome.schema+"/"+thisOutcome.viewname+" in "+name);
} catch (InvalidDataException e) {
@@ -167,12 +184,12 @@ public class ImportItem extends ModuleImport {
// write new view/outcome/event
Transition predefDone = new Transition(0, "Done", 0, 0);
- Event newEvent = hist.addEvent("system", "Admin", "Import", "Import", "Import", thisOutcome.schema, thisOutcome.version, "PredefinedStep", 0, predefDone, thisOutcome.viewname);
+ Event newEvent = hist.addEvent(agentPath, "Admin", "Import", "Import", "Import", thisOutcome.schema, thisOutcome.version, "PredefinedStep", 0, predefDone, thisOutcome.viewname);
newOutcome.setID(newEvent.getID());
impView.setEventId(newEvent.getID());
try {
- Gateway.getStorage().put(entPath.getSysKey(), newOutcome, null);
- Gateway.getStorage().put(entPath.getSysKey(), impView, null);
+ Gateway.getStorage().put(getItemPath(), newOutcome, null);
+ Gateway.getStorage().put(getItemPath(), impView, null);
} catch (ClusterStorageException e) {
throw new ObjectCannotBeUpdated("Could not store data for view "+thisOutcome.schema+"/"+thisOutcome.viewname+" in "+name);
}
@@ -180,8 +197,66 @@ public class ImportItem extends ModuleImport {
// register domain path (before collections in case of recursive collections)
if (!domPath.exists()) {
- domPath.setEntity(entPath);
+ domPath.setEntity(getItemPath());
Gateway.getLookupManager().add(domPath);
}
}
+
+ public String getInitialPath() {
+ return initialPath;
+ }
+
+ public void setInitialPath(String initialPath) {
+ this.initialPath = initialPath;
+ itemPath = null;
+ }
+
+ public String getWorkflow() {
+ return workflow;
+ }
+
+ public void setWorkflow(String workflow) {
+ this.workflow = workflow;
+ }
+
+ public Integer getWorkflowVer() {
+ return workflowVer;
+ }
+
+ public void setWorkflowVer(Integer workflowVer) {
+ this.workflowVer = workflowVer;
+ }
+
+ public ArrayList<Property> getProperties() {
+ return properties;
+ }
+
+ public void setProperties(ArrayList<Property> properties) {
+ this.properties = properties;
+ }
+
+ public ArrayList<ImportAggregation> getAggregationList() {
+ return aggregationList;
+ }
+
+ public void setAggregationList(ArrayList<ImportAggregation> aggregationList) {
+ this.aggregationList = aggregationList;
+ }
+
+ public ArrayList<ImportDependency> getDependencyList() {
+ return dependencyList;
+ }
+
+ public void setDependencyList(ArrayList<ImportDependency> dependencyList) {
+ this.dependencyList = dependencyList;
+ }
+
+ public ArrayList<ImportOutcome> getOutcomes() {
+ return outcomes;
+ }
+
+ public void setOutcomes(ArrayList<ImportOutcome> outcomes) {
+ this.outcomes = outcomes;
+ }
+
}
diff --git a/src/main/java/com/c2kernel/entity/imports/ImportRole.java b/src/main/java/com/c2kernel/entity/imports/ImportRole.java
index 5749b06..dc8f351 100644
--- a/src/main/java/com/c2kernel/entity/imports/ImportRole.java
+++ b/src/main/java/com/c2kernel/entity/imports/ImportRole.java
@@ -3,18 +3,28 @@ package com.c2kernel.entity.imports;
import com.c2kernel.common.CannotManageException;
import com.c2kernel.common.ObjectAlreadyExistsException;
import com.c2kernel.common.ObjectCannotBeUpdated;
+import com.c2kernel.lookup.AgentPath;
import com.c2kernel.process.Gateway;
import com.c2kernel.process.module.ModuleImport;
public class ImportRole extends ModuleImport {
- public boolean jobList;
+ private boolean jobList;
public ImportRole() {
}
- public void create(int agentId) throws ObjectAlreadyExistsException, ObjectCannotBeUpdated, CannotManageException {
+ @Override
+ public void create(AgentPath agentPath, boolean reset) throws ObjectAlreadyExistsException, ObjectCannotBeUpdated, CannotManageException {
Gateway.getLookupManager().createRole(name, jobList);
}
+ public boolean hasJobList() {
+ return jobList;
+ }
+
+ public void setJobList(boolean jobList) {
+ this.jobList = jobList;
+ }
+
}