An iterator returns values from a collection. A collection can have any number of iterators. In the next example, a list of integers is printed twice, by two iterators. The result is:
10 10 12 12 14 14 16 16 18 18 20 20
XML:
<dm:ints range="[0,20]2">
<dm:iterator id="iter1"/>
<dm:iterator id="iter2"/>
</dm:ints>
Java:
DatamixerIterator iter0 = // get iterator from XML context
DatamixerIterator iter1 = // get iterator from XML context
while (iter0.hasNext ())
System.out.println (iter0.getNextValue () + " " + iter1.getNextValue ());
Iterators can also refer to a collection by its id:
<dm:ints id="even-ints" range="[0,20]2"/>
<dm:iterator id="iter1" collection="even-ints"/>
<dm:iterator id="iter2" collection="even-ints"/>
The Java implementation of a datamixer iterator is
DatamixerIterator, which implements
java.util.Iterator. Each call to next() calls
getNextValue(), which gets the next value as a
Value object.
The iterator caches this value as its current value. The current
value can be accessed any number of times with
getCurrentValue(), or as a Java Object with
getCurrent().
next() returns this value as a Java Object, by
calling value.getObject(). If the value is desired as a
Value, then getNextValue() can be called directly
instead of next().
A datamixer iterator supports several methods in addition to
hasNext() and next():
reset() resets the iterator to an initial state. The first
call to next() after reset() will return the
first element in the collection.
getRepeat() and setRepeat() set the value of the
repeat flag. If true, then when an iterator reaches the end of the
collection, it is automatically reset.
addDatamixerListener() and
removeDatamixerListener() add or remove a
listener to an iterator. Listeners can listen
for generate or done events.
getCollection() and setCollection() return the
collection that produced the iterator.
getFormatPattern() and setFormatPattern() allow
a format pattern to be applied to each next value.
getId() and setId() associate an identifier with
an iterator, which is used when printing error messages.