Class LimitReader
A proxy that can skip a number of upstream records, limit the number of records sent downstream, or both.
This reader acts like the MySQL SELECT ... LIMIT offset, row_count statement.
-
Nested Class Summary
Nested classes/interfaces inherited from class com.northconcepts.datapipeline.core.DataEndpoint
DataEndpoint.State -
Field Summary
Fields inherited from class com.northconcepts.datapipeline.core.DataReader
fieldLineage, recordLineageFields inherited from class com.northconcepts.datapipeline.core.DataEndpoint
lastRecord, PRODUCT, PRODUCT_VERSION, VENDOR, XML_INPUT_FACTORY_KEYFields inherited from class com.northconcepts.datapipeline.core.Endpoint
BUFFER_SIZE, captureElapsedTime, DEFAULT_READ_BUFFER_SIZEFields inherited from class com.northconcepts.datapipeline.core.DataObject
id, log, name, TIMESTAMP_FORMAT -
Constructor Summary
ConstructorsConstructorDescriptionLimitReader(DataReader targetDataReader) Creates a reader with no offset or limit; set at least one beforeopen().LimitReader(DataReader targetDataReader, long limit) Creates a reader that returns at mostlimitrecords without skipping any.LimitReader(DataReader targetDataReader, Integer offset, Integer limit) Creates a reader that skipsoffsetrecords and then returns at mostlimit; either may be null, but not both.LimitReader(DataReader targetDataReader, Long offset, Long limit) Creates a reader that skipsoffsetrecords and then returns at mostlimit; either may be null, but not both. -
Method Summary
Modifier and TypeMethodDescriptionaddExceptionProperties(DataException exception) Adds this endpoint's current state to aDataException.getLimit()Returns the maximum number of records to return after the offset or null for no limit.Returns the number of leading records to skip or null to skip none.longReturns the number of records skipped so far to satisfy the offset.voidopen()Makes this endpoint ready for reading or writing.protected RecordreadImpl()Overridden by subclasses to read the next record from thisDataReader.setLimit(long limit) Sets the maximum number of records to return after the offset.Sets the maximum number of records to return after the offset; null for no limit.setOffset(long offset) Sets the number of leading records to skip.Sets the number of leading records to skip; null skips none.Methods inherited from class com.northconcepts.datapipeline.core.ProxyReader
available, close, getNestedReader, interceptRecord, map, map, setNestedDataReader, setNestedDataReaderMethods inherited from class com.northconcepts.datapipeline.core.DataReader
addLineage, getBufferSize, getNestedEndpoint, getReader, getRootEndpoint, getRootReader, isExhausted, isLineageSupported, isSaveLineage, peek, pop, push, read, setSaveLineage, skipMethods inherited from class com.northconcepts.datapipeline.core.DataEndpoint
decrementRecordCount, enableJmx, getLastRecord, getRecordCount, getRecordCountAsBigInteger, getRecordCountAsString, incrementRecordCount, isRecordCountBigInteger, resetRecordCount, toStringMethods inherited from class com.northconcepts.datapipeline.core.Endpoint
addElapsedtime, assertClosed, assertNotOpened, assertOpened, finalize, getClosedOn, getDescription, getElapsedTime, getElapsedTimeAsString, getOpenedOn, getOpenElapsedTime, getOpenElapsedTimeAsString, getSelfTime, getSelfTimeAsString, getState, isCaptureElapsedTime, isClosed, isOpen, setCaptureElapsedTime, setDescription
-
Constructor Details
-
LimitReader
Creates a reader with no offset or limit; set at least one beforeopen(). -
LimitReader
Creates a reader that skipsoffsetrecords and then returns at mostlimit; either may be null, but not both. -
LimitReader
Creates a reader that skipsoffsetrecords and then returns at mostlimit; either may be null, but not both. -
LimitReader
Creates a reader that returns at mostlimitrecords without skipping any.
-
-
Method Details
-
getOffset
Returns the number of leading records to skip or null to skip none. -
setOffset
Sets the number of leading records to skip; null skips none. -
setOffset
Sets the number of leading records to skip. -
getLimit
Returns the maximum number of records to return after the offset or null for no limit. -
setLimit
Sets the maximum number of records to return after the offset; null for no limit. -
setLimit
Sets the maximum number of records to return after the offset. -
getOffsetConsumed
public long getOffsetConsumed()Returns the number of records skipped so far to satisfy the offset. -
open
Description copied from class:DataEndpointMakes this endpoint ready for reading or writing.- Overrides:
openin classProxyReader- Throws:
DataException
-
readImpl
Description copied from class:DataReaderOverridden by subclasses to read the next record from thisDataReader. The default implementation ofDataReader.read()now insures that this method will not be called again after it returns anull.If no record is available,
nullwill be returned.Contract for subclasses (see also
docs/authoring/DataReader.md):- Return
nullexactly once to signal end-of-stream. - Do not call this method directly —
DataReader.read()is the template method that wraps exceptions, increments the record count, and tracks lineage. - Do not call
DataEndpoint.incrementRecordCount()here;DataReader.read()already does. - Throw raw exceptions;
DataReader.read()wraps them viaexception(throwable).
- Overrides:
readImplin classProxyReader- Throws:
Throwable
- Return
-
addExceptionProperties
Description copied from class:EndpointAdds this endpoint's current state to aDataException. Since this method is called whenever an exception is thrown, subclasses should override it to add their specific information.- Overrides:
addExceptionPropertiesin classProxyReader
-