package com.c2kernel.collection; import com.c2kernel.common.ObjectNotFoundException; 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() throws ObjectNotFoundException{ 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.getSystemKey()); 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."); } }