/******************************************************************************* * Copyright (c) 2004, 2007 Composent, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Composent, Inc. - initial API and implementation ******************************************************************************/ package org.eclipse.ecf.provider.generic.gmm; import java.util.*; import org.eclipse.ecf.core.identity.ID; public class GMMImpl extends Observable { TreeSet mySet; public GMMImpl() { mySet = new TreeSet(); } public boolean addMember(Member m) { final boolean res = mySet.add(m); if (res) { setChanged(); notifyObservers(new MemberChanged(m, true)); } return res; } public boolean removeMember(Member m) { final boolean res = mySet.remove(m); if (res) { setChanged(); notifyObservers(new MemberChanged(m, false)); } return res; } public void removeAllMembers() { final Object members[] = getMembers(); for (int i = 0; i < members.length; i++) { removeMember((Member) members[i]); } } public Object[] getMembers() { return mySet.toArray(); } public ID[] getMemberIDs(ID exclude) { TreeSet newSet = null; if (exclude != null) { newSet = (TreeSet) mySet.clone(); newSet.remove(new Member(exclude)); } else { newSet = mySet; } final ID ids[] = new ID[newSet.size()]; final Iterator iter = newSet.iterator(); int j = 0; while (iter.hasNext()) { ids[j++] = ((Member) iter.next()).getID(); } return ids; } public int getSize() { return mySet.size(); } public boolean containsMember(Member m) { return mySet.contains(m); } public Iterator iterator() { return mySet.iterator(); } public String toString() { return mySet.toString(); } }