package com.c2kernel.collection; import java.util.Iterator; import com.c2kernel.common.ObjectNotFoundException; import com.c2kernel.entity.C2KLocalObject; import com.c2kernel.lookup.ItemPath; 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 Collection implements C2KLocalObject { public static final short EMPTY = -1; 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 = ""; public int getCounter() { if (mCounter == -1) for (Object name : mMembers.list) { CollectionMember element = (CollectionMember)name; if (mCounter < element.getID()) mCounter = element.getID(); } return ++mCounter; } public void setCounter(int count) { mCounter = count; } 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; } public void setMembers(CollectionMemberList newMembers) { mMembers = newMembers; } public boolean contains(ItemPath itemPath) { for (Object name : mMembers.list) { CollectionMember element = (CollectionMember)name; if (element.getItemPath().equals(itemPath)) return true; } return false; } public boolean isFull() { for (int i=0; i getMembers() { return mMembers; } public abstract E addMember(ItemPath itemPath, CastorHashMap props, String classProps) throws MembershipException; public abstract E addMember(ItemPath itemPath) throws MembershipException; public abstract void removeMember(int memberId) throws MembershipException; @Override public boolean equals(Object other) { if (!(other instanceof Collection)) return false; Collection otherColl = (Collection)other; boolean same = mName.equals(otherColl.getName()) && mURLInfo.equals(otherColl.getURLInfo()) && size() == otherColl.size(); if (!same) return false; for (Iterator i = getMembers().list.iterator(); i.hasNext();) { try { CollectionMember thisMem = i.next(); CollectionMember otherMem = otherColl.getMember(thisMem.getID()); if (!thisMem.equals(otherMem)) return false; } catch (ObjectNotFoundException ex) { return false; } } return true; } }