gausssoft.collections
Class AltFilterCollection

java.lang.Object
  |
  +--java.util.AbstractCollection
        |
        +--gausssoft.collections.AltFilterCollection
All Implemented Interfaces:
Collection, Serializable

public class AltFilterCollection
extends AbstractCollection
implements Serializable

The AltFilterCollection wraps around another Collection object providing the same functionality as AbstractCollection.

This class exists as an alternative to FilterCollection class, in the way that certain methods are inherited from the AbstractCollection class, while other methods call the backing Collection. The main use of this is to cut down the work that some classes would have to perform if they had used the FilterCollection class.

For example, you may have a collection object which contains objects of several different class types. However, you may want to wrap a FilterCollection round it so that a certain object only sees the objects in the backing Collection which are String objects. This would mean preventing addition of non-String objects by modifying the add method, preventing removal of non-String objects by modifying the remove method and so on. However, you would have to modify the addAll method, otherwise that would be passed to the backing collection. Modifications would also be needed to the removeAll method, as well as equals, hashCode, toArray and so on.

This ends up duplicating a lot of work to create the FilterCollection subclass. So this class is provided to allow object filtering to occur whilst minimizing the effort to program it. All operations which call the backing collection are required operations, operations which do not override the behaviour of the AbstractCollection class implementation are batch operations, which use the required methods in their implementation.

This object is only serializable if the backing collection is serializable. It should be noted that when an iterator is returned at this level, it is returning a AltFilterIterator, which uses a backing iterator from the backing collection for the remove method of this object, rather than that of the backing iterator. If you intend a different behaviour of the iterator to that of the iterators produced by the backing collection, you should override the iterator method.

All methods which override the subclass implementations simply call the method of the same name in the backing collection.

Author:
Allan Crooks
See Also:
Collection, AbstractCollection, FilterCollection, AltFilterList, AltFilterSet, AltFilterIterator, Serialized Form

Field Summary
protected  Collection root
          The backing collection.
 
Constructor Summary
AltFilterCollection(Collection root)
          Creates a new AltFilterCollection.
 
Method Summary
 boolean add(Object o)
           
 boolean contains(Object o)
           
 Iterator iterator()
          Returns a AltFilterIterator object, using this object as the filtering object and using an iterator from the backing collection as the backing iterator.
 boolean remove(Object o)
           
 int size()
           
 
Methods inherited from class java.util.AbstractCollection
addAll, clear, containsAll, isEmpty, removeAll, retainAll, toArray, toArray, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.Collection
equals, hashCode
 

Field Detail

root

protected Collection root
The backing collection.
Constructor Detail

AltFilterCollection

public AltFilterCollection(Collection root)
Creates a new AltFilterCollection.
Parameters:
root - The backing collection to use.
Throws:
NullPointerException - If root is null.
Method Detail

iterator

public Iterator iterator()
Returns a AltFilterIterator object, using this object as the filtering object and using an iterator from the backing collection as the backing iterator.
Overrides:
iterator in class AbstractCollection
Returns:
An iterator for this collection.

size

public int size()
Overrides:
size in class AbstractCollection

add

public boolean add(Object o)
Overrides:
add in class AbstractCollection

contains

public boolean contains(Object o)
Overrides:
contains in class AbstractCollection

remove

public boolean remove(Object o)
Overrides:
remove in class AbstractCollection