package com.c2kernel.collection; import java.util.Iterator; import com.c2kernel.common.ObjectNotFoundException; import com.c2kernel.persistency.ClusterStorage; import com.c2kernel.utils.CastorHashMap; /** * @version $Revision: 1.23 $ $Date: 2004/05/14 15:39:39 $ * @author $Author: abranson $ */ abstract public class Parent2ChildCollection implements Collection { private int mCounter = -1; // Contains next available Member ID protected CollectionMemberList mMembers = new CollectionMemberList(); protected int mID = -1; protected String mName = ""; // Not checked for uniqueness protected String mURLInfo = ""; @Override public int getCounter() { if (mCounter == -1) for (Object name : mMembers.list) { CollectionMember element = (CollectionMember)name; if (mCounter < element.getID()) mCounter = element.getID(); } return ++mCounter; } @Override public void setCounter(int count) { mCounter = count; } @Override public int size() { return mMembers.list.size(); } public void setID(int id) { mID = id; } public int getID() { return mID; } @Override public void setName(String name) { mName = name; } public void setURLInfo(String urlInfo) { mURLInfo = urlInfo; } @Override public String getName() { return mName; } @Override public String getClusterType() { return ClusterStorage.COLLECTION; } public String getURLInfo() { return mURLInfo; } @Override public void setMembers(CollectionMemberList newMembers) { mMembers = newMembers; } public boolean contains(int sysKey) { for (Object name : mMembers.list) { CollectionMember element = (CollectionMember)name; if (element.getSystemKey() == sysKey) return true; } return false; } public boolean isFull() { for (int i=0; i getMembers() { return mMembers; } @Override public abstract E addMember(int entityKey, CastorHashMap props, String classProps) throws MembershipException; public boolean equals(Parent2ChildCollection other) { boolean same = mName.equals(other.getName()) && mURLInfo.equals(other.getURLInfo()) && size() == other.size(); if (!same) return false; for (Iterator i = getMembers().list.iterator(); i.hasNext();) { try { CollectionMember thisMem = i.next(); CollectionMember otherMem = other.getMember(thisMem.getID()); if (!thisMem.equals(otherMem)) return false; } catch (ObjectNotFoundException ex) { return false; } } return true; } }