From a1f0ecbb6a2bea6aa214322c412af2f3c5ce124b Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Wed, 7 May 2014 17:33:13 +0200 Subject: Agent now extends Item, so they can have workflows. All traces of the old 'Entity' superclasses should be removed, including proxies and paths. Very large change, breaks API compatibility with CRISTAL 2.x. Fixes #135 --- .../predefined/CreateItemFromDescription.java | 32 ++++++++-------------- 1 file changed, 11 insertions(+), 21 deletions(-) (limited to 'src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java') 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..e6da64a 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,7 +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.ItemPath; import com.c2kernel.lookup.LDAPLookup; import com.c2kernel.persistency.ClusterStorage; import com.c2kernel.persistency.TransactionManager; @@ -77,22 +77,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 collections = new ArrayList(); - - // 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 thisCol = (Collection)storage.get(itemSysKey, ClusterStorage.COLLECTION+"/"+collName, null); if (thisCol instanceof CollectionDescription) { CollectionDescription thisDesc = (CollectionDescription)thisCol; - collections.add(Gateway.getMarshaller().marshall(thisDesc.newInstance())); + colls.put(thisDesc.newInstance()); } else if (thisCol.getName().equalsIgnoreCase("workflow") && wfDefName == null) { ArrayList 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 +134,7 @@ public class CreateItemFromDescription extends PredefinedStep // generate new entity key Logger.msg(6, "CreateItemFromDescription - Requesting new sysKey"); - EntityPath entityPath = lookup.getNextKeyManager().generateNextEntityKey(); + ItemPath entityPath = lookup.getNextKeyManager().generateNextEntityKey(); // resolve the item factory Logger.msg(6, "CreateItemFromDescription - Resolving item factory"); @@ -155,18 +154,9 @@ 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 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); -- cgit v1.2.3