com.sleepycat.collections
public class StoredIterator extends Object implements BaseIterator, Cloneable
While in general this class conforms to the Iterator interface, it is important to note that all iterators for stored collections must be explicitly closed with close. The static method close allows calling close for all iterators without harm to iterators that are not from stored collections, and also avoids casting. If a stored iterator is not closed, unpredictable behavior including process death may result.
This class implements the Iterator interface for all stored iterators. It also implements ListIterator because some list iterator methods apply to all stored iterators, for example, StoredIterator and StoredIterator. Other list iterator methods are always supported for lists, but for other types of collections are only supported under certain conditions. See StoredIterator, StoredIterator, StoredIterator and StoredIterator for details.
In addition, this class provides the following methods for stored collection iterators only. Note that the use of these methods is not compatible with the standard Java collections interface.
Method Summary | |
---|---|
void | add(Object value)
Inserts the specified element into the list or inserts a duplicate into
other types of collections (optional operation).
|
static void | close(Iterator i)
Closes the given iterator using close if it is a StoredIterator. |
void | close()
Closes this iterator.
|
int | count()
Returns the number of elements having the same key value as the key
value of the element last returned by next() or previous(). |
ListIterator | dup() |
StoredCollection | getCollection()
Returns the collection associated with this iterator.
|
boolean | hasNext()
Returns true if this iterator has more elements when traversing in the
forward direction. |
boolean | hasPrevious()
Returns true if this iterator has more elements when traversing in the
reverse direction. |
boolean | isCurrentData(Object currentData) |
boolean | isReadModifyWrite()
Returns whether write-locks will be obtained when reading with this
cursor.
|
boolean | moveToIndex(int index) |
Object | next()
Returns the next element in the iteration.
|
int | nextIndex()
Returns the index of the element that would be returned by a subsequent
call to next.
|
Object | previous()
Returns the next element in the iteration.
|
int | previousIndex()
Returns the index of the element that would be returned by a subsequent
call to previous.
|
void | remove()
Removes the last element that was returned by next or previous (optional
operation).
|
void | set(Object value)
Replaces the last element returned by next or previous with the
specified element (optional operation).
|
void | setReadModifyWrite(boolean lockForWrite)
Changes whether write-locks will be obtained when reading with this
cursor.
|
Note that for the JE product, RECNO-RENUMBER databases are not supported, and therefore this method may only be used to add duplicates.
Parameters: value the new value.
Throws: UnsupportedOperationException if the collection is a sublist, or if the collection is indexed, or if the collection is read-only, or if the collection is a list and the RECNO-RENUMBER access method was not used, or if the collection is not a list and duplicates are not allowed. IllegalStateException if the collection is empty and is not a list with RECNO-RENUMBER access. IllegalArgumentException if a duplicate value is being added that already exists and duplicates are sorted. RuntimeExceptionWrapper if a DatabaseException is thrown.
Parameters: i is the iterator to close.
Throws: RuntimeExceptionWrapper if a DatabaseException is thrown.
After being closed, only the StoredIterator and StoredIterator methods may be called and these will return false. close may also be called again and will do nothing. If other
methods are called a NullPointerException
will generally be
thrown.
Throws: RuntimeExceptionWrapper if a DatabaseException is thrown.
Returns: the number of duplicates.
Throws: IllegalStateException if next() or previous() has not been called for this iterator, or if remove() or add() were called after the last call to next() or previous().
Returns: the collection associated with this iterator.
Returns: whether next will succeed.
Throws: RuntimeExceptionWrapper if a DatabaseException is thrown.
Returns: whether previous will succeed.
Throws: RuntimeExceptionWrapper if a DatabaseException is thrown.
Returns: the write-lock setting.
Returns: the next element.
Throws: RuntimeExceptionWrapper if a DatabaseException is thrown.
Returns: the next index.
Throws: UnsupportedOperationException if this iterator's collection does not use record number keys. RuntimeExceptionWrapper if a DatabaseException is thrown.
Returns: the previous element.
Throws: RuntimeExceptionWrapper if a DatabaseException is thrown.
Returns: the previous index.
Throws: UnsupportedOperationException if this iterator's collection does not use record number keys. RuntimeExceptionWrapper if a DatabaseException is thrown.
Note that for the JE product, RECNO-RENUMBER databases are not supported, and therefore list indices are never renumbered by this method.
Throws: UnsupportedOperationException if the collection is a sublist, or if the collection is read-only. RuntimeExceptionWrapper if a DatabaseException is thrown.
Parameters: value the new value.
Throws: UnsupportedOperationException if the collection is a StoredKeySet (the set returned by java.util.Map#keySet), or if duplicates are sorted since this would change the iterator position, or if the collection is indexed, or if the collection is read-only. IllegalArgumentException if an entity value binding is used and the primary key of the value given is different than the existing stored primary key. RuntimeExceptionWrapper if a DatabaseException is thrown.
Parameters: lockForWrite the write-lock setting.