diff options
| author | abranson <andrew.branson@cern.ch> | 2012-03-13 16:02:38 +0100 |
|---|---|---|
| committer | abranson <andrew.branson@cern.ch> | 2012-03-13 16:02:38 +0100 |
| commit | 26415fd5910ce2cc61e79def790e5fbb05296320 (patch) | |
| tree | fe1a2b4d2ad6006344634c0cad4de605207be9b1 /source/com/c2kernel | |
| parent | 0aa79432687cadde00589a52516999bd1448876c (diff) | |
Added DependencyDescription
Diffstat (limited to 'source/com/c2kernel')
| -rw-r--r-- | source/com/c2kernel/collection/DependencyDescription.java | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/source/com/c2kernel/collection/DependencyDescription.java b/source/com/c2kernel/collection/DependencyDescription.java new file mode 100644 index 0000000..547a286 --- /dev/null +++ b/source/com/c2kernel/collection/DependencyDescription.java @@ -0,0 +1,53 @@ +package com.c2kernel.collection;
+
+import com.c2kernel.property.PropertyDescriptionList;
+import com.c2kernel.property.PropertyUtility;
+import com.c2kernel.utils.CastorHashMap;
+
+public class DependencyDescription extends Dependency implements CollectionDescription<DependencyMember>{
+
+ public DependencyDescription()
+ {
+ setName("DependencyDescription");
+ }
+
+ public DependencyDescription(String name)
+ {
+ setName(name);
+ }
+
+ @Override
+ public Collection<DependencyMember> newInstance() {
+ String depName = getName().replaceFirst("\'$", ""); // HACK: Knock the special 'prime' off the end for the case of descriptions of descriptions
+ 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.getEntityKey());
+ if (pdList!=null) {
+ newDep.setProperties(PropertyUtility.createProperty(pdList));
+ newDep.setClassProps(pdList.getClassProps());
+ }
+ }
+ return newDep;
+ }
+
+
+ @Override
+ public DependencyMember addMember(int entityKey) throws MembershipException {
+ checkMembership();
+ return super.addMember(entityKey);
+ }
+
+ @Override
+ public DependencyMember addMember(int entityKey, CastorHashMap props, String classProps)
+ throws MembershipException {
+ checkMembership();
+ return super.addMember(entityKey, props, classProps);
+ }
+
+ public void checkMembership() throws MembershipException {
+ if (mMembers.list.size() > 0)
+ throw new MembershipException("Dependency descriptions may not have more than one member.");
+ }
+
+}
|
