diff options
| author | Andrew Branson <andrew.branson@cern.ch> | 2012-07-30 22:09:32 +0200 |
|---|---|---|
| committer | Andrew Branson <andrew.branson@cern.ch> | 2012-07-30 22:09:32 +0200 |
| commit | fea9f5836c4a13e2024c2f678061268ab7421b8d (patch) | |
| tree | 209bcda30896ce3f90adf6cd6ca2ff14301c4e20 /src/main/java/com/c2kernel/lifecycle/instance/predefined/AssignItemToSlot.java | |
| parent | 409741e181838b3712c17d858b3ea594976de623 (diff) | |
Predefined steps audit, including new steps for collection management
Fixes #19
Diffstat (limited to 'src/main/java/com/c2kernel/lifecycle/instance/predefined/AssignItemToSlot.java')
| -rw-r--r-- | src/main/java/com/c2kernel/lifecycle/instance/predefined/AssignItemToSlot.java | 28 |
1 files changed, 17 insertions, 11 deletions
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 0ad5adc..f16d76d 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AssignItemToSlot.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AssignItemToSlot.java @@ -12,12 +12,14 @@ package com.c2kernel.lifecycle.instance.predefined;
-import com.c2kernel.collection.Collection;
-import com.c2kernel.collection.CollectionMember;
+import com.c2kernel.collection.Aggregation;
+import com.c2kernel.collection.AggregationMember;
import com.c2kernel.collection.MembershipException;
import com.c2kernel.common.AccessRightsException;
import com.c2kernel.common.InvalidDataException;
import com.c2kernel.common.InvalidTransitionException;
+import com.c2kernel.common.ObjectNotFoundException;
+import com.c2kernel.entity.C2KLocalObject;
import com.c2kernel.lookup.AgentPath;
import com.c2kernel.lookup.EntityPath;
import com.c2kernel.persistency.ClusterStorage;
@@ -57,7 +59,7 @@ public class AssignItemToSlot extends PredefinedStep String collName;
int slotNo;
int entityKey;
- Collection<? extends CollectionMember> coll;
+ Aggregation agg;
Logger.msg(1, "AssignItemToSlot::request() - Starting.");
@@ -75,17 +77,21 @@ public class AssignItemToSlot extends PredefinedStep }
// load collection
+ C2KLocalObject collObj;
try {
- coll = (Collection<? extends CollectionMember>)Gateway.getStorage().get(entityPath.getSysKey(), ClusterStorage.COLLECTION+"/"+collName, null);
- } catch (Exception e) {
- Logger.error(e);
- throw new InvalidDataException("Error loading collection "+collName, "");
- }
+ collObj = Gateway.getStorage().get(entityPath.getSysKey(), ClusterStorage.COLLECTION+"/"+collName, null);
+ } catch (ObjectNotFoundException ex) {
+ throw new InvalidDataException("Collection '"+collName+"' not found in this Item", "");
+ } catch (ClusterStorageException ex) {
+ Logger.error(ex);
+ throw new InvalidDataException("Error loading collection '\"+collName+\"': "+ex.getMessage(), "");
+ }
+ if (!(collObj instanceof Aggregation)) throw new InvalidDataException("AssignItemToSlot operates on Aggregation collections only.", "");
+ agg = (Aggregation)collObj;
// find member and assign entity
boolean stored = false;
- for (Object name : coll.getMembers().list) {
- CollectionMember member = (CollectionMember)name;
+ for (AggregationMember member : agg.getMembers().list) {
if (member.getID() == slotNo) {
if (member.getEntityKey() > -1)
throw new InvalidDataException("Member slot not empty", "");
@@ -104,7 +110,7 @@ public class AssignItemToSlot extends PredefinedStep try {
- Gateway.getStorage().put(entityPath.getSysKey(), coll, null);
+ Gateway.getStorage().put(entityPath.getSysKey(), agg, null);
} catch (ClusterStorageException e) {
Logger.error(e);
throw new InvalidDataException("Error storing collection", "");
|
