From 26415fd5910ce2cc61e79def790e5fbb05296320 Mon Sep 17 00:00:00 2001 From: abranson Date: Tue, 13 Mar 2012 16:02:38 +0100 Subject: Added DependencyDescription --- .../c2kernel/collection/DependencyDescription.java | 53 ++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 source/com/c2kernel/collection/DependencyDescription.java 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{ + + public DependencyDescription() + { + setName("DependencyDescription"); + } + + public DependencyDescription(String name) + { + setName(name); + } + + @Override + public Collection 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."); + } + +} -- cgit v1.2.3