Class RemoveDuplicatesReader
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.core.RemoveDuplicatesReader
A proxy that removes duplicate records. Duplicates can be determined by
checking all fields (
RemoveDuplicatesReader(DataReader)) or subset
of fields (RemoveDuplicatesReader(DataReader, FieldList)).-
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
ConstructorsConstructorDescriptionRemoveDuplicatesReader(DataReader targetDataReader) Remove duplicate records matching all fields.RemoveDuplicatesReader(DataReader targetDataReader, FieldList fields) Removes duplicate records based on the matchingFieldList.RemoveDuplicatesReader(DataReader targetDataReader, String... fields) Remove duplicate records based on their field names. -
Method Summary
Modifier and TypeMethodDescriptionaddExceptionProperties(DataException exception) Adds this endpoint's current state to aDataException.voidclose()Indicates that this endpoint has finished reading or writing.Returns the discard sink for discarded records ornullif one was not assigned.longReturns the number of duplicate records that have been read.longReturns the number of unique records that have been read.protected RecordinterceptRecord(Record record) Overridden by subclasses to transform, drop, or observe a record on its way through this proxy.protected voidonDuplicate(Record record) Called for each duplicate record.protected voidCalled for each unique record.voidopen()Makes this endpoint ready for reading or writing.setDiscardWriter(DataWriter writer) Assign a discard sink for duplicate records.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
-
RemoveDuplicatesReader
Removes duplicate records based on the matchingFieldList.- Parameters:
targetDataReader- sourceDataReaderfields- theFieldListto be match
-
RemoveDuplicatesReader
Remove duplicate records based on their field names.- Parameters:
targetDataReader- sourceDataReaderfields- the field names to be checked for duplicates
-
RemoveDuplicatesReader
Remove duplicate records matching all fields.- Parameters:
targetDataReader- sourceDataReader
-
-
Method Details
-
getDiscardWriter
Returns the discard sink for discarded records ornullif one was not assigned. -
setDiscardWriter
Assign a discard sink for duplicate records.- Parameters:
writer- the discard sink
-
getUniqueRecordCount
public long getUniqueRecordCount()Returns the number of unique records that have been read. -
getDuplicateRecordCount
public long getDuplicateRecordCount()Returns the number of duplicate records that have been read. -
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
-
onUnique
Called for each unique record. -
onDuplicate
Called for each duplicate record. -
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
-