www.pudn.com > jnp-src.rar > IDList.java
/*
* Java Network Programming, Second Edition
* Merlin Hughes, Michael Shoffner, Derek Hamner
* Manning Publications Company; ISBN 188477749X
*
* http://nitric.com/jnp/
*
* Copyright (c) 1997-1999 Merlin Hughes, Michael Shoffner, Derek Hamner;
* all rights reserved; see license.txt for details.
*/
import java.io.*;
import java.util.*;
public class IDList implements Serializable {
protected Vector ids, elements;
public IDList () {
ids = new Vector ();
elements = new Vector ();
}
protected int id;
public synchronized ID allocateID () {
return new ID (id ++);
}
protected int updateCount;
public int getUpdateCount () {
return updateCount;
}
public synchronized boolean addElement (ID id, Object element) {
if (ids.contains (id))
return false;
ids.addElement (id);
elements.addElement (element);
++ updateCount;
return true;
}
public synchronized boolean updateElement (ID oldID, ID id, Object element) {
int index = ids.indexOf (oldID);
if (index < 0)
return false;
ids.setElementAt (id, index);
elements.setElementAt (element, index);
++ updateCount;
return true;
}
public synchronized boolean replaceElement (ID oldID, ID id, Object element) {
int index = ids.indexOf (oldID);
if (index < 0)
return false;
ids.removeElementAt (index);
elements.removeElementAt (index);
ids.addElement (id);
elements.addElement (element);
++ updateCount;
return true;
}
public synchronized boolean removeElement (ID id) {
int index = ids.indexOf (id);
if (index < 0)
return false;
ids.removeElementAt (index);
elements.removeElementAt (index);
++ updateCount;
return true;
}
public synchronized ID getID (Object element) {
int index = elements.indexOf (element);
if (index < 0)
return null;
else
return (ID) ids.elementAt (index);
}
public Enumeration getElements () {
return ((Vector) elements.clone ()).elements ();
}
public synchronized Object clone () {
try {
IDList idList = (IDList) super.clone ();
idList.ids = (Vector) ids.clone ();
idList.elements = (Vector) elements.clone ();
return idList;
} catch (CloneNotSupportedException ignored) {
return null;
}
}
}