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>
public class DistinctResultIterator<T> extends Object implements 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
Fields Modifier and Type Field Description protected booleancompareFullRowsprotected DbEntitydefaultEntityprotected ResultIterator<T>delegateprotected Set<Object>fetchedIdsprotected TnextDataRow -
Constructor Summary
Constructors Constructor Description DistinctResultIterator(ResultIterator<T> delegate, DbEntity defaultEntity, boolean compareFullRows)Creates new DistinctResultIterator wrapping another ResultIterator. -
Method Summary
Modifier and Type Method Description List<T>allRows()Returns all yet unread rows from ResultSet without closing it.voidclose()Closes underlying ResultIterator.booleanhasNextRow()Returns true if there is at least one more record that can be read from the iterator.Iterator<T>iterator()TnextRow()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.voidskipRow()Goes past current row.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods 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:
closein interfaceAutoCloseable- Specified by:
closein interfaceResultIterator<T>
-
allRows
Description copied from interface:ResultIteratorReturns all yet unread rows from ResultSet without closing it.- Specified by:
allRowsin interfaceResultIterator<T>- Since:
- 3.0
-
hasNextRow
public boolean hasNextRow()Description copied from interface:ResultIteratorReturns true if there is at least one more record that can be read from the iterator.- Specified by:
hasNextRowin interfaceResultIterator<T>
-
nextRow
Description copied from interface:ResultIteratorReturns 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:
nextRowin interfaceResultIterator<T>
-
skipRow
public void skipRow()Description copied from interface:ResultIteratorGoes past current row. If the row is not needed, this may save some time on data conversion.- Specified by:
skipRowin interfaceResultIterator<T>- Since:
- 3.0
-