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. --- .../java/com/c2kernel/collection/Aggregation.java | 76 +++++++++++----------- .../collection/AggregationDescription.java | 6 +- .../c2kernel/collection/AggregationInstance.java | 17 ++--- .../com/c2kernel/collection/AggregationMember.java | 70 +++++++++++--------- .../java/com/c2kernel/collection/Collection.java | 5 +- .../com/c2kernel/collection/CollectionMember.java | 10 ++- .../java/com/c2kernel/collection/Dependency.java | 13 ++-- .../c2kernel/collection/DependencyDescription.java | 11 ++-- .../com/c2kernel/collection/DependencyMember.java | 52 ++++++++------- .../collection/Parent2ChildCollection.java | 9 +-- .../gui/model/AggregationVertexFactory.java | 2 +- 11 files changed, 144 insertions(+), 127 deletions(-) (limited to 'src/main/java/com/c2kernel/collection') diff --git a/src/main/java/com/c2kernel/collection/Aggregation.java b/src/main/java/com/c2kernel/collection/Aggregation.java index f2ef710..2f01936 100644 --- a/src/main/java/com/c2kernel/collection/Aggregation.java +++ b/src/main/java/com/c2kernel/collection/Aggregation.java @@ -7,7 +7,6 @@ import com.c2kernel.graph.model.GraphModel; import com.c2kernel.graph.model.GraphPoint; import com.c2kernel.graph.model.TypeNameAndConstructionInfo; import com.c2kernel.lookup.ItemPath; -import com.c2kernel.lookup.InvalidItemPathException; import com.c2kernel.persistency.ClusterStorage; import com.c2kernel.process.Gateway; import com.c2kernel.utils.CastorHashMap; @@ -50,12 +49,12 @@ abstract public class Aggregation extends Parent2ChildCollection -1) { // some clients use this method when not setting a member - aggMem.assignItem(sysKey); - aggMem.setIsComposite( getIsComposite(sysKey, getName()) ); + if (itemPath != null) { // some clients use this method when not setting a member + aggMem.assignItem(itemPath); + aggMem.setIsComposite( getIsComposite(itemPath, getName()) ); } - Logger.msg(8, "AggregationDescription::addMember(" + sysKey + ") assigned to new slot " + aggMem.getID()); + Logger.msg(8, "AggregationDescription::addMember(" + itemPath + ") assigned to new slot " + aggMem.getID()); return aggMem; } @Override - public AggregationMember addMember(int entityKey, CastorHashMap props, String classProps) throws MembershipException + public AggregationMember addMember(ItemPath itemPath, CastorHashMap props, String classProps) throws MembershipException { - return addMember(entityKey, props, classProps, null, -1, -1); + return addMember(itemPath, props, classProps, null, -1, -1); } public AggregationMember addSlot(CastorHashMap props, String classProps) @@ -121,7 +121,7 @@ abstract public class Aggregation extends Parent2ChildCollection -1) { + if (itemPath != null) { if (mClassProps == null || getProperties() == null) throw new MembershipException("ClassProps not yet set. Cannot check membership validity."); @@ -89,9 +87,9 @@ public class AggregationMember extends GraphableVertex implements CollectionMemb String aClassProp = sub.nextToken(); try { String memberValue = (String)getProperties().get(aClassProp); - Property ItemProperty = (Property)Gateway.getStorage().get(sysKey, ClusterStorage.PROPERTY+"/"+aClassProp, null); + Property ItemProperty = (Property)Gateway.getStorage().get(itemPath, ClusterStorage.PROPERTY+"/"+aClassProp, null); if (ItemProperty == null) - throw new MembershipException("Property "+aClassProp+ " does not exist for sysKey=" + sysKey ); + throw new MembershipException("Property "+aClassProp+ " does not exist for item " + itemPath ); if (ItemProperty.getValue() == null || !ItemProperty.getValue().equalsIgnoreCase(memberValue)) throw new MembershipException("Value of mandatory prop "+aClassProp+" does not match: " + ItemProperty.getValue()+"!="+memberValue); } @@ -106,46 +104,54 @@ public class AggregationMember extends GraphableVertex implements CollectionMemb } } - mSystemKey = sysKey; + mItemPath = itemPath; mItem = null; - ItemName = null; + mItemName = null; } @Override public void clearItem() { - mSystemKey = -1; + mItemPath = null; mItem = null; + mItemName = null; } @Override public ItemProxy resolveItem() throws ObjectNotFoundException { - if (mItem == null) { - try { - ItemPath path = new ItemPath(mSystemKey); - mItem = Gateway.getProxyManager().getProxy(path); - } catch (InvalidItemPathException ex) { - throw new ObjectNotFoundException("No member defined", ""); - } + if (mItem == null && mItemPath != null) { + mItem = Gateway.getProxyManager().getProxy(mItemPath); } return mItem; } public String getItemName() { - if (ItemName == null) { - if (mSystemKey > -1) { + if (mItemName == null) { + if (mItemPath != null) { try { - ItemName = resolveItem().getName(); + mItemName = resolveItem().getName(); } catch (ObjectNotFoundException ex) { Logger.error(ex); - ItemName = "Error ("+mSystemKey+")"; + mItemName = "Error ("+mItemPath+")"; } } else - ItemName = "Empty"; + mItemName = "Empty"; } - return ItemName; + return mItemName; } + @Override + public void setChildUUID(String uuid) throws MembershipException { + setItemPath(new ItemPath(UUID.fromString(uuid))); + } + + + @Override + public String getChildUUID() { + if (getItemPath() == null) return null; + return getItemPath().getUUID().toString(); + } + } diff --git a/src/main/java/com/c2kernel/collection/Collection.java b/src/main/java/com/c2kernel/collection/Collection.java index b507593..0c28a3b 100644 --- a/src/main/java/com/c2kernel/collection/Collection.java +++ b/src/main/java/com/c2kernel/collection/Collection.java @@ -1,6 +1,7 @@ package com.c2kernel.collection; import com.c2kernel.common.ObjectNotFoundException; import com.c2kernel.entity.C2KLocalObject; +import com.c2kernel.lookup.ItemPath; import com.c2kernel.utils.CastorHashMap; /** @@ -21,9 +22,9 @@ public interface Collection extends C2KLocalObject public CollectionMemberList getMembers(); - public E addMember(int entityKey, CastorHashMap props, String classProps) throws MembershipException; + public E addMember(ItemPath itemPath, CastorHashMap props, String classProps) throws MembershipException; - public E addMember(int entityKey) throws MembershipException; + public E addMember(ItemPath itemPath) throws MembershipException; public void removeMember(int memberId) throws MembershipException; diff --git a/src/main/java/com/c2kernel/collection/CollectionMember.java b/src/main/java/com/c2kernel/collection/CollectionMember.java index ff5d1cd..4fc7e3d 100644 --- a/src/main/java/com/c2kernel/collection/CollectionMember.java +++ b/src/main/java/com/c2kernel/collection/CollectionMember.java @@ -4,6 +4,7 @@ import java.io.Serializable; import com.c2kernel.common.ObjectNotFoundException; import com.c2kernel.entity.proxy.ItemProxy; +import com.c2kernel.lookup.ItemPath; import com.c2kernel.utils.CastorHashMap; /************************************************************************** @@ -20,10 +21,13 @@ import com.c2kernel.utils.CastorHashMap; public interface CollectionMember extends Serializable { - public void setSystemKey(int sysKey) throws MembershipException; - public int getSystemKey(); + public void setItemPath(ItemPath itemPath) throws MembershipException; + public ItemPath getItemPath(); + + public void setChildUUID(String uuid) throws MembershipException; + public String getChildUUID(); - public void assignItem(int ItemKey) throws MembershipException; + public void assignItem(ItemPath itemPath) throws MembershipException; public void clearItem(); public ItemProxy resolveItem() throws ObjectNotFoundException; diff --git a/src/main/java/com/c2kernel/collection/Dependency.java b/src/main/java/com/c2kernel/collection/Dependency.java index 4fb4f70..11ef16e 100644 --- a/src/main/java/com/c2kernel/collection/Dependency.java +++ b/src/main/java/com/c2kernel/collection/Dependency.java @@ -1,6 +1,7 @@ package com.c2kernel.collection; +import com.c2kernel.lookup.ItemPath; import com.c2kernel.utils.CastorHashMap; import com.c2kernel.utils.KeyValuePair; import com.c2kernel.utils.Logger; @@ -57,7 +58,7 @@ public class Dependency extends Parent2ChildCollection } @Override - public DependencyMember addMember(int sysKey) throws MembershipException { + public DependencyMember addMember(ItemPath itemPath) throws MembershipException { // create member object DependencyMember depMember = new DependencyMember(); depMember.setID(getCounter()); @@ -65,14 +66,14 @@ public class Dependency extends Parent2ChildCollection depMember.setClassProps(mClassProps); // assign entity - depMember.assignItem(sysKey); + depMember.assignItem(itemPath); mMembers.list.add(depMember); - Logger.msg(8, "Dependency::addMember(" + sysKey + ") added to children."); + Logger.msg(8, "Dependency::addMember(" + itemPath + ") added to children."); return depMember; } @Override - public DependencyMember addMember(int sysKey, CastorHashMap props, String classProps) + public DependencyMember addMember(ItemPath itemPath, CastorHashMap props, String classProps) throws MembershipException { if (classProps != null && !classProps.equals(mClassProps)) @@ -97,9 +98,9 @@ public class Dependency extends Parent2ChildCollection depMember.setClassProps(mClassProps); // assign entity - depMember.assignItem(sysKey); + depMember.assignItem(itemPath); mMembers.list.add(depMember); - Logger.msg(8, "Dependency::addMember(" + sysKey + ") added to children."); + Logger.msg(8, "Dependency::addMember(" + itemPath + ") added to children."); return depMember; } diff --git a/src/main/java/com/c2kernel/collection/DependencyDescription.java b/src/main/java/com/c2kernel/collection/DependencyDescription.java index 79b4880..3c3b287 100644 --- a/src/main/java/com/c2kernel/collection/DependencyDescription.java +++ b/src/main/java/com/c2kernel/collection/DependencyDescription.java @@ -1,6 +1,7 @@ package com.c2kernel.collection; import com.c2kernel.common.ObjectNotFoundException; +import com.c2kernel.lookup.ItemPath; import com.c2kernel.property.PropertyDescriptionList; import com.c2kernel.property.PropertyUtility; import com.c2kernel.utils.CastorHashMap; @@ -23,7 +24,7 @@ public class DependencyDescription extends Dependency implements CollectionDescr Dependency newDep = new Dependency(depName); if (mMembers.list.size() == 1) { // constrain the members based on the property description DependencyMember mem = mMembers.list.get(0); - PropertyDescriptionList pdList = PropertyUtility.getPropertyDescriptionOutcome(mem.getSystemKey()); + PropertyDescriptionList pdList = PropertyUtility.getPropertyDescriptionOutcome(mem.getItemPath()); if (pdList!=null) { newDep.setProperties(PropertyUtility.createProperty(pdList)); newDep.setClassProps(pdList.getClassProps()); @@ -34,16 +35,16 @@ public class DependencyDescription extends Dependency implements CollectionDescr @Override - public DependencyMember addMember(int entityKey) throws MembershipException { + public DependencyMember addMember(ItemPath itemPath) throws MembershipException { checkMembership(); - return super.addMember(entityKey); + return super.addMember(itemPath); } @Override - public DependencyMember addMember(int entityKey, CastorHashMap props, String classProps) + public DependencyMember addMember(ItemPath itemPath, CastorHashMap props, String classProps) throws MembershipException { checkMembership(); - return super.addMember(entityKey, props, classProps); + return super.addMember(itemPath, props, classProps); } public void checkMembership() throws MembershipException { diff --git a/src/main/java/com/c2kernel/collection/DependencyMember.java b/src/main/java/com/c2kernel/collection/DependencyMember.java index 169f9ea..b5a8b13 100644 --- a/src/main/java/com/c2kernel/collection/DependencyMember.java +++ b/src/main/java/com/c2kernel/collection/DependencyMember.java @@ -1,11 +1,11 @@ package com.c2kernel.collection; import java.util.StringTokenizer; +import java.util.UUID; import com.c2kernel.common.ObjectNotFoundException; import com.c2kernel.entity.proxy.ItemProxy; import com.c2kernel.lookup.ItemPath; -import com.c2kernel.lookup.InvalidItemPathException; import com.c2kernel.persistency.ClusterStorage; import com.c2kernel.process.Gateway; import com.c2kernel.property.Property; @@ -23,9 +23,9 @@ import com.c2kernel.utils.Logger; public class DependencyMember implements CollectionMember { - private int mSystemKey = -1; - private ItemProxy mItem = null; - private int mId = -1; + private ItemPath mItemPath = null; + private ItemProxy mItem = null; + private int mId = -1; private CastorHashMap mProperties = null; private String mClassProps; @@ -35,22 +35,21 @@ public class DependencyMember implements CollectionMember **************************************************************************/ public DependencyMember() { - mSystemKey = -1; mProperties = new CastorHashMap(); } @Override - public void setSystemKey(int sysKey) + public void setItemPath(ItemPath itemPath) { - mSystemKey = sysKey; + mItemPath = itemPath; mItem = null; } @Override - public int getSystemKey() + public ItemPath getItemPath() { - return mSystemKey; + return mItemPath; } @Override @@ -97,9 +96,9 @@ public class DependencyMember implements CollectionMember } @Override - public void assignItem(int ItemKey) throws MembershipException + public void assignItem(ItemPath itemPath) throws MembershipException { - if (ItemKey > -1) { + if (itemPath != null) { if (mClassProps == null || getProperties() == null) throw new MembershipException("ClassProps not yet set. Cannot check membership validity."); @@ -110,9 +109,9 @@ public class DependencyMember implements CollectionMember String aClassProp = sub.nextToken(); try { String memberValue = (String)getProperties().get(aClassProp); - Property ItemProperty = (Property)Gateway.getStorage().get(ItemKey, ClusterStorage.PROPERTY+"/"+aClassProp, null); + Property ItemProperty = (Property)Gateway.getStorage().get(itemPath, ClusterStorage.PROPERTY+"/"+aClassProp, null); if (ItemProperty == null) - throw new MembershipException("Property "+aClassProp+ " does not exist for ItemKey=" + ItemKey ); + throw new MembershipException("Property "+aClassProp+ " does not exist for item " + itemPath ); if (!ItemProperty.getValue().equalsIgnoreCase(memberValue)) throw new MembershipException("DependencyMember::checkProperty() Values of mandatory prop "+aClassProp+" do not match " + ItemProperty.getValue()+"!="+memberValue); } @@ -124,29 +123,34 @@ public class DependencyMember implements CollectionMember } } - mSystemKey = ItemKey; + mItemPath = itemPath; mItem = null; } @Override public void clearItem() { - mSystemKey = -1; + mItemPath = null; mItem = null; } @Override public ItemProxy resolveItem() throws ObjectNotFoundException { - if (mItem == null) { - try { - ItemPath path = new ItemPath(mSystemKey); - mItem = Gateway.getProxyManager().getProxy(path); - } catch (InvalidItemPathException ex) { - throw new ObjectNotFoundException("No member defined", ""); - } - } + if (mItem == null && mItemPath != null) + mItem = Gateway.getProxyManager().getProxy(mItemPath); return mItem; - } + @Override + public void setChildUUID(String uuid) throws MembershipException { + mItemPath = new ItemPath(UUID.fromString(uuid)); + } + + + @Override + public String getChildUUID() { + return mItemPath.getUUID().toString(); + } + + } diff --git a/src/main/java/com/c2kernel/collection/Parent2ChildCollection.java b/src/main/java/com/c2kernel/collection/Parent2ChildCollection.java index 814cca8..26aa451 100644 --- a/src/main/java/com/c2kernel/collection/Parent2ChildCollection.java +++ b/src/main/java/com/c2kernel/collection/Parent2ChildCollection.java @@ -3,6 +3,7 @@ package com.c2kernel.collection; import java.util.Iterator; import com.c2kernel.common.ObjectNotFoundException; +import com.c2kernel.lookup.ItemPath; import com.c2kernel.persistency.ClusterStorage; import com.c2kernel.utils.CastorHashMap; @@ -88,10 +89,10 @@ abstract public class Parent2ChildCollection impleme mMembers = newMembers; } - public boolean contains(int sysKey) { + public boolean contains(ItemPath itemPath) { for (Object name : mMembers.list) { CollectionMember element = (CollectionMember)name; - if (element.getSystemKey() == sysKey) + if (element.getItemPath().equals(itemPath)) return true; } return false; @@ -102,7 +103,7 @@ abstract public class Parent2ChildCollection impleme for (int i=0; i impleme } @Override - public abstract E addMember(int entityKey, CastorHashMap props, String classProps) throws MembershipException; + public abstract E addMember(ItemPath itemPath, CastorHashMap props, String classProps) throws MembershipException; public boolean equals(Parent2ChildCollection other) { boolean same = mName.equals(other.getName()) && mURLInfo.equals(other.getURLInfo()) && size() == other.size(); diff --git a/src/main/java/com/c2kernel/collection/gui/model/AggregationVertexFactory.java b/src/main/java/com/c2kernel/collection/gui/model/AggregationVertexFactory.java index 88dcc3a..1a20c5e 100644 --- a/src/main/java/com/c2kernel/collection/gui/model/AggregationVertexFactory.java +++ b/src/main/java/com/c2kernel/collection/gui/model/AggregationVertexFactory.java @@ -30,7 +30,7 @@ public class AggregationVertexFactory implements VertexFactory ) throws Exception { if (typeNameAndConstructionInfo.mInfo.equals("AggregationMember")) { - mAggregation.addMember(-1, new CastorHashMap(), "",location, 40, 40); + mAggregation.addMember(null, new CastorHashMap(), "",location, 40, 40); } } } -- cgit v1.2.3