Package org.apache.cayenne.access.jdbc
Class DistinctResultIterator<T>
java.lang.Object
org.apache.cayenne.access.jdbc.DistinctResultIterator<T>
- All Implemented Interfaces:
AutoCloseable
,Iterable<T>
,ResultIterator<T>
A ResultIterator that does in-memory filtering of rows to return only
distinct rows. Distinct comparison is done by comparing ObjectIds created
from each row. Internally DistinctResultIterator wraps another ResultIterator
that provides the actual rows.
- Since:
- 3.0
-
Field Summary
Modifier and TypeFieldDescriptionprotected boolean
protected DbEntity
protected ResultIterator
<T> protected T
-
Constructor Summary
ConstructorDescriptionDistinctResultIterator
(ResultIterator<T> delegate, DbEntity defaultEntity, boolean compareFullRows) Creates new DistinctResultIterator wrapping another ResultIterator. -
Method Summary
Modifier and TypeMethodDescriptionallRows()
Returns all yet unread rows from ResultSet without closing it.void
close()
Closes underlying ResultIterator.boolean
Returns true if there is at least one more record that can be read from the iterator.iterator()
nextRow()
Returns the next result row that is, depending on the query, may be a scalar value, a DataRow, or an Object[] array containing a mix of scalars and DataRows.void
skipRow()
Goes past current row.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Field Details
-
delegate
-
fetchedIds
-
nextDataRow
-
defaultEntity
-
compareFullRows
protected boolean compareFullRows
-
-
Constructor Details
-
DistinctResultIterator
public DistinctResultIterator(ResultIterator<T> delegate, DbEntity defaultEntity, boolean compareFullRows) Creates new DistinctResultIterator wrapping another ResultIterator.- Parameters:
delegate
- actual result iterator, that will be decorated by this DistinctResultIteratordefaultEntity
- an entity needed to build ObjectIds for distinct comparison.
-
-
Method Details
-
iterator
-
close
public void close()Closes underlying ResultIterator.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceResultIterator<T>
-
allRows
Description copied from interface:ResultIterator
Returns all yet unread rows from ResultSet without closing it.- Specified by:
allRows
in interfaceResultIterator<T>
- Since:
- 3.0
-
hasNextRow
public boolean hasNextRow()Description copied from interface:ResultIterator
Returns true if there is at least one more record that can be read from the iterator.- Specified by:
hasNextRow
in interfaceResultIterator<T>
-
nextRow
Description copied from interface:ResultIterator
Returns the next result row that is, depending on the query, may be a scalar value, a DataRow, or an Object[] array containing a mix of scalars and DataRows.- Specified by:
nextRow
in interfaceResultIterator<T>
-
skipRow
public void skipRow()Description copied from interface:ResultIterator
Goes past current row. If the row is not needed, this may save some time on data conversion.- Specified by:
skipRow
in interfaceResultIterator<T>
- Since:
- 3.0
-