Class LoopTool.ManagedIterator
- java.lang.Object
-
- org.apache.velocity.tools.generic.LoopTool.ManagedIterator
-
- All Implemented Interfaces:
java.util.Iterator
- Enclosing class:
- LoopTool
public class LoopTool.ManagedIterator extends java.lang.Object implements java.util.IteratorIterator implementation that wraps a standardIteratorand allows it to be prematurely stopped, skipped ahead, and associated with a name for advanced nested loop control. This also allows a arbitraryLoopTool.ActionConditions to be added in order to have it automatically skip over or stop before certain elements in the iterator.
-
-
Constructor Summary
Constructors Constructor Description ManagedIterator(java.lang.String name, java.util.Iterator iterator, LoopTool owner)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description LoopTool.ManagedIteratorcondition(LoopTool.ActionCondition condition)Adds a newLoopTool.ActionConditionfor this instance to check against the elements in the iterator being managed.LoopTool.ManagedIteratorexclude(java.lang.Object compare)Directs this instance to completely exclude any elements equal to the specified Object.java.lang.Objectget(java.lang.String name)intgetCount()booleangetFirst()booleangetHasNext()intgetIndex()booleangetLast()java.util.Map<java.lang.String,java.lang.Object>getLastSyncedValues()java.lang.StringgetName()booleanhasNext()booleanisFirst()booleanisLast()booleanisSyncedWith(java.lang.String name)java.lang.Objectnext()voidremove()This operation is unsupported.voidstop()Stops this iterator from doing any further iteration.LoopTool.ManagedIteratorstop(java.lang.Object compare)Directs this instance to stop iterating immediately prior to any element equal to the specified Object.LoopTool.ManagedIteratorsync(java.lang.Object iterable)Adds another iterator to be kept in sync with the one being managed by this instance.LoopTool.ManagedIteratorsync(java.lang.Object iterable, java.lang.String name)Adds another iterator to be kept in sync with the one being managed by this instance.java.lang.StringtoString()
-
-
-
Constructor Detail
-
ManagedIterator
public ManagedIterator(java.lang.String name, java.util.Iterator iterator, LoopTool owner)
-
-
Method Detail
-
getName
public java.lang.String getName()
- Returns:
- the name of this instance.
-
isFirst
public boolean isFirst()
- Returns:
- true if either 0 or 1 elements have been returned
by
next().
-
isLast
public boolean isLast()
- Returns:
- true if the last element returned by
next()is the last element available in the iterator being managed which satisfies any/allLoopTool.ActionConditions set for this instance. Otherwise, returns false.
-
getFirst
public boolean getFirst()
- Returns:
- the result of
isFirst(). Exists to allow $loop.this.first syntax.
-
getLast
public boolean getLast()
- Returns:
- the result of
isLast(). Exists to allow $loop.this.last syntax.
-
hasNext
public boolean hasNext()
- Specified by:
hasNextin interfacejava.util.Iterator- Returns:
- true if there are more elements in the iterator
being managed by this instance which satisfy all the
LoopTool.ActionConditions set for this instance. Returns false if there are no more valid elements available.
-
getHasNext
public boolean getHasNext()
- Returns:
- the result of
hasNext(). Exists to allow $loop.this.hasNext syntax.
-
isSyncedWith
public boolean isSyncedWith(java.lang.String name)
- Parameters:
name- syn'ed iterator name- Returns:
trueif this ManagedIterator has a sync'ed iterator with the specified name.
-
get
public java.lang.Object get(java.lang.String name)
- Parameters:
name- iterator name- Returns:
- the parallel value from the specified sync'ed iterator.
If no sync'ed iterator exists with that name or that iterator
is finished, this will return
null.
-
getCount
public int getCount()
- Returns:
- the number of elements returned by
next()so far.
-
getIndex
public int getIndex()
- Returns:
- the 0-based index of the current item.
-
next
public java.lang.Object next()
- Specified by:
nextin interfacejava.util.Iterator- Returns:
- the next element that meets the set
LoopTool.ActionConditions (if any) in the iterator being managed. If there are none left, then this will throw aNoSuchElementException.
-
remove
public void remove()
This operation is unsupported.- Specified by:
removein interfacejava.util.Iterator
-
stop
public void stop()
Stops this iterator from doing any further iteration.
-
exclude
public LoopTool.ManagedIterator exclude(java.lang.Object compare)
Directs this instance to completely exclude any elements equal to the specified Object.- Parameters:
compare- value to exclude- Returns:
- This same
LoopTool.ManagedIteratorinstance
-
stop
public LoopTool.ManagedIterator stop(java.lang.Object compare)
Directs this instance to stop iterating immediately prior to any element equal to the specified Object.- Parameters:
compare- value to stop at- Returns:
- This same
LoopTool.ManagedIteratorinstance
-
condition
public LoopTool.ManagedIterator condition(LoopTool.ActionCondition condition)
Adds a newLoopTool.ActionConditionfor this instance to check against the elements in the iterator being managed.- Parameters:
condition- condition- Returns:
- This same
LoopTool.ManagedIteratorinstance
-
sync
public LoopTool.ManagedIterator sync(java.lang.Object iterable)
Adds another iterator to be kept in sync with the one being managed by this instance. The values of the parallel iterator can be retrieved from the LoopTool under the name s"synced" (e.g. $loop.synced or $loop.get('synced')) and are automatically updated for each iteration by this instance.
NOTE: if you are sync'ing multiple iterators with the same managed iterator, you must use
sync(Object,String)or else your the later iterators will simply replace the earlier ones under the default 'synced' key.- Parameters:
iterable- Iterator to synchronize with- Returns:
- This same
LoopTool.ManagedIteratorinstance - See Also:
LoopTool.SyncedIterator,get(String)
-
sync
public LoopTool.ManagedIterator sync(java.lang.Object iterable, java.lang.String name)
Adds another iterator to be kept in sync with the one being managed by this instance. The values of the parallel iterator can be retrieved from the LoopTool under the name specified here (e.g. $loop.name or $loop.get('name')) and are automatically updated for each iteration by this instance.- Parameters:
iterable- iterator to synchronize withname- loop name- Returns:
- This same
LoopTool.ManagedIteratorinstance - See Also:
LoopTool.SyncedIterator,get(String)
-
getLastSyncedValues
public java.util.Map<java.lang.String,java.lang.Object> getLastSyncedValues()
- Returns:
- last sync'ed values
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-