schmitzm.lang
Class LimitedVector<E>

java.lang.Object
  extended by java.util.AbstractCollection<E>
      extended by java.util.AbstractList<E>
          extended by java.util.Vector<E>
              extended by schmitzm.lang.LimitedVector<E>
All Implemented Interfaces:
Serializable, Cloneable, Iterable<E>, Collection<E>, List<E>, RandomAccess, ObjectTraceable

public class LimitedVector<E>
extends Vector<E>
implements ObjectTraceable

Diese Klasse stellt einen Vector dar, der auf eine bestimmte Anzahl an Elementen begrenzt ist. Wird die maximale Anzahl ueberschritten wird automatisch das ERSTE Element der Liste entfernt.
Der LimitedVector eignet sich z.B. gut zum Speichern der letzten 10 geladenen Dateien.

Version:
1.0
Author:
Martin Schmitz (University of Bonn/Germany)
See Also:
Serialized Form

Field Summary
protected  boolean duplAllowed
          Flag, ob der Vector ein Objekt mehrmals enthalten darf.
protected  int maxLoad
          Speichert die Anzahl der Elemente, die die Liste aufnehmen kann.
 
Fields inherited from class java.util.Vector
capacityIncrement, elementCount, elementData
 
Fields inherited from class java.util.AbstractList
modCount
 
Constructor Summary
LimitedVector(int maxLoad)
          Erzeugt eine leere Liste.
 
Method Summary
 boolean add(E o)
          Fuegt ein Element am Ende der Liste ein.
 boolean addAll(Collection<? extends E> c)
          Fuegt alle Elemente einer Collection am Ende der Liste ein.
 boolean addAll(int index, Collection<? extends E> c)
          Fuegt alle Elemente einer Collection in die Liste ein.
 void addElement(E obj)
          Fuegt ein Element in am Ende der Liste ein.
 void addObjectListener(ObjectListener listener)
          Fuegt dem Objekt einen Listener hinzu, der bei Aenderungen informiert wird.
 boolean containsObjectListener(ObjectListener l)
          Checkt, ob der angegebene Listener dem Objekt zugeordnet ist.
 void fireEvent(ObjectEvent e)
          Informiert alle Listener, dass sich das Objekt (this) geaendert hat.
 void fireEvent(ObjectEvent e, Class c)
          Informiert alle Listener eine bestimmten Klasse, dass sich das Objekt (this) geaendert hat.
 boolean getDuplicatedAllowed()
          Prueft, ob die Liste ein Objekt mehrmals enthalten darf.
 int getMaxLoad()
          Liefert die maximale Anzahl an Elementen, die die Liste aufnehmen kann.
 ObjectListener[] getObjectListener(Class type)
          Liefert alle Listener eines bestimmten Typs.
 void insertElementAt(E obj, int index)
          Fuegt ein Element in die Liste ein.
 E remove(int index)
          Verhaelt sich wie Vector.remove(int) und erzeugt ein ObjectChangeEvent, falls sich der Listen-Inhalt aendert.
 boolean removeAll(Collection<?> c)
          Verhaelt sich wie Vector.removeAll(Collection) und erzeugt ein GeneralObjectChangeEvent, falls sich der Listen-Inhalt aendert.
 void removeAllElements()
          Verhaelt sich wie Vector.removeAllElements() und erzeugt ein GeneralObjectChangeEvent, falls sich der Listen-Inhalt aendert.
 void removeElementAt(int index)
          Verhaelt sich wie Vector.removeElementAt(int) und erzeugt ein ObjectChangeEvent, falls sich der Listen-Inhalt aendert.
 void removeObjectListener(ObjectListener listener)
          Entfernt einen Listener von dem Objekt.
protected  void removeRange(int fromIndex, int toIndex)
          Verhaelt sich wie Vector.removeRange(int,int) und erzeugt ein GeneralObjectChangeEvent, falls sich der Listen-Inhalt aendert.
 boolean retainAll(Collection<?> c)
          Verhaelt sich wie Vector.retainAll(Collection) und erzeugt ein GeneralObjectChangeEvent, falls sich der Listen-Inhalt aendert.
 E set(int index, E obj)
          Belegt eine Listenposition neu und erzeugt ein ObjectChangeEvent, falls sich der Listen-Inhalt aendert.
 void setDuplicatedAllowed(boolean duplAllowed)
          Bestimmt, ob die Liste ein Objekt mehrmals enthalten darf.
 void setElementAt(E obj, int index)
          Belegt eine Listenposition neu und erzeugt ein ObjectChangeEvent, falls sich der Listen-Inhalt aendert.
 void setMaxLoad(int maxLoad)
          Setzt die maximale Anzahl an Elementen, die die Liste aufnehmen kann.
 void setSize(int newSize)
          Verhaelt sich wie Vector.setSize(int) und erzeugt ein GeneralObjectChangeEvent.
 void trimToSize()
          Verhaelt sich wie Vector.trimToSize() und erzeugt ein GeneralObjectChangeEvent.
