summaryrefslogtreecommitdiff
path: root/source/com/c2kernel
diff options
context:
space:
mode:
authorabranson <andrew.branson@cern.ch>2012-03-13 16:02:38 +0100
committerabranson <andrew.branson@cern.ch>2012-03-13 16:02:38 +0100
commit26415fd5910ce2cc61e79def790e5fbb05296320 (patch)
treefe1a2b4d2ad6006344634c0cad4de605207be9b1 /source/com/c2kernel
parent0aa79432687cadde00589a52516999bd1448876c (diff)
Added DependencyDescription
Diffstat (limited to 'source/com/c2kernel')
-rw-r--r--source/com/c2kernel/collection/DependencyDescription.java53
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.");
+ }
+
+}