public abstract class AbstractProcessorSwitch<T extends Context> extends Object implements Processor<T>, ColumnOrderDependent
Processor implementation that combines and allows switching among different
Processors. Each Processor will have its own Context. Concrete implementations of this class
are expected to implement the switchRowProcessor(String[], Context) method and analyze the input row
to determine whether or not the current Processor implementation must be changed to handle a special
circumstance (determined by the concrete implementation) such as a different row format.
When the processor is switched, the processorSwitched(Processor, Processor) will be called, and
must be overridden, to notify the change to the user.| Constructor and Description |
|---|
AbstractProcessorSwitch() |
| Modifier and Type | Method and Description |
|---|---|
String[] |
getHeaders()
Returns the headers in use by the current row processor implementation, which can vary among row processors.
|
int[] |
getIndexes()
Returns the indexes in use by the current row processor implementation, which can vary among row processors.
|
boolean |
preventColumnReordering()
Returns a flag indicating whether or not columns should be reordered by the parser
|
void |
processEnded(T context)
This method will by invoked by the parser once, after the parsing process stopped and all resources were closed.
|
void |
processorSwitched(Processor<T> from,
Processor<T> to)
Notifies a change of
Processor implementation. |
void |
processStarted(T context)
This method will by invoked by the parser once, when it is ready to start processing the input.
|
void |
rowProcessed(String[] row,
T context)
Invoked by the parser after all values of a valid record have been processed.
|
void |
rowProcessorSwitched(RowProcessor from,
RowProcessor to)
Notifies a change of
RowProcessor implementation. |
protected abstract Processor<T> |
switchRowProcessor(String[] row,
T context)
Analyzes the input to determine whether or not the row processor implementation must be changed
|
protected abstract T |
wrapContext(T context)
Wraps a given parser context object that returns headers and extracted field indexes
associated with a given processor in this switch.
|
protected abstract Processor<T> switchRowProcessor(String[] row, T context)
row - a row parsed from the inputcontext - the current parsing context (not associated with the current row processor used by this class)processorSwitched(Processor, Processor) method
will be called.public String[] getHeaders()
null, the headers parsed by the input, or defined in CommonSettings.getHeaders() will be returned.public int[] getIndexes()
null all columns of a given record will be considered.public void processorSwitched(Processor<T> from, Processor<T> to)
Processor implementation. Users are expected to override this method to receive the notification.from - the processor previously in useto - the new processor to use to continue processing the input.public void rowProcessorSwitched(RowProcessor from, RowProcessor to)
RowProcessor implementation. Users are expected to override this method to receive the notification.from - the row processor previously in useto - the new row processor to use to continue processing the input.public void processStarted(T context)
ProcessorprocessStarted in interface Processor<T extends Context>context - A contextual object with information and controls over the current state of the parsing processprotected abstract T wrapContext(T context)
context - the context to wrapgetHeaders() and getIndexes()public final void rowProcessed(String[] row, T context)
ProcessorrowProcessed in interface Processor<T extends Context>row - the data extracted by the parser for an individual record. Note that:
CommonSettings.setSkipEmptyLines(boolean)Format.setComment(char) to '\0'context - A contextual object with information and controls over the current state of the parsing processpublic void processEnded(T context)
Processor It will always be called by the parser: in case of errors, if the end of the input us reached, or if the user stopped the process manually using Context.stop().
processEnded in interface Processor<T extends Context>context - A contextual object with information and controls over the state of the parsing processpublic boolean preventColumnReordering()
ColumnOrderDependentpreventColumnReordering in interface ColumnOrderDependentCopyright © 2019 Univocity Software Pty Ltd. All rights reserved.