From d43164830403245353080f5d6f838ed9f56d9a35 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Mon, 18 Nov 2013 09:48:03 +0100 Subject: 3.0-SNAPSHOT (Will be first open source version) New StateMachine desc IssueID #28 --- .../predefined/CreateItemFromDescription.java | 40 ++++++++++------------ 1 file changed, 18 insertions(+), 22 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 ce5ec73..10e54d1 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java @@ -19,13 +19,11 @@ import com.c2kernel.collection.CollectionDescription; import com.c2kernel.collection.CollectionMember; import com.c2kernel.common.AccessRightsException; import com.c2kernel.common.InvalidDataException; -import com.c2kernel.common.InvalidTransitionException; import com.c2kernel.common.ObjectAlreadyExistsException; import com.c2kernel.common.ObjectNotFoundException; import com.c2kernel.entity.CorbaServer; import com.c2kernel.entity.TraceableEntity; import com.c2kernel.lifecycle.CompositeActivityDef; -import com.c2kernel.lifecycle.instance.stateMachine.Transitions; import com.c2kernel.lookup.AgentPath; import com.c2kernel.lookup.DomainPath; import com.c2kernel.lookup.EntityPath; @@ -54,15 +52,15 @@ public class CreateItemFromDescription extends PredefinedStep //requestdata is xmlstring @Override - public void request(AgentPath agent, int transitionID, String requestData) - throws AccessRightsException, InvalidTransitionException, InvalidDataException,ObjectAlreadyExistsException - { - String[] input = getDataList(requestData); + protected String runActivityLogic(AgentPath agent, int itemSysKey, + int transitionID, String requestData) throws InvalidDataException { + + String[] input = getDataList(requestData); String newName = input[0]; String domPath = input[1]; CompositeActivityDef wfDef; String wfDefName = null; - String wfDefVer = null; + int wfDefVer = -1; if (input.length > 2) // override wf wfDefName = input[2]; @@ -70,8 +68,6 @@ public class CreateItemFromDescription extends PredefinedStep Logger.msg(1, "AddNewItem::request() - Starting."); TransactionManager storage = Gateway.getStorage(); LDAPLookup lookup = Gateway.getLDAPLookup(); - EntityPath myPath = getItemEntityPath(); - checkAccessRights(agent); try { // check if the path is already taken @@ -81,13 +77,13 @@ public class CreateItemFromDescription extends PredefinedStep throw new ObjectAlreadyExistsException("The item name " +newName+ " exists already.", ""); // get init objects - String[] collNames = storage.getClusterContents(myPath.getSysKey(), ClusterStorage.COLLECTION); + String[] collNames = storage.getClusterContents(itemSysKey, ClusterStorage.COLLECTION); ArrayList collections = new ArrayList(); // loop through collections to instantiate for (String collName : collNames) { - Collection thisCol = (Collection)storage.get(myPath.getSysKey(), ClusterStorage.COLLECTION+"/"+collName, null); + 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())); @@ -97,14 +93,19 @@ public class CreateItemFromDescription extends PredefinedStep // get the first member from the wf collection CollectionMember wfMember = members.get(0); wfDefName = wfMember.resolveEntity().getName(); - wfDefVer = (String)wfMember.getProperties().get("Version"); + Object wfVerObj = wfMember.getProperties().get("Version"); + try { + wfDefVer = Integer.parseInt(wfVerObj.toString()); + } catch (NumberFormatException ex) { + throw new InvalidDataException("Invalid workflow version number: "+wfVerObj.toString(), ""); + } } } // load workflow def if (wfDefName == null) throw new InvalidDataException("No workflow given or defined", ""); - if (wfDefVer == null) + if (wfDefVer == -1) throw new InvalidDataException("No workflow def version given",""); try { @@ -117,7 +118,7 @@ public class CreateItemFromDescription extends PredefinedStep // copy properties -- intend to create from propdesc - PropertyDescriptionList pdList = PropertyUtility.getPropertyDescriptionOutcome(myPath.getSysKey()); + PropertyDescriptionList pdList = PropertyUtility.getPropertyDescriptionOutcome(itemSysKey); props = pdList.instanciate(); // set Name prop or create if not present boolean foundName = false; @@ -162,7 +163,8 @@ public class CreateItemFromDescription extends PredefinedStep String[] colls = new String[1]; for (Iterator iter = collections.iterator(); iter.hasNext();) { colls[0] = iter.next(); - newItem.requestAction(agent.getSysKey(), "workflow/predefined/AddC2KObject", Transitions.DONE, PredefinedStep.bundleData(colls)); + // TODO: initialize + newItem.requestAction(agent.getSysKey(), "workflow/predefined/AddC2KObject", PredefinedStep.DONE, PredefinedStep.bundleData(colls)); } } @@ -170,17 +172,11 @@ public class CreateItemFromDescription extends PredefinedStep Logger.msg(3, "CreateItemFromDescription - Creating "+context); context.setEntity(entityPath); Gateway.getLDAPLookup().add(context); - } catch (ObjectAlreadyExistsException e) { - Logger.error(e); - throw e; - } catch (AccessRightsException e) { - Logger.error(e); - throw e; + return requestData; } catch (Exception e) { Logger.error(e); throw new InvalidDataException(e.getMessage(), ""); } - sendEventStoreOutcome(transitionID, requestData, agent); } } -- cgit v1.2.3