Package org.apache.druid.segment
Class ForwardingRowIterator
- java.lang.Object
-
- org.apache.druid.segment.ForwardingRowIterator
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
,RowIterator
,TimeAndDimsIterator
,TransformableRowIterator
public abstract class ForwardingRowIterator extends Object implements TransformableRowIterator
Implementation ofTransformableRowIterator
that just delegates all methods to some baseIterator (adapter pattern). Subclass should override some methods.
-
-
Field Summary
Fields Modifier and Type Field Description protected TransformableRowIterator
baseIterator
-
Constructor Summary
Constructors Modifier Constructor Description protected
ForwardingRowIterator(TransformableRowIterator baseIterator)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Closes any resources, associated with this iterator.TimeAndDimsPointer
getMarkedPointer()
Returns a pointer to the row, that was the current row whenRowIterator.mark()
was called for the last time.RowPointer
getPointer()
Returns a pointer to the current row.boolean
hasTimeAndDimsChangedSinceMark()
Compares the "memoized" data point from the lastRowIterator.mark()
call with the data point, to whichRowIterator.getPointer()
currently points.void
mark()
"Memoizes" the data point, to whichRowIterator.getPointer()
currently points.boolean
moveToNext()
Moves iterator to the next data point.
-
-
-
Field Detail
-
baseIterator
protected final TransformableRowIterator baseIterator
-
-
Constructor Detail
-
ForwardingRowIterator
protected ForwardingRowIterator(TransformableRowIterator baseIterator)
-
-
Method Detail
-
mark
public void mark()
Description copied from interface:RowIterator
"Memoizes" the data point, to whichRowIterator.getPointer()
currently points. If the last call toTimeAndDimsIterator.moveToNext()
returnedfalse
, the behaviour of this method is undefined, e. g. it may throw a runtime exception.- Specified by:
mark
in interfaceRowIterator
-
getMarkedPointer
public TimeAndDimsPointer getMarkedPointer()
Description copied from interface:TransformableRowIterator
Returns a pointer to the row, that was the current row whenRowIterator.mark()
was called for the last time. This method always returns the same object, but pointing to different rows after eachRowIterator.mark()
call. This method must not be called before ever calling toTimeAndDimsIterator.moveToNext()
. If the very first call toTimeAndDimsIterator.moveToNext()
returnedfalse
, the behaviour of this method is undefined (it may return a "wrong" pointer, null, throw an exception, etc.). This method could be called before the first call toRowIterator.mark()
(it should return the same object as it is required to return after all subsequentRowIterator.mark()
calls), but the data of the returned pointer should not be accessed before the first call toRowIterator.mark()
. This method is used inRowCombiningTimeAndDimsIterator
implementation. getMarkedPointer() returnsTimeAndDimsPointer
instead ofRowPointer
(likeTransformableRowIterator.getPointer()
) merely becauseRowCombiningTimeAndDimsIterator
doesn't need this method to return anything more specific thanTimeAndDimsPointer
.- Specified by:
getMarkedPointer
in interfaceTransformableRowIterator
-
hasTimeAndDimsChangedSinceMark
public boolean hasTimeAndDimsChangedSinceMark()
Description copied from interface:RowIterator
Compares the "memoized" data point from the lastRowIterator.mark()
call with the data point, to whichRowIterator.getPointer()
currently points. Comparison is made in terms ofTimeAndDimsPointer.compareTo(org.apache.druid.segment.TimeAndDimsPointer)
contract. IfRowIterator.mark()
has never been called, or the last call toTimeAndDimsIterator.moveToNext()
returnedfalse
, the behaviour of this method is undefined: it may arbitrarily return true, or false, or throw a runtime exception.- Specified by:
hasTimeAndDimsChangedSinceMark
in interfaceRowIterator
-
getPointer
public RowPointer getPointer()
Description copied from interface:TransformableRowIterator
Returns a pointer to the current row. This method _always returns the same object_, but pointing to different row after eachTimeAndDimsIterator.moveToNext()
call that returns {@link true}. Other aspects of the behaviour of this method are the same as in the genericRowIterator.getPointer()
contract.- Specified by:
getPointer
in interfaceRowIterator
- Specified by:
getPointer
in interfaceTimeAndDimsIterator
- Specified by:
getPointer
in interfaceTransformableRowIterator
-
moveToNext
public boolean moveToNext()
Description copied from interface:TimeAndDimsIterator
Moves iterator to the next data point. This method must be called before the first use ofTimeAndDimsIterator.getPointer()
. As long as this method returnstrue
,TimeAndDimsIterator.getPointer()
could be safely called; after this method returnedfalse
, this iterator is done,TimeAndDimsIterator.getPointer()
must _not_ be called, andTimeAndDimsIterator.close()
should be called.- Specified by:
moveToNext
in interfaceTimeAndDimsIterator
-
close
public void close()
Description copied from interface:TimeAndDimsIterator
Closes any resources, associated with this iterator.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in interfaceTimeAndDimsIterator
-
-