protected  void truncate()
          Loescht solange das letzte Element der Liste, bis die maximale Anzahl an Elementen erreicht ist.
 
Methods inherited from class java.util.Vector
add, capacity, clear, clone, contains, containsAll, copyInto, elementAt, elements, ensureCapacity, equals, firstElement, get, hashCode, indexOf, indexOf, isEmpty, lastElement, lastIndexOf, lastIndexOf, remove, removeElement, size, subList, toArray, toArray, toString
 
Methods inherited from class java.util.AbstractList
iterator, listIterator, listIterator
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.List
iterator, listIterator, listIterator
 

Field Detail

maxLoad

protected int maxLoad
Speichert die Anzahl der Elemente, die die Liste aufnehmen kann.


duplAllowed

protected boolean duplAllowed
Flag, ob der Vector ein Objekt mehrmals enthalten darf.
Standard: true

Constructor Detail

LimitedVector

public LimitedVector(int maxLoad)
Erzeugt eine leere Liste.

Parameters:
maxLoad - maximale Anzahl an Elementen, die die Liste aufnehmen kann
Method Detail

getMaxLoad

public int getMaxLoad()
Liefert die maximale Anzahl an Elementen, die die Liste aufnehmen kann.


setMaxLoad

public void setMaxLoad(int maxLoad)
Setzt die maximale Anzahl an Elementen, die die Liste aufnehmen kann. Ist der neue Wert kleiner als der alte, so werden alle ueberzaehligen Elemente sofort entfernt!

Parameters:
maxLoad - Maximal-Anzahl an Elementen

truncate

protected void truncate()
Loescht solange das letzte Element der Liste, bis die maximale Anzahl an Elementen erreicht ist.


getDuplicatedAllowed

public boolean getDuplicatedAllowed()
Prueft, ob die Liste ein Objekt mehrmals enthalten darf.

See Also:
setDuplicatedAllowed(boolean)

setDuplicatedAllowed

public void setDuplicatedAllowed(boolean duplAllowed)
Bestimmt, ob die Liste ein Objekt mehrmals enthalten darf.
Standard: false
Bemerkung:
Die Aenderung dieser Eigenschaft wirkt sich NICHT auf den aktuellen Inhalt der Liste aus. Bestehende Duplikate in der Liste bleiben erhalten!!

Parameters:
duplAllowed - bei false wird vor dem Einfuegen ein etwaiges Duplikat aus der Liste entfernt

insertElementAt

public void insertElementAt(E obj,
                            int index)
Fuegt ein Element in die Liste ein. Danach werden alle ueberzaehligen Element geloescht. Erzeugt ein ObjectChangeEvent falls sich der Inhalt des Vectors aendert.
Bemerkung:
Diese Methode macht nichts, falls sie bei bereits voll gefuellter Liste mit Index 0 aufgerufen wird, da in diesem Fall das neue Element sofort ueberzaehlig ist.
ACHTUNG:
Bei automatischer Duplikat-Eleminierung kann diese Methode zu Problemen fuehren, da ERST die Duplikate geloescht werden und dann die Einfuege- Operation vorgenommen wird. index ist dann evt. nicht mehr die gewuenschte Einfuege-Position!!

Overrides:
insertElementAt in class Vector<E>
Parameters:
obj - einzufuegendes Objekt
index - Index an dem das Element eingefuegt wird

setElementAt

public void setElementAt(E obj,
                         int index)
Belegt eine Listenposition neu und erzeugt ein ObjectChangeEvent, falls sich der Listen-Inhalt aendert.
ACHTUNG:
Bei automatischer Duplikat-Eleminierung kann diese Methode zu Problemen fuehren, da ERST die Duplikate geloescht werden und dann die Set- Operation vorgenommen wird. index ist dann evt. nicht mehr die gewuenschte Set-Position!!

Overrides:
setElementAt in class Vector<E>
Parameters:
obj - neues Listen-Element
index - Listen-Position

set

public E set(int index,
             E obj)
Belegt eine Listenposition neu und erzeugt ein ObjectChangeEvent, falls sich der Listen-Inhalt aendert.
ACHTUNG:
Bei automatischer Duplikat-Eleminierung kann diese Methode zu Problemen fuehren, da ERST die Duplikate geloescht werden und dann die Set- Operation vorgenommen wird. index ist dann evt. nicht mehr die gewuenschte Set-Position!!

Specified by:
set in interface List<E>
Overrides:
set in class Vector<E>
Parameters:
obj - neues Listen-Element
index - Listen-Position

addElement

public void addElement(E obj)
Fuegt ein Element in am Ende der Liste ein. Danach werden alle ueberzaehligen Element geloescht. Erzeugt ein ObjectChangeEvent falls sich der Inhalt des Vectors aendert.

Overrides:
addElement in class Vector<E>
Parameters:
obj - einzufuegendes Objekt

add

