From da731d2bb81666b9c697d9099da632e7dfcdc0f7 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Tue, 9 Sep 2014 12:13:21 +0200 Subject: 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. --- .../lifecycle/instance/predefined/Import.java | 26 ++++++++++++---------- 1 file changed, 14 insertions(+), 12 deletions(-) (limited to 'src/main/java/com/c2kernel/lifecycle/instance/predefined/Import.java') diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/Import.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/Import.java index 29d4c54..8a80d60 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/Import.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/Import.java @@ -7,10 +7,13 @@ package com.c2kernel.lifecycle.instance.predefined; +import java.util.Arrays; + import com.c2kernel.common.InvalidDataException; import com.c2kernel.events.Event; import com.c2kernel.events.History; import com.c2kernel.lookup.AgentPath; +import com.c2kernel.lookup.ItemPath; import com.c2kernel.persistency.ClusterStorageException; import com.c2kernel.persistency.TransactionManager; import com.c2kernel.persistency.outcome.Outcome; @@ -37,19 +40,18 @@ public class Import extends PredefinedStep //requestdata is xmlstring @Override - protected String runActivityLogic(AgentPath agent, int itemSysKey, + protected String runActivityLogic(AgentPath agent, ItemPath item, int transitionID, String requestData) throws InvalidDataException { - - Logger.msg(8,"Import::request()"); - - Logger.msg(1,"Import::request() - Starting."); String[] params = getDataList(requestData); - - + if (Logger.doLog(3)) Logger.msg(3, "Import: called by "+agent+" on "+item+" with parameters "+Arrays.toString(params)); + int split1 = params[0].indexOf('_'); int split2 = params[0].indexOf(':'); + if (split1 == -1) + throw new InvalidDataException("Import: Invalid parameters "+Arrays.toString(params)); + requestData = params[1]; String schemaName = params[0].substring(0, split1); @@ -73,17 +75,17 @@ public class Import extends PredefinedStep TransactionManager storage = Gateway.getStorage(); Object locker = getWf(); History hist = getWf().getHistory(); - Event event = hist.addEvent(agent.getAgentName(), getCurrentAgentRole(), getName(), getPath(), getType(), schemaName, schemaVersion, getStateMachine().getName(), getStateMachine().getVersion(), getStateMachine().getTransition(transitionID), viewpoint, timestamp); + Event event = hist.addEvent(agent, getCurrentAgentRole(), getName(), getPath(), getType(), schemaName, schemaVersion, getStateMachine().getName(), getStateMachine().getVersion(), getStateMachine().getTransition(transitionID), viewpoint, timestamp); try { - storage.put(itemSysKey, new Outcome(event.getID(), requestData, schemaName, schemaVersion), locker); - storage.put(itemSysKey, new Viewpoint(itemSysKey, schemaName, viewpoint, schemaVersion, event.getID()), locker); + storage.put(item, new Outcome(event.getID(), requestData, schemaName, schemaVersion), locker); + storage.put(item, new Viewpoint(item, schemaName, viewpoint, schemaVersion, event.getID()), locker); if (!"last".equals(viewpoint)) - storage.put(itemSysKey, new Viewpoint(itemSysKey, schemaName, "last", schemaVersion, event.getID()), locker); + storage.put(item, new Viewpoint(item, schemaName, "last", schemaVersion, event.getID()), locker); } catch (ClusterStorageException e) { Logger.error(e); storage.abort(locker); - throw new InvalidDataException("Could not store imported outcome. Rolled back."); + throw new InvalidDataException("Import: Could not store imported outcome. Rolled back.", ""); } storage.commit(locker); return requestData; -- cgit v1.2.3