From fea9f5836c4a13e2024c2f678061268ab7421b8d Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Mon, 30 Jul 2012 22:09:32 +0200 Subject: Predefined steps audit, including new steps for collection management Fixes #19 --- .../instance/predefined/AssignItemToSlot.java | 28 +++++++++++++--------- 1 file changed, 17 insertions(+), 11 deletions(-) (limited to 'src/main/java/com/c2kernel/lifecycle/instance/predefined/AssignItemToSlot.java') 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 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)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", ""); -- cgit v1.2.3