org.saager.enumerator
Class Enumerator<T>

java.lang.Object
  extended by org.saager.enumerator.Enumerator<T>
Type Parameters:
T -
All Implemented Interfaces:
java.lang.Iterable<Cursor<T>>
Direct Known Subclasses:
LiveEnumerator

public class Enumerator<T>
extends java.lang.Object
implements java.lang.Iterable<Cursor<T>>

Enumerator The Enumerator enable the consistent use of the enhanced for-loop of Java 5 SE Any object eligible for an enhanced for-loop can be wrapped by an Enumerator to enable

  1. removal
  2. indexing
  3. introspection
In addition the Enumerator can be filtered using Predicates and appended by other Enumerators

Author:
Carsten Saager
See Also:
Enumerator.IndexedIterator, Predicate, Cursor

Nested Class Summary
private  class Enumerator.IndexedIterator
           
 
Field Summary
private  Predicate<? super T> filter
           
private  java.lang.Iterable<T> iterable
           
 
Constructor Summary
Enumerator(java.lang.Iterable<? extends T> iterable)
          An unfiltered Enumerator
Enumerator(java.lang.Iterable<? extends T> iterable, Predicate<? extends java.lang.Object> filter)
          Iterating with preset filter
 
Method Summary
 Enumerator<T> also(Predicate<? super T> predicate)
          Also returns results from this Predicate
 Enumerator<T> append(Enumerator<? extends T>... tail)
          append one or more Enumerators to this.
 Enumerator<T> either(Predicate<? super T> predicate)
          XOR on Predicates
 Enumerator<T> invert()
          Complement of predicated set
 java.util.Iterator<Cursor<T>> iterator()
           
 Enumerator<T> only(Predicate<? super T> predicate)
          Restricts results to object matching this Predicate
<S extends T>
Enumerator<S>
specialize(java.lang.Class<S> clazz)
          Create an Enumerator that returns only element of this sub-class.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

iterable

private final java.lang.Iterable<T> iterable

filter

private final Predicate<? super T> filter
Constructor Detail

Enumerator

public Enumerator(java.lang.Iterable<? extends T> iterable)
An unfiltered Enumerator

Parameters:
iterable -

Enumerator

public Enumerator(java.lang.Iterable<? extends T> iterable,
                  Predicate<? extends java.lang.Object> filter)
Iterating with preset filter

Parameters:
iterable -
filter -
Method Detail

append

public Enumerator<T> append(Enumerator<? extends T>... tail)
append one or more Enumerators to this.

Parameters:
tail -
Returns:
new iterator that will chain all in the given order, this first

only

public Enumerator<T> only(Predicate<? super T> predicate)
Restricts results to object matching this Predicate

Parameters:
predicate -
Returns:

also

public Enumerator<T> also(Predicate<? super T> predicate)
Also returns results from this Predicate

Parameters:
predicate -
Returns:

either

public Enumerator<T> either(Predicate<? super T> predicate)
XOR on Predicates

Parameters:
predicate -
Returns:

invert

public Enumerator<T> invert()
Complement of predicated set

Returns:

specialize

public <S extends T> Enumerator<S> specialize(java.lang.Class<S> clazz)
Create an Enumerator that returns only element of this sub-class. This is not implemented via Predicates, because too dangerous to loose type safety, thus all Predicate function can be used´without any restriction.

Type Parameters:
S -
Parameters:
clazz -
Returns:

iterator

public java.util.Iterator<Cursor<T>> iterator()
Specified by:
iterator in interface java.lang.Iterable<Cursor<T>>