Class FilteringReader
java.lang.Object
com.northconcepts.datapipeline.core.DataObject
com.northconcepts.datapipeline.core.Endpoint
com.northconcepts.datapipeline.core.DataEndpoint
com.northconcepts.datapipeline.core.DataReader
com.northconcepts.datapipeline.core.ProxyReader
com.northconcepts.datapipeline.filter.FilteringReader
- Direct Known Subclasses:
ValidatingReader
A proxy that chooses records using a filter criteria. Chosen records are returned by the read() methods,
while rejected records disappear.
-
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
ConstructorsConstructorDescriptionFilteringReader(DataReader reader) Accepts the DataReader to filter.FilteringReader(DataReader reader, DataWriter discardWriter) Accepts the DataReader to filter and the DataWriter to send discarded records to.FilteringReader(DataReader reader, DataWriter discardWriter, String discardReasonFieldName) Accepts the DataReader to filter and the DataWriter to send discarded records to. -
Method Summary
Modifier and TypeMethodDescriptionAdds filters that every record must pass to be kept; they are applied in the order added.addExceptionProperties(DataException exception) Adds this endpoint's current state to aDataException.voidclose()Indicates that this endpoint has finished reading or writing.protected RecordHandles a record rejected byfilter; writes it to the discard writer (adding the discard reason field if configured) and returns null so it is dropped.get(int index) Returns the filter at the given 0-based index.intgetCount()Returns the number of filters in this reader.Returns the filter most recently used by this reader (such as the one that rejected the current record) or null if none was.Returns the field in the record to place the description of the filter that disallowed it ornullif one should not be added.Returns the discard sink for disallowed records ornullif one was not assigned.protected RecordinterceptRecord(Record record) Overridden by subclasses to transform, drop, or observe a record on its way through this proxy.voidopen()Makes this endpoint ready for reading or writing.remove(int index) Removes the filter at the given 0-based index.Methods inherited from class com.northconcepts.datapipeline.core.ProxyReader
available, getNestedReader, map, map, readImpl, 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
-
FilteringReader
Accepts the DataReader to filter and the DataWriter to send discarded records to.- Parameters:
reader- the source reader to filter.discardWriter- the discard sink for disallowed records ornullif they should simply disappear.discardReasonFieldName- the field in the record to place the description of the filter that disallowed it ornullif one should not be added.
-
FilteringReader
Accepts the DataReader to filter and the DataWriter to send discarded records to.- Parameters:
reader- the source reader to filter.discardWriter- the discard sink for disallowed records.
-
FilteringReader
Accepts the DataReader to filter.- Parameters:
reader- the source reader to filter.
-
-
Method Details
-
add
Adds filters that every record must pass to be kept; they are applied in the order added. -
getCurrentFilter
Returns the filter most recently used by this reader (such as the one that rejected the current record) or null if none was. -
getDiscardWriter
Returns the discard sink for disallowed records ornullif one was not assigned. -
getDiscardReasonFieldName
Returns the field in the record to place the description of the filter that disallowed it ornullif one should not be added. -
getCount
public int getCount()Returns the number of filters in this reader. -
get
Returns the filter at the given 0-based index. -
remove
Removes the filter at the given 0-based index. -
removeAll
-
open
Description copied from class:DataEndpointMakes this endpoint ready for reading or writing.- Overrides:
openin classProxyReader- Throws:
DataException
-
close
Description copied from class:DataEndpointIndicates that this endpoint has finished reading or writing.- Overrides:
closein classProxyReader- Throws:
DataException
-
interceptRecord
Description copied from class:ProxyReaderOverridden by subclasses to transform, drop, or observe a record on its way through this proxy.Contract for subclasses (see also
docs/authoring/ProxyReader.md):- Return the record (possibly modified) to pass it downstream.
- Return
nullto drop the record; the framework reads the next one. - Throw to fail the pipeline; the framework wraps the throwable in a
DataExceptionwith.setRecord(record). - The nested
DataReaderis opened and closed for you; do not read from it here. - Do not call
DataEndpoint.incrementRecordCount()here.
- Overrides:
interceptRecordin classProxyReader- Throws:
Throwable
-
discard
Handles a record rejected byfilter; writes it to the discard writer (adding the discard reason field if configured) and returns null so it is dropped. -
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
-