Class 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.
    • Field Detail

      • fetchedIds

        protected Set<Object> fetchedIds
      • nextDataRow

        protected T nextDataRow
      • defaultEntity

        protected DbEntity defaultEntity
      • compareFullRows

        protected boolean compareFullRows
    • Constructor Detail

      • DistinctResultIterator

        public DistinctResultIterator​(ResultIterator<T> delegate,
                                      DbEntity defaultEntity,
                                      boolean compareFullRows)
        Creates new DistinctResultIterator wrapping another ResultIterator.
        delegate - actual result iterator, that will be decorated by this DistinctResultIterator
        defaultEntity - an entity needed to build ObjectIds for distinct comparison.
    • Method Detail

      • allRows

        public List<T> allRows()
        Description copied from interface: ResultIterator
        Returns all yet unread rows from ResultSet without closing it.
        Specified by:
        allRows in interface ResultIterator<T>
      • 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 interface ResultIterator<T>
      • nextRow

        public 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 interface ResultIterator<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 interface ResultIterator<T>