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
All Methods Instance Methods Concrete Methods 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, wait
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Constructor Detail
-
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 Detail
-
close
public void close()
Closes underlying ResultIterator.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceResultIterator<T>
-
allRows
public List<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
public 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
-
-