summaryrefslogtreecommitdiff
path: root/src/main/java/com/c2kernel/lifecycle/instance/predefined
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/c2kernel/lifecycle/instance/predefined')
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/AddDomainPath.java12
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/AddStepsFromDescription.java50
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/AssignItemToSlot.java10
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/ClearSlot.java4
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java38
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/Erase.java20
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java13
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStepContainer.java3
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveDomainPath.java36
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveSlotFromCollection.java8
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/ServerPredefinedStepContainer.java25
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Aggregation.java51
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/AggregationMember.java33
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Dependency.java66
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/DependencyMember.java29
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Geometry.java29
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewAgent.java65
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewItem.java197
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewRole.java24
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Outcome.java27
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/server/AddDomainContext.java48
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/server/CreateNewAgent.java (renamed from src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/CreateNewAgent.java)6
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/server/CreateNewItem.java (renamed from src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/CreateNewItem.java)6
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/server/RemoveAgent.java61
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/server/RemoveDomainContext.java41
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/server/SetAgentPassword.java52
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/server/SetAgentRoles.java72
27 files changed, 369 insertions, 657 deletions
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddDomainPath.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddDomainPath.java
index d28fe3c..3da17e9 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddDomainPath.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddDomainPath.java
@@ -13,9 +13,9 @@ package com.c2kernel.lifecycle.instance.predefined;
import com.c2kernel.common.InvalidDataException;
import com.c2kernel.lookup.AgentPath;
import com.c2kernel.lookup.DomainPath;
-import com.c2kernel.lookup.EntityPath;
-import com.c2kernel.lookup.InvalidEntityPathException;
-import com.c2kernel.lookup.LDAPLookup;
+import com.c2kernel.lookup.InvalidItemPathException;
+import com.c2kernel.lookup.ItemPath;
+import com.c2kernel.lookup.Lookup;
import com.c2kernel.process.Gateway;
import com.c2kernel.utils.Logger;
@@ -32,20 +32,20 @@ public class AddDomainPath extends PredefinedStep
int transitionID, String requestData) throws InvalidDataException {
Logger.msg(8,"AddAlias::request()");
- LDAPLookup lookupManager = Gateway.getLDAPLookup();
+ Lookup lookupManager = Gateway.getLookup();
Logger.msg(1,"AddAlias::request() - Starting.");
try
{
- DomainPath domainPath = new DomainPath(getDataList(requestData)[0], new EntityPath(itemSysKey));
+ DomainPath domainPath = new DomainPath(getDataList(requestData)[0], new ItemPath(itemSysKey));
lookupManager.add(domainPath);
Logger.msg(8,"AddDomainPath::request() - systemKey:" + itemSysKey +
". Adding dompath. DONE.");
return requestData;
}
- catch (InvalidEntityPathException ex)
+ catch (InvalidItemPathException ex)
{
Logger.error(ex);
throw new InvalidDataException(ex.toString(), "");
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddStepsFromDescription.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddStepsFromDescription.java
deleted file mode 100644
index 30d014c..0000000
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddStepsFromDescription.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.c2kernel.lifecycle.instance.predefined;
-
-//Java
-import com.c2kernel.common.InvalidDataException;
-import com.c2kernel.graph.model.GraphPoint;
-import com.c2kernel.lifecycle.CompositeActivityDef;
-import com.c2kernel.lifecycle.instance.CompositeActivity;
-import com.c2kernel.lifecycle.instance.Workflow;
-import com.c2kernel.lookup.AgentPath;
-import com.c2kernel.process.Gateway;
-import com.c2kernel.utils.Logger;
-
-public class AddStepsFromDescription extends PredefinedStep
-{
- public AddStepsFromDescription()
- {
- super();
- }
-
- @Override
- protected String runActivityLogic(AgentPath agent, int itemSysKey,
- int transitionID, String requestData) throws InvalidDataException {
-
-
- Logger.msg(1, "AddStepsFromDescription::request() - Starting ");
-
- Workflow lifeCycle = getWf();
-
- try
- {
- Logger.msg(8, "AddStepsFromDescription::request() - data:" + getDataList(requestData)[0]);
- lifeCycle.getChildGraphModel().removeVertex(lifeCycle.search("workflow/domain"));
- CompositeActivityDef actDef = (CompositeActivityDef) Gateway.getMarshaller().unmarshall(getDataList(requestData)[0]);
- CompositeActivity domain = (CompositeActivity)actDef.instantiate();
- lifeCycle.initChild(domain, true, new GraphPoint(150, 100));
- domain.setName("domain");
- domain.setType(actDef.getName());
- lifeCycle.run(agent, itemSysKey);
- Gateway.getStorage().put(itemSysKey, lifeCycle, null);
- Logger.msg(1, "AddStepsFromDescription::request() - DONE.");
- return requestData;
- }
- catch (Exception ex)
- {
- Logger.error("AddStepsFromDescription::request() - during unmarshall.");
- Logger.error(ex);
- throw new InvalidDataException("AddStepsFromDescription::request() - during unmarshall.", "");
- }
- }
-}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AssignItemToSlot.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AssignItemToSlot.java
index 7d36f35..78d4087 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AssignItemToSlot.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AssignItemToSlot.java
@@ -52,7 +52,7 @@ public class AssignItemToSlot extends PredefinedStep
String collName;
int slotNo;
- int entityKey;
+ int sysKey;
Aggregation agg;
Logger.msg(1, "AssignItemToSlot::request() - Starting.");
@@ -63,7 +63,7 @@ public class AssignItemToSlot extends PredefinedStep
String[] params = getDataList(requestData);
collName = params[0];
slotNo = Integer.parseInt(params[1]);
- entityKey = Integer.parseInt(params[2]);
+ sysKey = Integer.parseInt(params[2]);
} catch (Exception e) {
throw new InvalidDataException("Invalid parameters", "");
}
@@ -85,12 +85,12 @@ public class AssignItemToSlot extends PredefinedStep
boolean stored = false;
for (AggregationMember member : agg.getMembers().list) {
if (member.getID() == slotNo) {
- if (member.getEntityKey() > -1)
+ if (member.getSystemKey() > -1)
throw new InvalidDataException("Member slot not empty", "");
try {
- member.assignEntity(entityKey);
+ member.assignItem(sysKey);
} catch (MembershipException e) {
- throw new InvalidDataException("Entity "+entityKey+" does not fit in this slot", "");
+ throw new InvalidDataException("Entity "+sysKey+" does not fit in this slot", "");
}
stored = true;
break;
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/ClearSlot.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/ClearSlot.java
index 60e63f1..772f62e 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/ClearSlot.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/ClearSlot.java
@@ -76,9 +76,9 @@ public class ClearSlot extends PredefinedStep
boolean stored = false;
for (AggregationMember member : agg.getMembers().list) {
if (member.getID() == slotNo) {
- if (member.getEntityKey() > -1)
+ if (member.getSystemKey() > -1)
throw new InvalidDataException("Member slot already empty", "");
- member.clearEntity();
+ member.clearItem();
stored = true;
break;
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java
index 3197ce5..e16a92c 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java
@@ -12,9 +12,9 @@
package com.c2kernel.lifecycle.instance.predefined;
import java.util.ArrayList;
-import java.util.Iterator;
import com.c2kernel.collection.Collection;
+import com.c2kernel.collection.CollectionArrayList;
import com.c2kernel.collection.CollectionDescription;
import com.c2kernel.collection.CollectionMember;
import com.c2kernel.common.AccessRightsException;
@@ -26,8 +26,7 @@ import com.c2kernel.entity.TraceableEntity;
import com.c2kernel.lifecycle.CompositeActivityDef;
import com.c2kernel.lookup.AgentPath;
import com.c2kernel.lookup.DomainPath;
-import com.c2kernel.lookup.EntityPath;
-import com.c2kernel.lookup.LDAPLookup;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.persistency.ClusterStorage;
import com.c2kernel.persistency.TransactionManager;
import com.c2kernel.process.Gateway;
@@ -67,7 +66,6 @@ public class CreateItemFromDescription extends PredefinedStep
PropertyArrayList props = new PropertyArrayList();
Logger.msg(1, "AddNewItem::request() - Starting.");
TransactionManager storage = Gateway.getStorage();
- LDAPLookup lookup = Gateway.getLDAPLookup();
try {
// check if the path is already taken
@@ -77,22 +75,21 @@ public class CreateItemFromDescription extends PredefinedStep
throw new ObjectAlreadyExistsException("The item name " +newName+ " exists already.", "");
// get init objects
- String[] collNames = storage.getClusterContents(itemSysKey, ClusterStorage.COLLECTION);
- ArrayList<String> collections = new ArrayList<String>();
-
- // loop through collections to instantiate
+ // loop through collections, collecting instantiated descriptions and finding the default workflow def
+ CollectionArrayList colls = new CollectionArrayList();
+ String[] collNames = storage.getClusterContents(itemSysKey, ClusterStorage.COLLECTION);
for (String collName : collNames) {
Collection<? extends CollectionMember> thisCol = (Collection<? extends CollectionMember>)storage.get(itemSysKey, ClusterStorage.COLLECTION+"/"+collName, null);
if (thisCol instanceof CollectionDescription) {
CollectionDescription<? extends CollectionMember> thisDesc = (CollectionDescription<? extends CollectionMember>)thisCol;
- collections.add(Gateway.getMarshaller().marshall(thisDesc.newInstance()));
+ colls.put(thisDesc.newInstance());
}
else if (thisCol.getName().equalsIgnoreCase("workflow") && wfDefName == null) {
ArrayList<? extends CollectionMember> members = thisCol.getMembers().list;
// get the first member from the wf collection
CollectionMember wfMember = members.get(0);
- wfDefName = wfMember.resolveEntity().getName();
+ wfDefName = wfMember.resolveItem().getName();
Object wfVerObj = wfMember.getProperties().get("Version");
try {
wfDefVer = Integer.parseInt(wfVerObj.toString());
@@ -135,7 +132,7 @@ public class CreateItemFromDescription extends PredefinedStep
// generate new entity key
Logger.msg(6, "CreateItemFromDescription - Requesting new sysKey");
- EntityPath entityPath = lookup.getNextKeyManager().generateNextEntityKey();
+ ItemPath entityPath = Gateway.getNextKeyManager().generateNextEntityKey();
// resolve the item factory
Logger.msg(6, "CreateItemFromDescription - Resolving item factory");
@@ -145,7 +142,7 @@ public class CreateItemFromDescription extends PredefinedStep
CorbaServer factory = Gateway.getCorbaServer();
if (factory == null) throw new AccessRightsException("This process cannot create new Items", "");
TraceableEntity newItem = (TraceableEntity)factory.createEntity(entityPath);
- Gateway.getLDAPLookup().add(entityPath);
+ Gateway.getLookup().add(entityPath);
// initialise it with its properties and workflow
@@ -155,23 +152,14 @@ public class CreateItemFromDescription extends PredefinedStep
newItem.initialise(
agent.getSysKey(),
Gateway.getMarshaller().marshall(props),
- Gateway.getMarshaller().marshall(wfDef.instantiate()));
-
- // add collections
- if (collections.size() > 0) {
- Logger.msg(6, "CreateItemFromDescription - Adding Collections");
- String[] colls = new String[1];
- for (Iterator<String> iter = collections.iterator(); iter.hasNext();) {
- colls[0] = iter.next();
- // TODO: initialize
- newItem.requestAction(agent.getSysKey(), "workflow/predefined/AddC2KObject", PredefinedStep.DONE, PredefinedStep.bundleData(colls));
- }
- }
+ Gateway.getMarshaller().marshall(wfDef.instantiate()),
+ Gateway.getMarshaller().marshall(colls)
+ );
// add its domain path
Logger.msg(3, "CreateItemFromDescription - Creating "+context);
context.setEntity(entityPath);
- Gateway.getLDAPLookup().add(context);
+ Gateway.getLookup().add(context);
return requestData;
} catch (Exception e) {
Logger.error(e);
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/Erase.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/Erase.java
index 305128b..3c4a6a7 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/Erase.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/Erase.java
@@ -13,16 +13,14 @@ package com.c2kernel.lifecycle.instance.predefined;
-import java.util.Enumeration;
+import java.util.Iterator;
import com.c2kernel.common.InvalidDataException;
import com.c2kernel.lookup.AgentPath;
import com.c2kernel.lookup.DomainPath;
-import com.c2kernel.lookup.EntityPath;
+import com.c2kernel.lookup.ItemPath;
import com.c2kernel.lookup.Path;
-import com.c2kernel.persistency.ClusterStorage;
import com.c2kernel.process.Gateway;
-import com.c2kernel.property.Property;
import com.c2kernel.utils.Logger;
@@ -48,24 +46,20 @@ public class Erase extends PredefinedStep
try
{
- // FIXME: This should search for the entity key. Name shouldn't be unique.
- // find entity name
- Property name = (Property)Gateway.getStorage().get(itemSysKey, ClusterStorage.PROPERTY+"/Name", null);
-
// get all domain paths
- Enumeration<Path> domPaths = Gateway.getLDAPLookup().search(new DomainPath(), name.getValue());
- while (domPaths.hasMoreElements()) {
- DomainPath path = (DomainPath)domPaths.nextElement();
+ Iterator<Path> domPaths = Gateway.getLookup().searchAliases(new ItemPath(itemSysKey));
+ while (domPaths.hasNext()) {
+ DomainPath path = (DomainPath)domPaths.next();
// delete them
if (path.getSysKey() == itemSysKey)
- Gateway.getLDAPLookup().delete(path);
+ Gateway.getLookup().delete(path);
}
//clear out all storages
Gateway.getStorage().removeCluster(itemSysKey, "", null);
//remove entity path
- Gateway.getLDAPLookup().delete(new EntityPath(itemSysKey));
+ Gateway.getLookup().delete(new ItemPath(itemSysKey));
}
catch( Exception ex )
{
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java
index 3cf73ba..d0fde2a 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java
@@ -26,6 +26,15 @@ public abstract class PredefinedStep extends Activity
******************************************************************************************************************************************************************************************************************************************************************************************************/
private boolean isPredefined = false;
+ public static final int DONE = 0;
+ public static final int AVAILABLE = 0;
+
+ public PredefinedStep() {
+ super();
+ getProperties().put("SchemaType", "PredefinedStepOutcome");
+ getProperties().put("SchemaVersion", "0");
+ }
+
@Override
public boolean getActive()
{
@@ -35,8 +44,8 @@ public abstract class PredefinedStep extends Activity
return super.getActive();
}
- public static final int DONE = 0;
- public static final int AVAILABLE = 0;
+
+
@Override
protected String getDefaultSMName() {
return "PredefinedStep";
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStepContainer.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStepContainer.java
index 8127113..43cc8ca 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStepContainer.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStepContainer.java
@@ -17,7 +17,6 @@ public class PredefinedStepContainer extends CompositeActivity
predInit("CreateItemFromDescription", "Create a new item using this item as its description", new CreateItemFromDescription());
predInit("AddDomainPath", "Adds a new path to this entity in the LDAP domain tree", new AddDomainPath());
predInit("RemoveDomainPath", "Removes an existing path to this Entity from the LDAP domain tree", new RemoveDomainPath());
- predInit("AddStepsFromDescription", "Creates the domain-specific LifeCycle from a description", new AddStepsFromDescription());
predInit("ReplaceDomainWorkflow", "Replaces the domain CA with the supplied one. Used by the GUI to save new Wf layout", new ReplaceDomainWorkflow());
predInit("AddC2KObject", "Adds or overwrites a C2Kernel object for this Item", new AddC2KObject());
predInit("RemoveC2KObject", "Removes the named C2Kernel object from this Item.", new RemoveC2KObject());
@@ -38,8 +37,6 @@ public class PredefinedStepContainer extends CompositeActivity
act.setName(alias);
act.setType(alias);
act.getProperties().put("Description", Description);
- act.getProperties().put("SchemaType", "PredefinedStepOutcome");
- act.getProperties().put("SchemaVersion", "0");
act.setCentrePoint(new GraphPoint());
act.setIsPredefined(true);
addChild(act, new GraphPoint(100, 75 * ++num));
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveDomainPath.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveDomainPath.java
index 642cf64..1ee5e8c 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveDomainPath.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveDomainPath.java
@@ -11,9 +11,11 @@ package com.c2kernel.lifecycle.instance.predefined;
import com.c2kernel.common.InvalidDataException;
+import com.c2kernel.common.ObjectCannotBeUpdated;
+import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.lookup.AgentPath;
import com.c2kernel.lookup.DomainPath;
-import com.c2kernel.lookup.LDAPLookup;
+import com.c2kernel.lookup.Lookup;
import com.c2kernel.process.Gateway;
import com.c2kernel.utils.Logger;
@@ -30,23 +32,29 @@ public class RemoveDomainPath extends PredefinedStep
int transitionID, String requestData) throws InvalidDataException {
Logger.msg(8,"RemoveDomainPath::request()");
- LDAPLookup lookupManager = Gateway.getLDAPLookup();
+ Lookup lookupManager = Gateway.getLookup();
Logger.msg(1,"RemoveDomainPath::request() - Starting.");
- try
- {
- DomainPath domainPath = new DomainPath(getDataList(requestData)[0]);
- lookupManager.delete(domainPath);
- Logger.msg(8,"AddAlias::request() - context:" + domainPath.toString() + " DONE.");
- return requestData;
+ DomainPath domainPath = new DomainPath(getDataList(requestData)[0]);
+ if (!domainPath.exists())
+ throw new InvalidDataException("Domain path "+domainPath.toString()+" does not exist.", "");
+
+ if (domainPath.getType()!=DomainPath.ENTITY)
+
+ try {
+ if (domainPath.getEntity().getSysKey() != itemSysKey)
+ throw new InvalidDataException("Domain path "+domainPath.toString()+" is not an alias of the current Item "+itemSysKey, "");
+ } catch (ObjectNotFoundException ex) {
+ throw new InvalidDataException("Domain path "+domainPath.toString()+" is a context.", "");
}
- catch( Exception ex )
- {
- Logger.error("AddAlias::request() - during anyHelper.extract.");
- Logger.error(ex);
- throw new InvalidDataException(ex.toString(), "");
+ try {
+ lookupManager.delete(domainPath);
+ Logger.msg(8,"AddAlias::request() - context:" + domainPath.toString() + " DONE.");
+ return requestData;
+ } catch (ObjectCannotBeUpdated ex) {
+ Logger.error(ex);
+ throw new InvalidDataException("Problem updating directory", "");
}
-
}
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveSlotFromCollection.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveSlotFromCollection.java
index 3cc9f7c..38638cd 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveSlotFromCollection.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/RemoveSlotFromCollection.java
@@ -51,7 +51,7 @@ public class RemoveSlotFromCollection extends PredefinedStep
String collName;
int slotNo;
- int entityKey = -1;
+ int sysKey = -1;
Collection<? extends CollectionMember> coll;
Logger.msg(1, "RemoveSlotFromCollection::request() - Starting.");
@@ -61,12 +61,12 @@ public class RemoveSlotFromCollection extends PredefinedStep
String[] params = getDataList(requestData);
collName = params[0];
slotNo = params[1].length()>0?Integer.parseInt(params[1]):-1;
- if (params.length>2) entityKey = params[2].length()>0?Integer.parseInt(params[2]):-1;
+ if (params.length>2) sysKey = params[2].length()>0?Integer.parseInt(params[2]):-1;
} catch (Exception e) {
throw new InvalidDataException("Invalid parameters", "");
}
- if (slotNo == -1 && entityKey == -1)
+ if (slotNo == -1 && sysKey == -1)
throw new InvalidDataException("Must give either slot number or entity key", "");
// load collection
@@ -81,7 +81,7 @@ public class RemoveSlotFromCollection extends PredefinedStep
if (slotNo == -1) { // find slot from entity key
for (CollectionMember member : coll.getMembers().list) {
- if (member.getEntityKey() == entityKey) {
+ if (member.getSystemKey() == sysKey) {
slotNo = member.getID();
break;
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/ServerPredefinedStepContainer.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/ServerPredefinedStepContainer.java
index d11c05b..32cf7b2 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/ServerPredefinedStepContainer.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/ServerPredefinedStepContainer.java
@@ -1,8 +1,13 @@
package com.c2kernel.lifecycle.instance.predefined;
import com.c2kernel.graph.model.GraphPoint;
-import com.c2kernel.lifecycle.instance.predefined.entitycreation.CreateNewAgent;
-import com.c2kernel.lifecycle.instance.predefined.entitycreation.CreateNewItem;
+import com.c2kernel.lifecycle.instance.predefined.server.AddDomainContext;
+import com.c2kernel.lifecycle.instance.predefined.server.CreateNewAgent;
+import com.c2kernel.lifecycle.instance.predefined.server.CreateNewItem;
+import com.c2kernel.lifecycle.instance.predefined.server.RemoveAgent;
+import com.c2kernel.lifecycle.instance.predefined.server.RemoveDomainContext;
+import com.c2kernel.lifecycle.instance.predefined.server.SetAgentPassword;
+import com.c2kernel.lifecycle.instance.predefined.server.SetAgentRoles;
/**************************************************************************
*
@@ -21,18 +26,22 @@ public class ServerPredefinedStepContainer extends PredefinedStepContainer {
public void createChildren()
{
super.createChildren();
- serverPredInit("CreateNewItem", "Creates a new Item in this Server without description.", new CreateNewItem(), "NewItem");
- serverPredInit("CreateNewAgent", "Creates a new Agent in this Server without description.", new CreateNewAgent(), "NewAgent");
+ serverPredInit("CreateNewItem", "Creates a new Item in this Server without description.", new CreateNewItem());
+ serverPredInit("CreateNewAgent", "Creates a new Agent in this Server without description.", new CreateNewAgent());
+ serverPredInit("RemoveDomainContext", "Deletes an existing context in the domain tree, but only if empty", new RemoveDomainContext());
+ serverPredInit("AddDomainContext", "Creates an empty domain context in the tree", new AddDomainContext());
+ //TODO: remove the following when agents have workflows
+ serverPredInit("RemoveAgent", "Deletes the named Agent in this Server.", new RemoveAgent());
+ serverPredInit("SetAgentPassword", "Changes the named Agent's password in this Server.", new SetAgentPassword());
+ serverPredInit("SetAgentRoles", "Sets the roles of the named Agent.", new SetAgentRoles());
}
- public void serverPredInit(String alias, String Description, PredefinedStep act, String schema)
+ public void serverPredInit(String alias, String Description, PredefinedStep act)
{
act.setName(alias);
act.setType(alias);
act.getProperties().put("Description", Description);
- act.getProperties().put("SchemaType", schema);
- act.getProperties().put("SchemaVersion", "0");
- act.getProperties().put("AgentRole", "Admin");
+ act.getProperties().put("Agent Role", "Admin");
act.setCentrePoint(new GraphPoint());
act.setIsPredefined(true);
addChild(act, new GraphPoint(100, 75 * ++num));
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
deleted file mode 100644
index 40e0604..0000000
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Aggregation.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.c2kernel.lifecycle.instance.predefined.entitycreation;
-
-import java.util.ArrayList;
-
-import com.c2kernel.collection.MembershipException;
-import com.c2kernel.common.ObjectNotFoundException;
-import com.c2kernel.graph.model.GraphPoint;
-import com.c2kernel.lookup.DomainPath;
-import com.c2kernel.property.PropertyDescription;
-import com.c2kernel.property.PropertyDescriptionList;
-import com.c2kernel.property.PropertyUtility;
-
-public class Aggregation implements java.io.Serializable {
-
- public boolean isDescription;
- public ArrayList<AggregationMember> aggregationMemberList = new ArrayList<AggregationMember>();
- public String name;
-
- public Aggregation() {
- super();
- }
-
- public Aggregation(String name, boolean isDescription) {
- this();
- this.name = name;
- this.isDescription = isDescription;
- }
-
- public com.c2kernel.collection.Aggregation create() throws MembershipException, ObjectNotFoundException {
- com.c2kernel.collection.Aggregation newAgg = isDescription?new com.c2kernel.collection.AggregationDescription(name):new com.c2kernel.collection.AggregationInstance(name);
- newAgg.setName(name);
- for (AggregationMember thisMem : aggregationMemberList) {
- StringBuffer classProps = new StringBuffer();
- if (thisMem.itemDescriptionPath != null && thisMem.itemDescriptionPath.length()>0) {
- PropertyDescriptionList propList = PropertyUtility.getPropertyDescriptionOutcome(new DomainPath(thisMem.itemDescriptionPath).getSysKey());
- for (PropertyDescription pd : propList.list) {
- thisMem.props.put(pd.getName(), pd.getDefaultValue());
- if (pd.getIsClassIdentifier())
- classProps.append((classProps.length()>0?",":"")).append(pd.getName());
- }
- }
- if (thisMem.itemPath != null && thisMem.itemPath.length()>0) {
- int syskey = new DomainPath(thisMem.itemPath).getSysKey();
- if (syskey == -1)
- 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);
- }
- }
- 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
deleted file mode 100644
index 82c0437..0000000
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/AggregationMember.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.c2kernel.lifecycle.instance.predefined.entitycreation;
-
-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() {
- super();
- }
-
- public AggregationMember(int slotNo, String itemDescPath, String itemPath, Geometry geometry) {
- this.slotNo = slotNo;
- this.itemDescriptionPath = itemDescPath;
- this.itemPath = itemPath;
- this.geometry = geometry;
- }
-
- public KeyValuePair[] getKeyValuePairs() {
- return props.getKeyValuePairs();
- }
-
- public void setKeyValuePairs(KeyValuePair[] pairs) {
- props.setKeyValuePairs(pairs);
- }
-}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Dependency.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Dependency.java
deleted file mode 100644
index b3be9d1..0000000
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Dependency.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package com.c2kernel.lifecycle.instance.predefined.entitycreation;
-
-import java.util.ArrayList;
-
-import com.c2kernel.collection.MembershipException;
-import com.c2kernel.common.ObjectNotFoundException;
-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;
-import com.c2kernel.utils.KeyValuePair;
-
-public class Dependency implements java.io.Serializable {
-
- public String name;
- public boolean isDescription;
- public String itemDescriptionPath;
- public ArrayList<DependencyMember> dependencyMemberList = new ArrayList<DependencyMember>();
- public CastorHashMap props = new CastorHashMap();
-
- public Dependency() {
- super();
- }
-
- public Dependency(String name) {
- this();
- this.name = name;
- }
-
- public KeyValuePair[] getKeyValuePairs() {
- return props.getKeyValuePairs();
- }
-
- public void setKeyValuePairs(KeyValuePair[] pairs) {
- props.setKeyValuePairs(pairs);
- }
-
- /**
- * @return
- */
- 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());
- StringBuffer classProps = new StringBuffer();
- for (PropertyDescription pd : propList.list) {
- props.put(pd.getName(), pd.getDefaultValue());
- if (pd.getIsClassIdentifier())
- classProps.append((classProps.length()>0?",":"")).append(pd.getName());
- }
- newDep.setProperties(props);
- newDep.setClassProps(classProps.toString());
- }
-
- for (DependencyMember thisMem : dependencyMemberList) {
- int syskey = new DomainPath(thisMem.itemPath).getSysKey();
- if (syskey == -1)
- throw new MembershipException("Cannot find "+thisMem.itemPath+" specified for collection.");
- 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
deleted file mode 100644
index 573cdc8..0000000
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/DependencyMember.java
+++ /dev/null
@@ -1,29 +0,0 @@
-
-package com.c2kernel.lifecycle.instance.predefined.entitycreation;
-
-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();
- }
-
- public DependencyMember(String itemPath) {
- this.itemPath = itemPath;
-
- }
-
- public KeyValuePair[] getKeyValuePairs() {
- return props.getKeyValuePairs();
- }
-
- public void setKeyValuePairs(KeyValuePair[] pairs) {
- props.setKeyValuePairs(pairs);
- }
-}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Geometry.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Geometry.java
deleted file mode 100644
index f18b6d4..0000000
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Geometry.java
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-package com.c2kernel.lifecycle.instance.predefined.entitycreation;
-
-
-
-public class Geometry implements java.io.Serializable {
-
-
- public int x;
-
- public int y;
-
- public int width;
-
- public int height;
-
- public Geometry() {
- super();
- }
-
- public Geometry(int x, int y, int width, int height) {
- this.x = x;
- this.y = y;
- this.width = width;
- this.height = height;
- }
-
-}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewAgent.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewAgent.java
deleted file mode 100644
index 12bbb56..0000000
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewAgent.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.c2kernel.lifecycle.instance.predefined.entitycreation;
-
-import java.security.NoSuchAlgorithmException;
-import java.util.ArrayList;
-
-import com.c2kernel.common.CannotManageException;
-import com.c2kernel.common.ObjectAlreadyExistsException;
-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.RolePath;
-import com.c2kernel.process.Gateway;
-import com.c2kernel.process.module.ModuleImport;
-import com.c2kernel.property.Property;
-import com.c2kernel.property.PropertyArrayList;
-import com.c2kernel.utils.Logger;
-
-public class NewAgent extends ModuleImport implements java.io.Serializable {
-
- public String password;
-
- public ArrayList<String> roles = new ArrayList<String>();
- public ArrayList<Property> properties = new ArrayList<Property>();
-
- public NewAgent() {
- }
-
- public NewAgent(String name, String password) {
- this.name = name;
- this.password = password;
- }
-
- public void create(int agentId) throws ObjectNotFoundException, ObjectCannotBeUpdated, NoSuchAlgorithmException, CannotManageException, ObjectAlreadyExistsException {
- AgentPath newAgent = Gateway.getLDAPLookup().getNextKeyManager().generateNextAgentKey();
- newAgent.setAgentName(name);
- newAgent.setPassword(password);
- ActiveEntity newAgentEnt = (ActiveEntity)Gateway.getCorbaServer().createEntity(newAgent);
- Gateway.getLDAPLookup().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(Gateway.getMarshaller().marshall(new PropertyArrayList(properties)));
- } catch (Exception ex) {
- Logger.error(ex);
- throw new CannotManageException("Error initialising new agent");
- }
- for (String role : roles) {
- RolePath thisRole;
- try {
- thisRole = Gateway.getLDAPLookup().getRoleManager().getRolePath(role);
- } catch (ObjectNotFoundException ex) {
- throw new ObjectNotFoundException("Role "+role+" does not exist.");
- }
- thisRole.addAgent(newAgent);
- }
-
- }
-
- @Override
- public String getPath(String ns) {
- return null;
- }
-}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewItem.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewItem.java
deleted file mode 100644
index d5da008..0000000
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewItem.java
+++ /dev/null
@@ -1,197 +0,0 @@
-package com.c2kernel.lifecycle.instance.predefined.entitycreation;
-
-
-import java.util.ArrayList;
-
-import org.custommonkey.xmlunit.Diff;
-import org.custommonkey.xmlunit.XMLUnit;
-
-import com.c2kernel.collection.MembershipException;
-import com.c2kernel.common.CannotManageException;
-import com.c2kernel.common.InvalidDataException;
-import com.c2kernel.common.ObjectAlreadyExistsException;
-import com.c2kernel.common.ObjectCannotBeUpdated;
-import com.c2kernel.common.ObjectNotFoundException;
-import com.c2kernel.entity.TraceableEntity;
-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.DomainPath;
-import com.c2kernel.lookup.EntityPath;
-import com.c2kernel.persistency.ClusterStorage;
-import com.c2kernel.persistency.ClusterStorageException;
-import com.c2kernel.persistency.outcome.Viewpoint;
-import com.c2kernel.process.Gateway;
-import com.c2kernel.process.module.ModuleImport;
-import com.c2kernel.property.Property;
-import com.c2kernel.property.PropertyArrayList;
-import com.c2kernel.utils.LocalObjectLoader;
-import com.c2kernel.utils.Logger;
-
-/**
- * Complete Structure for new item
- *
- * @version $Revision: 1.8 $ $Date: 2006/03/03 13:52:21 $
- */
-
-public class NewItem extends ModuleImport {
-
- public String initialPath;
- public String workflow;
- public ArrayList<Property> properties = new ArrayList<Property>();
- public ArrayList<Aggregation> aggregationList = new ArrayList<Aggregation>();
- public ArrayList<Dependency> dependencyList = new ArrayList<Dependency>();
- public ArrayList<Outcome> outcomes = new ArrayList<Outcome>();
- private String ns;
-
- public NewItem() {
- }
-
- public NewItem(String name, String initialPath, String wf) {
- this();
- this.name = name;
- this.initialPath = initialPath;
- this.workflow = wf;
- }
-
- public void setNamespace(String ns) {
- this.ns = ns;
- if (initialPath == null) initialPath = "/desc/"+ns;
- }
-
- public String getNamespace() {
- return ns;
- }
-
- public void create(int agentId, boolean reset) throws ObjectCannotBeUpdated, ObjectNotFoundException, CannotManageException, ObjectAlreadyExistsException {
- DomainPath domPath = new DomainPath(new DomainPath(initialPath), name);
-
- EntityPath entPath; TraceableEntity newItem;
- if (domPath.exists()) {
- entPath = domPath.getEntity();
- newItem = Gateway.getCorbaServer().getItem(entPath.getSysKey());
- }
- else {
- // create item
- entPath = Gateway.getLDAPLookup().getNextKeyManager().generateNextEntityKey();
- newItem = (TraceableEntity)Gateway.getCorbaServer().createEntity(entPath);
- Gateway.getLDAPLookup().add(entPath);
- }
-
- // set the name property
- properties.add(new Property("Name", name, true));
-
- // init the new item
- try {
-
- // find workflow def
- CompositeActivityDef compact = (CompositeActivityDef)LocalObjectLoader.getActDef(workflow, 0);
- newItem.initialise(
- agentId,
- Gateway.getMarshaller().marshall(new PropertyArrayList(properties)),
- Gateway.getMarshaller().marshall(compact.instantiate()));
- } catch (Exception ex) {
- Logger.error("Error initialising new item");
- Logger.error(ex);
- throw new CannotManageException("Problem initialising new item. See server log.", "");
- }
-
- // import outcomes
- XMLUnit.setIgnoreWhitespace(true);
- XMLUnit.setIgnoreComments(true);
- History hist = new History(entPath.getSysKey(), null);
- for (Outcome 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);
-
- Diff xmlDiff = new Diff(newOutcome.getDOM(), impView.getOutcome().getDOM());
- if (xmlDiff.identical()) {
- Logger.msg(5, "NewItem.create() - View "+thisOutcome.schema+"/"+thisOutcome.viewname+" in "+name+" identical, no update required");
- return;
- }
- else {
- Logger.msg("NewItem.create() - Difference found in view "+thisOutcome.schema+"/"+thisOutcome.viewname+" in "+name+": "+xmlDiff.toString());
- if (!reset && !impView.getEvent().getStepPath().equals("Import")) {
- Logger.msg("Last edit was not done by import, and reset not requested. Not overwriting.");
- continue;
- }
- }
- } 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);
- } catch (ClusterStorageException e) {
- throw new ObjectCannotBeUpdated("Could not check data for view "+thisOutcome.schema+"/"+thisOutcome.viewname+" in "+name);
- } catch (InvalidDataException e) {
- throw new ObjectCannotBeUpdated("Could not check previous event for view "+thisOutcome.schema+"/"+thisOutcome.viewname+" in "+name);
- }
-
- // 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);
- newOutcome.setID(newEvent.getID());
- impView.setEventId(newEvent.getID());
- try {
- Gateway.getStorage().put(entPath.getSysKey(), newOutcome, null);
- Gateway.getStorage().put(entPath.getSysKey(), impView, null);
- } catch (ClusterStorageException e) {
- throw new ObjectCannotBeUpdated("Could not store data for view "+thisOutcome.schema+"/"+thisOutcome.viewname+" in "+name);
- }
- }
-
- // register domain path (before collections in case of recursive collections)
- if (!domPath.exists()) {
- domPath.setEntity(entPath);
- Gateway.getLDAPLookup().add(domPath);
- }
-
- // create collections
- for (Dependency element: dependencyList) {
- try {
- com.c2kernel.collection.Dependency newDep = element.create();
- if (!reset) {
- try {
- Gateway.getStorage().get(entPath.getSysKey(), ClusterStorage.COLLECTION+"/"+newDep.getName(), null);
- Logger.msg("Not overwriting dependency "+newDep.getName());
- continue; // TODO: a proper compare here
- } catch (ObjectNotFoundException ex) { } // doesn't exist, ok to create
- }
- Gateway.getStorage().put(entPath.getSysKey(), element.create(), null);
- } catch (ClusterStorageException ex) {
- Logger.error(ex);
- throw new CannotManageException("Could not create Dependency "+element.name, "");
- } catch (MembershipException ex) {
- Logger.error(ex);
- throw new CannotManageException("A specified member is not of the correct type in "+element.name, "");
- }
- }
-
- for (Aggregation element : aggregationList) {
- try {
- com.c2kernel.collection.Aggregation newAgg = element.create();
- if (!reset) {
- try {
- Gateway.getStorage().get(entPath.getSysKey(), ClusterStorage.COLLECTION+"/"+newAgg.getName(), null);
- Logger.msg("Not overwriting aggregation "+newAgg.getName());
- continue; // TODO: a proper compare here
- } catch (ObjectNotFoundException ex) { } // doesn't exist, ok to create
- }
- Gateway.getStorage().put(entPath.getSysKey(), newAgg, null);
- } catch (ClusterStorageException ex) {
- Logger.error(ex);
- throw new CannotManageException("Could not create Aggregation "+element.name, "");
- } catch (MembershipException ex) {
- Logger.error(ex);
- throw new CannotManageException("A specified member is not of the correct type in "+element.name, "");
- }
- }
- }
-
- @Override
- public String getPath(String ns) {
- setNamespace(ns);
- return initialPath;
- }
-}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewRole.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewRole.java
deleted file mode 100644
index 1800b0e..0000000
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewRole.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.c2kernel.lifecycle.instance.predefined.entitycreation;
-
-import com.c2kernel.common.ObjectAlreadyExistsException;
-import com.c2kernel.common.ObjectCannotBeUpdated;
-import com.c2kernel.process.Gateway;
-import com.c2kernel.process.module.ModuleImport;
-
-public class NewRole extends ModuleImport {
-
- public boolean jobList;
-
- public NewRole() {
- }
-
- @Override
- public String getPath(String ns) {
- return null; // roles don't have user-specified domain paths
- }
-
- public void create(int agentId) throws ObjectAlreadyExistsException, ObjectCannotBeUpdated {
- Gateway.getLDAPLookup().getRoleManager().createRole(name, jobList);
- }
-
-}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Outcome.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Outcome.java
deleted file mode 100644
index 1a966b5..0000000
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/Outcome.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.c2kernel.lifecycle.instance.predefined.entitycreation;
-
-import com.c2kernel.common.ObjectNotFoundException;
-import com.c2kernel.process.Gateway;
-
-public class Outcome {
- public String schema, viewname, path, data;
- public int version;
-
- public Outcome() {
- }
-
- public Outcome(String schema, int version, String viewname, String path) {
- super();
- this.schema = schema;
- this.version = version;
- this.viewname = viewname;
- this.path = path;
- }
-
- public String getData(String ns) throws ObjectNotFoundException {
- if (data == null)
- data = Gateway.getResource().getTextResource(ns, path);
- return data;
- }
-
-}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/AddDomainContext.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/AddDomainContext.java
new file mode 100644
index 0000000..a931143
--- /dev/null
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/AddDomainContext.java
@@ -0,0 +1,48 @@
+package com.c2kernel.lifecycle.instance.predefined.server;
+
+import java.util.Stack;
+
+import com.c2kernel.common.InvalidDataException;
+import com.c2kernel.common.ObjectAlreadyExistsException;
+import com.c2kernel.common.ObjectCannotBeUpdated;
+import com.c2kernel.lifecycle.instance.predefined.PredefinedStep;
+import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.DomainPath;
+import com.c2kernel.process.Gateway;
+import com.c2kernel.utils.Logger;
+
+public class AddDomainContext extends PredefinedStep {
+
+ public AddDomainContext() {
+ super();
+ }
+
+ @Override
+ protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ int transitionID, String requestData) throws InvalidDataException {
+
+ Logger.msg(1, "AddDomainContext::request() - Starting.");
+
+ DomainPath pathToAdd = new DomainPath(getDataList(requestData)[0]);
+ if (pathToAdd.exists())
+ throw new InvalidDataException("Context "+pathToAdd+" already exists", "");
+ // collect parent paths if they don't exist
+ Stack<DomainPath> pathsToAdd = new Stack<DomainPath>();
+ while(pathToAdd!= null && !pathToAdd.exists()) {
+ pathsToAdd.push(pathToAdd);
+ pathToAdd = pathToAdd.getParent();
+ }
+ while(!pathsToAdd.empty()) {
+ pathToAdd = pathsToAdd.pop();
+ try {
+ Gateway.getLookup().add(pathToAdd);
+ } catch (ObjectAlreadyExistsException e) {
+ Logger.error("Context "+pathToAdd+" inconsistently exists.");
+ } catch (ObjectCannotBeUpdated e) {
+ Logger.error(e);
+ throw new InvalidDataException("Exception adding path "+pathToAdd+": "+e.getMessage(), "");
+ }
+ }
+ return requestData;
+ }
+}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/CreateNewAgent.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/CreateNewAgent.java
index b85cbc3..f2396da 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/CreateNewAgent.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/CreateNewAgent.java
@@ -5,9 +5,10 @@
* All rights reserved.
**************************************************************************/
-package com.c2kernel.lifecycle.instance.predefined.entitycreation;
+package com.c2kernel.lifecycle.instance.predefined.server;
import com.c2kernel.common.InvalidDataException;
+import com.c2kernel.entity.imports.ImportAgent;
import com.c2kernel.lifecycle.instance.predefined.PredefinedStep;
import com.c2kernel.lookup.AgentPath;
import com.c2kernel.process.Gateway;
@@ -18,6 +19,7 @@ public class CreateNewAgent extends PredefinedStep
public CreateNewAgent()
{
super();
+ getProperties().put("SchemaType", "Agent");
}
//requestdata is xmlstring
@@ -27,7 +29,7 @@ public class CreateNewAgent extends PredefinedStep
String redactedRequestData;
try {
- NewAgent newAgent = (NewAgent)Gateway.getMarshaller().unmarshall(requestData);
+ ImportAgent newAgent = (ImportAgent)Gateway.getMarshaller().unmarshall(requestData);
newAgent.create(agent.getSysKey());
newAgent.password = "REDACTED";
redactedRequestData = Gateway.getMarshaller().marshall(newAgent);
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/CreateNewItem.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/CreateNewItem.java
index 2db4fe6..19fd80a 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/CreateNewItem.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/CreateNewItem.java
@@ -5,12 +5,13 @@
* All rights reserved.
**************************************************************************/
-package com.c2kernel.lifecycle.instance.predefined.entitycreation;
+package com.c2kernel.lifecycle.instance.predefined.server;
import com.c2kernel.common.InvalidDataException;
+import com.c2kernel.entity.imports.ImportItem;
import com.c2kernel.lifecycle.instance.predefined.PredefinedStep;
import com.c2kernel.lookup.AgentPath;
import com.c2kernel.process.Gateway;
@@ -21,6 +22,7 @@ public class CreateNewItem extends PredefinedStep
public CreateNewItem()
{
super();
+ getProperties().put("SchemaType", "Item");
}
//requestdata is xmlstring
@@ -29,7 +31,7 @@ public class CreateNewItem extends PredefinedStep
int transitionID, String requestData) throws InvalidDataException {
try {
- NewItem item = (NewItem)Gateway.getMarshaller().unmarshall(requestData);
+ ImportItem item = (ImportItem)Gateway.getMarshaller().unmarshall(requestData);
item.create(agent.getSysKey(), false);
return requestData;
} catch (Exception ex) {
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/RemoveAgent.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/RemoveAgent.java
new file mode 100644
index 0000000..19641fe
--- /dev/null
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/RemoveAgent.java
@@ -0,0 +1,61 @@
+package com.c2kernel.lifecycle.instance.predefined.server;
+
+import com.c2kernel.common.InvalidDataException;
+import com.c2kernel.common.ObjectCannotBeUpdated;
+import com.c2kernel.common.ObjectNotFoundException;
+import com.c2kernel.lifecycle.instance.predefined.PredefinedStep;
+import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.RolePath;
+import com.c2kernel.persistency.ClusterStorageException;
+import com.c2kernel.process.Gateway;
+import com.c2kernel.utils.Logger;
+
+public class RemoveAgent extends PredefinedStep {
+
+ public RemoveAgent() {
+ super();
+ }
+
+ @Override
+ protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ int transitionID, String requestData) throws InvalidDataException {
+
+ Logger.msg(1, "RemoveAgent::request() - Starting.");
+
+ String[] params = getDataList(requestData);
+ AgentPath targetAgent;
+ try {
+ targetAgent = Gateway.getLookup().getAgentPath(params[0]);
+ } catch (ObjectNotFoundException e) {
+ throw new InvalidDataException("Agent "+params[0]+" not found", "");
+ }
+ //remove from roles
+ for (RolePath role: targetAgent.getRoles()) {
+ try {
+ role.removeAgent(targetAgent);
+ } catch (ObjectCannotBeUpdated e) {
+ Logger.error(e);
+ throw new InvalidDataException("Error removing "+params[0]+" from Role "+role.getName(), "");
+ } catch (ObjectNotFoundException e) {
+ Logger.error(e);
+ throw new InvalidDataException("Tried to remove "+params[0]+" from Role "+role.getName()+" that doesn't exist.", "");
+ }
+ }
+ //clear out all storages
+ try {
+ Gateway.getStorage().removeCluster(targetAgent.getSysKey(), "", null);
+ } catch (ClusterStorageException e) {
+ Logger.error(e);
+ throw new InvalidDataException("Error deleting storage for "+params[0], "");
+ }
+ //remove entity path
+ try {
+ Gateway.getLookup().delete(targetAgent);
+ } catch (ObjectCannotBeUpdated e) {
+ throw new InvalidDataException("Error deleting AgentPath for "+params[0], "");
+ }
+ return requestData;
+
+ }
+
+}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/RemoveDomainContext.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/RemoveDomainContext.java
new file mode 100644
index 0000000..a55f7dd
--- /dev/null
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/RemoveDomainContext.java
@@ -0,0 +1,41 @@
+package com.c2kernel.lifecycle.instance.predefined.server;
+
+import com.c2kernel.common.InvalidDataException;
+import com.c2kernel.common.ObjectCannotBeUpdated;
+import com.c2kernel.common.ObjectNotFoundException;
+import com.c2kernel.lifecycle.instance.predefined.PredefinedStep;
+import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.DomainPath;
+import com.c2kernel.process.Gateway;
+import com.c2kernel.utils.Logger;
+
+public class RemoveDomainContext extends PredefinedStep {
+ public RemoveDomainContext() {
+ super();
+ }
+
+ @Override
+ protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ int transitionID, String requestData) throws InvalidDataException {
+
+ Logger.msg(1, "RemoveDomainContext::request() - Starting.");
+
+ DomainPath pathToDelete = new DomainPath(getDataList(requestData)[0]);
+ if (!pathToDelete.exists())
+ throw new InvalidDataException("Context "+pathToDelete+" does not exist", "");
+ try {
+ pathToDelete.getEntity();
+ throw new InvalidDataException("Path "+pathToDelete+" is an Entity. Use its own Erase step instead, or RemoveAgent.", "");
+ } catch (ObjectNotFoundException ex) { }
+ if (Gateway.getLookup().getChildren(pathToDelete).hasNext())
+ throw new InvalidDataException("Context "+pathToDelete+" is not empty. Cannot delete.", "");
+
+ try {
+ Gateway.getLookup().delete(pathToDelete);
+ } catch (ObjectCannotBeUpdated e) {
+ Logger.error(e);
+ throw new InvalidDataException("Exception deleting path"+pathToDelete+": "+e.getMessage(), "");
+ }
+ return requestData;
+ }
+}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/SetAgentPassword.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/SetAgentPassword.java
new file mode 100644
index 0000000..8a2863a
--- /dev/null
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/SetAgentPassword.java
@@ -0,0 +1,52 @@
+package com.c2kernel.lifecycle.instance.predefined.server;
+
+import java.security.NoSuchAlgorithmException;
+
+import com.c2kernel.common.InvalidDataException;
+import com.c2kernel.common.ObjectCannotBeUpdated;
+import com.c2kernel.common.ObjectNotFoundException;
+import com.c2kernel.lifecycle.instance.predefined.PredefinedStep;
+import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.process.Gateway;
+import com.c2kernel.utils.Logger;
+
+public class SetAgentPassword extends PredefinedStep {
+
+ public SetAgentPassword() {
+ super();
+ }
+
+ @Override
+ protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ int transitionID, String requestData) throws InvalidDataException {
+
+ Logger.msg(1, "SetAgentPassword::request() - Starting.");
+
+ String[] params = getDataList(requestData);
+ if (params.length!=2)
+ throw new InvalidDataException("Requires 2 params: agent name and new password", "");
+ AgentPath targetAgent;
+ try {
+ targetAgent = Gateway.getLookup().getAgentPath(params[0]);
+ } catch (ObjectNotFoundException e) {
+ throw new InvalidDataException("Agent "+params[0]+" not found", "");
+ }
+
+ try {
+ Gateway.getLookup().setAgentPassword(targetAgent, params[1]);
+ } catch (ObjectNotFoundException e) {
+ Logger.error(e);
+ throw new InvalidDataException("Agent "+params[0]+" not found.", "");
+ } catch (ObjectCannotBeUpdated e) {
+ Logger.error(e);
+ throw new InvalidDataException("Error updating LDAP entry.", "");
+ } catch (NoSuchAlgorithmException e) {
+ Logger.error(e);
+ throw new InvalidDataException("Cryptographic libraries for password hashing not found.", "");
+ }
+
+ params[1] = "REDACTED"; // censor user's password from outcome
+ return bundleData(params);
+ }
+
+}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/SetAgentRoles.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/SetAgentRoles.java
new file mode 100644
index 0000000..19c6bd8
--- /dev/null
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/server/SetAgentRoles.java
@@ -0,0 +1,72 @@
+package com.c2kernel.lifecycle.instance.predefined.server;
+
+import java.util.ArrayList;
+
+import com.c2kernel.common.InvalidDataException;
+import com.c2kernel.common.ObjectNotFoundException;
+import com.c2kernel.lifecycle.instance.predefined.PredefinedStep;
+import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.RolePath;
+import com.c2kernel.process.Gateway;
+import com.c2kernel.utils.Logger;
+
+public class SetAgentRoles extends PredefinedStep {
+
+ public SetAgentRoles() {
+ super();
+ }
+
+ @Override
+ protected String runActivityLogic(AgentPath agent, int itemSysKey,
+ int transitionID, String requestData) throws InvalidDataException {
+
+ Logger.msg(1, "SetAgentRoles::request() - Starting.");
+
+ String[] params = getDataList(requestData);
+ AgentPath targetAgent;
+ try {
+ targetAgent = Gateway.getLookup().getAgentPath(params[0]);
+ } catch (ObjectNotFoundException e) {
+ throw new InvalidDataException("Agent "+params[0]+" not found", "");
+ }
+
+ RolePath[] currentRoles = targetAgent.getRoles();
+ ArrayList<RolePath> requestedRoles = new ArrayList<RolePath>();
+ if (params.length>1)
+ for (int i=1; i<params.length; i++)
+ try {
+ requestedRoles.add(Gateway.getLookup().getRolePath(params[i]));
+ } catch (ObjectNotFoundException e) {
+ throw new InvalidDataException("Role "+params[i]+" not found", "");
+ }
+
+ ArrayList<RolePath> rolesToRemove = new ArrayList<RolePath>();
+ for (RolePath existingRole : currentRoles) { //
+ if (requestedRoles.contains(existingRole)) // if we have it, and it's requested, then it will be kept
+ requestedRoles.remove(existingRole); // so remove it from request - this will be left with roles to be added
+ else
+ rolesToRemove.add(existingRole); // else this role will be removed
+ }
+
+ // remove roles not in new list
+ for (RolePath roleToRemove : rolesToRemove)
+ try {
+ roleToRemove.removeAgent(targetAgent);
+ } catch (Exception e) {
+ Logger.error(e);
+ throw new InvalidDataException("Error removing role "+roleToRemove.getName(), "");
+ }
+
+ // add requested roles we don't already have
+ for (RolePath roleToAdd : requestedRoles)
+ try {
+ roleToAdd.addAgent(targetAgent);
+ } catch (Exception e) {
+ Logger.error(e);
+ throw new InvalidDataException("Error adding role "+roleToAdd.getName(), "");
+ }
+
+ return requestData;
+ }
+
+}