Class LoopTool.ManagedIterator
java.lang.Object
org.apache.velocity.tools.generic.LoopTool.ManagedIterator
- All Implemented Interfaces:
Iterator
- Enclosing class:
- LoopTool
Iterator implementation that wraps a standard
Iterator
and allows it to be prematurely stopped, skipped ahead, and
associated with a name for advanced nested loop control.
This also allows a arbitrary LoopTool.ActionConditions to be added
in order to have it automatically skip over or stop before
certain elements in the iterator.-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate booleancacheNext(boolean popWhenDone) condition(LoopTool.ActionCondition condition) Adds a newLoopTool.ActionConditionfor this instance to check against the elements in the iterator being managed.Directs this instance to completely exclude any elements equal to the specified Object.Returns the parallel value from the specified sync'ed iterator.intgetCount()Returns the number of elements returned bynext()so far.booleangetFirst()Returns the result ofisFirst().booleanReturns the result ofhasNext().intgetIndex()Returns the 0-based index of the current item.booleangetLast()Returns the result ofisLast().getName()Returns the name of this instance.booleanhasNext()Returns true if there are more elements in the iterator being managed by this instance which satisfy all theLoopTool.ActionConditions set for this instance.private booleanhasNext(boolean popWhenDone) booleanisFirst()Returns true if either 0 or 1 elements have been returned bynext().booleanisLast()Returns true if the last element returned bynext()is the last element available in the iterator being managed which satisfies any/allLoopTool.ActionConditions set for this instance.booleanisSyncedWith(String name) Returnstrueif this ManagedIterator has a sync'ed iterator with the specified name.next()Returns the next element that meets the setLoopTool.ActionConditions (if any) in the iterator being managed.voidremove()This operation is unsupported.private voidvoidstop()Stops this iterator from doing any further iteration.Directs this instance to stop iterating immediately prior to any element equal to the specified Object.Adds another iterator to be kept in sync with the one being managed by this instance.Adds another iterator to be kept in sync with the one being managed by this instance.toString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.util.Iterator
forEachRemaining
-
Field Details
-
name
-
iterator
-
owner
-
stopped
private boolean stopped -
first
-
count
private int count -
next
-
conditions
-
synced
-
-
Constructor Details
-
ManagedIterator
-
-
Method Details
-
getName
Returns the name of this instance. -
isFirst
public boolean isFirst()Returns true if either 0 or 1 elements have been returned bynext(). -
isLast
public boolean isLast()Returns true if the last element returned bynext()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 ofisFirst(). Exists to allow $loop.this.first syntax. -
getLast
public boolean getLast()Returns the result ofisLast(). Exists to allow $loop.this.last syntax. -
hasNext
public boolean hasNext()Returns true if there are more elements in the iterator being managed by this instance which satisfy all theLoopTool.ActionConditions set for this instance. Returns false if there are no more valid elements available. -
getHasNext
public boolean getHasNext()Returns the result ofhasNext(). Exists to allow $loop.this.hasNext syntax. -
hasNext
private boolean hasNext(boolean popWhenDone) -
cacheNext
private boolean cacheNext(boolean popWhenDone) -
shiftSynced
private void shiftSynced() -
isSyncedWith
Returnstrueif this ManagedIterator has a sync'ed iterator with the specified name. -
get
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 returnnull. -
getCount
public int getCount()Returns the number of elements returned bynext()so far. -
getIndex
public int getIndex()Returns the 0-based index of the current item. -
next
Returns the next element that meets the setLoopTool.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. -
stop
public void stop()Stops this iterator from doing any further iteration. -
exclude
Directs this instance to completely exclude any elements equal to the specified Object.- Returns:
- This same
LoopTool.ManagedIteratorinstance
-
stop
Directs this instance to stop iterating immediately prior to any element equal to the specified Object.- Returns:
- This same
LoopTool.ManagedIteratorinstance
-
condition
Adds a newLoopTool.ActionConditionfor this instance to check against the elements in the iterator being managed.- Returns:
- This same
LoopTool.ManagedIteratorinstance
-
sync
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.synched 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.- Returns:
- This same
LoopTool.ManagedIteratorinstance - See Also:
-
sync
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.- Returns:
- This same
LoopTool.ManagedIteratorinstance - See Also:
-
toString
-