public boolean add(E o)
Fuegt ein Element am Ende der Liste ein. Danach werden alle ueberzaehligen Element geloescht. Erzeugt ein ObjectChangeEvent falls sich der Inhalt des Vectors aendert.

Specified by:
add in interface Collection<E>
Specified by:
add in interface List<E>
Overrides:
add in class Vector<E>
Parameters:
o - einzufuegendes Objekt

addAll

public boolean addAll(Collection<? extends E> c)
Fuegt alle Elemente einer Collection am Ende der Liste ein. Danach werden alle ueberzaehligen Element geloescht. Erzeugt ein GeneralObjectChangeEvent falls sich der Inhalt des Vectors aendert.

Specified by:
addAll in interface Collection<E>
Specified by:
addAll in interface List<E>
Overrides:
addAll in class Vector<E>
Parameters:
c - einzufuegende Objekte

addAll

public boolean addAll(int index,
                      Collection<? extends E> c)
Fuegt alle Elemente einer Collection in die Liste ein. Danach werden alle ueberzaehligen Element geloescht. Erzeugt ein GeneralObjectChangeEvent falls sich der Inhalt des Vectors aendert.
Bemerkung:
Diese Methode macht nichts, falls sie bei bereits voll gefuellter Liste mit Index 0 aufgerufen wird, da in diesem Fall die neuen Elemente auch die ueberzaehligen sind.

Specified by:
addAll in interface List<E>
Overrides:
addAll in class Vector<E>
Parameters:
index - Listen-Position ab der die Elemente eingefuegt werden
c - einzufuegende Objekte

trimToSize

public void trimToSize()
Verhaelt sich wie Vector.trimToSize() und erzeugt ein GeneralObjectChangeEvent.

Overrides:
trimToSize in class Vector<E>

setSize

public void setSize(int newSize)
Verhaelt sich wie Vector.setSize(int) und erzeugt ein GeneralObjectChangeEvent.

Overrides:
setSize in class Vector<E>

removeElementAt

public void removeElementAt(int index)
Verhaelt sich wie Vector.removeElementAt(int) und erzeugt ein ObjectChangeEvent, falls sich der Listen-Inhalt aendert.

Overrides:
removeElementAt in class Vector<E>

removeAllElements

public void removeAllElements()
Verhaelt sich wie Vector.removeAllElements() und erzeugt ein GeneralObjectChangeEvent, falls sich der Listen-Inhalt aendert.

Overrides:
removeAllElements in class Vector<E>

remove

public E remove(int index)
Verhaelt sich wie Vector.remove(int) und erzeugt ein ObjectChangeEvent, falls sich der Listen-Inhalt aendert.

Specified by:
remove in interface List<E>
Overrides:
remove in class Vector<E>

removeAll

public boolean removeAll(Collection<?> c)
Verhaelt sich wie Vector.removeAll(Collection) und erzeugt ein GeneralObjectChangeEvent, falls sich der Listen-Inhalt aendert.

Specified by:
removeAll in interface Collection<E>
Specified by:
removeAll in interface List<E>
Overrides:
removeAll in class Vector<E>

retainAll

public boolean retainAll(Collection<?> c)
Verhaelt sich wie Vector.retainAll(Collection) und erzeugt ein GeneralObjectChangeEvent, falls sich der Listen-Inhalt aendert.

Specified by:
retainAll in interface Collection<E>
Specified by:
retainAll in interface List<E>
Overrides:
retainAll in class Vector<E>

removeRange

protected void removeRange(int fromIndex,
                           int toIndex)
Verhaelt sich wie Vector.removeRange(int,int) und erzeugt ein GeneralObjectChangeEvent, falls sich der Listen-Inhalt aendert.

Overrides:
removeRange in class Vector<E>

addObjectListener

public void addObjectListener(ObjectListener listener)
Fuegt dem Objekt einen Listener hinzu, der bei Aenderungen informiert wird.

Specified by:
addObjectListener in interface ObjectTraceable

removeObjectListener

public void removeObjectListener(ObjectListener listener)
Entfernt einen Listener von dem Objekt.

Specified by:
removeObjectListener in interface ObjectTraceable

containsObjectListener

public boolean containsObjectListener(ObjectListener l)
Checkt, ob der angegebene Listener dem Objekt zugeordnet ist.

Specified by:
containsObjectListener in interface ObjectTraceable

getObjectListener

public ObjectListener[] getObjectListener(Class type)
Liefert alle Listener eines bestimmten Typs.

Specified by:
getObjectListener in interface ObjectTraceable
Parameters:
type - Art des Listeners (Filter)

fireEvent

public void fireEvent(ObjectEvent e)
Informiert alle Listener, dass sich das Objekt (this) geaendert hat.

Specified by:
fireEvent in interface ObjectTraceable

fireEvent

public void fireEvent(ObjectEvent e,
                      Class c)
Informiert alle Listener eine bestimmten Klasse, dass sich das Objekt (this) geaendert hat.

Specified by:
fireEvent in interface ObjectTraceable