Package adams.flow.transformer
Class SpreadSheetVariableRowIterator
- java.lang.Object
-
- adams.core.logging.LoggingObject
-
- adams.core.logging.CustomLoggingLevelObject
-
- adams.core.option.AbstractOptionHandler
-
- adams.flow.core.AbstractActor
-
- adams.flow.transformer.AbstractTransformer
-
- adams.flow.transformer.SpreadSheetVariableRowIterator
-
- All Implemented Interfaces:
AdditionalInformationHandler
,CleanUpHandler
,Destroyable
,GlobalInfoSupporter
,LenientModeSupporter
,LoggingLevelHandler
,LoggingSupporter
,OptionHandler
,QuickInfoSupporter
,ShallowCopySupporter<Actor>
,SizeOfHandler
,Stoppable
,StoppableWithFeedback
,VariablesInspectionHandler
,VariableChangeListener
,Actor
,ErrorHandler
,InputConsumer
,OutputProducer
,Serializable
,Comparable
public class SpreadSheetVariableRowIterator extends AbstractTransformer implements LenientModeSupporter
Iterates through a defined range of rows. In each iteration the cell values of the defined column range are mapped to variables.
By default the (cleaned up) header names of the columns are used as variable names. To avoid name clashes, a prefix can be chosen for the variable names.
The subset of columns of the row in the current iteration can be output as spreadsheet well (computationally expensive). By default, the complete spreadsheet is forwarded as is.
Input/output:
- accepts:
adams.data.spreadsheet.SpreadSheet
- generates:
adams.data.spreadsheet.SpreadSheet
-logging-level <OFF|SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST> (property: loggingLevel) The logging level for outputting errors and debugging output. default: WARNING
-name <java.lang.String> (property: name) The name of the actor. default: SpreadSheetVariableRowIterator
-annotation <adams.core.base.BaseAnnotation> (property: annotations) The annotations to attach to this actor. default:
-skip <boolean> (property: skip) If set to true, transformation is skipped and the input token is just forwarded as it is. default: false
-stop-flow-on-error <boolean> (property: stopFlowOnError) If set to true, the flow gets stopped in case this actor encounters an error; useful for critical actors. default: false
-rows <adams.core.Range> (property: rows) The rows to retrieve the values from; A range is a comma-separated list of single 1-based indices or sub-ranges of indices ('start-end'); 'inv(.. .)' inverts the range '...'; column names (case-sensitive) as well as the following placeholders can be used: first, second, third, last_2, last_1, last default: first-last example: A range is a comma-separated list of single 1-based indices or sub-ranges of indices ('start-end'); 'inv(...)' inverts the range '...'; the following placeholders can be used as well: first, second, third, last_2, last_1, last
-columns <adams.data.spreadsheet.SpreadSheetColumnRange> (property: columns) The columns to retrieve the values from; A range is a comma-separated list of single 1-based indices or sub-ranges of indices ('start-end'); 'inv(.. .)' inverts the range '...'; column names (case-sensitive) as well as the following placeholders can be used: first, second, third, last_2, last_1, last default: first-last example: A range is a comma-separated list of single 1-based indices or sub-ranges of indices ('start-end'); 'inv(...)' inverts the range '...'; column names (case-sensitive) as well as the following placeholders can be used: first, second, third, last_2, last_1, last
-variable-prefix <java.lang.String> (property: variablePrefix) The prefix to prepend the header names with to make up the variable name. default:
-missing-value <java.lang.String> (property: missingValue) The value to use as variable value in case of missing cells. default:
-output-modified <boolean> (property: outputModified) If enabled, the modified spreadsheet (current row with subset of columns ) is output instead of the full dataset (computationally expensive). default: false
-lenient <boolean> (property: lenient) If enabled, then no error message is generated if no rows are found. default: false
- Author:
- fracpete (fracpete at waikato dot ac dot nz)
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static String
BACKUP_COLUMNS
the column indices.static String
BACKUP_QUEUE
the key for storing the queue of rows to process.static String
BACKUP_SHEET
the underlying spreadsheet.protected int[]
m_ColumnIndices
the column indices.protected SpreadSheetColumnRange
m_Columns
the range of columns to use.protected boolean
m_Lenient
whether to suppress the error message if no rows selected.protected String
m_MissingValue
the value to use for missing cells.protected boolean
m_OutputModified
whether to output the modified spreadsheet.protected ArrayList<Integer>
m_Queue
the rows to iterate.protected Range
m_Rows
the range of rows to use.protected SpreadSheet
m_Sheet
the underlying sheet.protected String
m_VariablePrefix
the prefix for the variables.-
Fields inherited from class adams.flow.transformer.AbstractTransformer
BACKUP_INPUT, BACKUP_OUTPUT, m_InputToken, m_OutputToken
-
Fields inherited from class adams.flow.core.AbstractActor
m_Annotations, m_BackupState, m_DetectedObjectVariables, m_DetectedVariables, m_ErrorHandler, m_Executed, m_Executing, m_ExecutionListeningSupporter, m_FullName, m_LoggingPrefix, m_Name, m_Parent, m_ScopeHandler, m_Self, m_Silent, m_Skip, m_StopFlowOnError, m_StopMessage, m_Stopped, m_StorageHandler, m_VariablesUpdated
-
Fields inherited from class adams.core.option.AbstractOptionHandler
m_OptionManager
-
Fields inherited from class adams.core.logging.LoggingObject
m_Logger, m_LoggingIsEnabled, m_LoggingLevel
-
Fields inherited from interface adams.flow.core.Actor
FILE_EXTENSION, FILE_EXTENSION_GZ
-
-
Constructor Summary
Constructors Constructor Description SpreadSheetVariableRowIterator()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Class[]
accepts()
Returns the class that the consumer accepts.protected Hashtable<String,Object>
backupState()
Backs up the current state of the actor before update the variables.void
cleanUp()
Cleans up after the execution has finished.String
columnsTipText()
Returns the tip text for this property.void
defineOptions()
Adds options to the internal list of options.protected String
doExecute()
Executes the flow item.Class[]
generates()
Returns the class of objects that it generates.SpreadSheetColumnRange
getColumns()
Returns the columns to retrieve the values from.boolean
getLenient()
Returns whether to suppress error message if no rows found.String
getMissingValue()
Returns the value to use for missing cells.boolean
getOutputModified()
Returns whether to output the modified spreadsheet (current row, subset of columns) instead of the full one.String
getQuickInfo()
Returns a quick info about the actor, which will be displayed in the GUI.Range
getRows()
Returns the rows to retrieve the values from.String
getVariablePrefix()
Returns the prefix for the variables (prefix + header).String
globalInfo()
Returns a string describing the object.boolean
hasPendingOutput()
Checks whether there is pending output to be collected after executing the flow item.protected void
initialize()
Initializes the members.String
lenientTipText()
Returns the tip text for this property.String
missingValueTipText()
Returns the tip text for this property.Token
output()
Returns the generated token.String
outputModifiedTipText()
Returns the tip text for this property.protected void
pruneBackup()
Removes entries from the backup.protected void
reset()
Resets the actor.protected void
restoreState(Hashtable<String,Object> state)
Restores the state of the actor before the variables got updated.String
rowsTipText()
Returns the tip text for this property.void
setColumns(SpreadSheetColumnRange value)
Sets the columns to retrieve the values from.void
setLenient(boolean value)
Sets whether to suppress error message if no rows found.void
setMissingValue(String value)
Sets the value to use for missing cells.void
setOutputModified(boolean value)
Sets whether to output the modified spreadsheet (current row, subset of columns) instead of the full one.void
setRows(Range value)
Sets the rows to retrieve the values from.void
setVariablePrefix(String value)
Sets the prefix for the variables (prefix + header).String
variablePrefixTipText()
Returns the tip text for this property.void
wrapUp()
Frees up memory.-
Methods inherited from class adams.flow.transformer.AbstractTransformer
currentInput, execute, hasInput, input, postExecute
-
Methods inherited from class adams.flow.core.AbstractActor
annotationsTipText, canInspectOptions, canPerformSetUpCheck, compareTo, configureLogger, destroy, equals, finalUpdateVariables, findVariables, findVariables, forceVariables, forCommandLine, forName, forName, getAdditionalInformation, getAnnotations, getDefaultName, getDetectedVariables, getErrorHandler, getFlowActors, getFlowExecutionListeningSupporter, getFullName, getName, getNextSibling, getParent, getParentComponent, getPreviousSibling, getRoot, getScopeHandler, getSilent, getSkip, getStopFlowOnError, getStopMessage, getStorageHandler, getVariables, handleError, handleException, hasErrorHandler, hasStopMessage, index, isBackedUp, isExecuted, isExecuting, isFinished, isHeadless, isStopped, nameTipText, performSetUpChecks, performVariableChecks, preExecute, pruneBackup, setAnnotations, setErrorHandler, setName, setParent, setSilent, setSkip, setStopFlowOnError, setUp, setVariables, shallowCopy, shallowCopy, silentTipText, sizeOf, skipTipText, stopExecution, stopExecution, stopFlowOnErrorTipText, updateDetectedVariables, updatePrefix, updateVariables, variableChanged
-
Methods inherited from class adams.core.option.AbstractOptionHandler
cleanUpOptions, finishInit, getDefaultLoggingLevel, getOptionManager, loggingLevelTipText, newOptionManager, setLoggingLevel, toCommandLine, toString
-
Methods inherited from class adams.core.logging.LoggingObject
getLogger, getLoggingLevel, initializeLogging, isLoggingEnabled
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface adams.flow.core.Actor
compareTo, destroy, equals, findVariables, getAnnotations, getDefaultName, getDetectedVariables, getErrorHandler, getFlowExecutionListeningSupporter, getFullName, getName, getNextSibling, getParent, getParentComponent, getPreviousSibling, getRoot, getScopeHandler, getSilent, getSkip, getStopFlowOnError, getStopMessage, getStorageHandler, getVariables, handleError, hasErrorHandler, hasStopMessage, index, isExecuted, isFinished, isHeadless, isStopped, setAnnotations, setErrorHandler, setName, setParent, setSilent, setSkip, setStopFlowOnError, setUp, setVariables, shallowCopy, shallowCopy, sizeOf, stopExecution, stopExecution, toCommandLine, variableChanged
-
Methods inherited from interface adams.core.AdditionalInformationHandler
getAdditionalInformation
-
Methods inherited from interface adams.core.logging.LoggingLevelHandler
getLoggingLevel, setLoggingLevel
-
Methods inherited from interface adams.core.logging.LoggingSupporter
getLogger, isLoggingEnabled
-
Methods inherited from interface adams.core.option.OptionHandler
cleanUpOptions, getOptionManager
-
Methods inherited from interface adams.core.VariablesInspectionHandler
canInspectOptions
-
-
-
-
Field Detail
-
BACKUP_QUEUE
public static final String BACKUP_QUEUE
the key for storing the queue of rows to process.- See Also:
- Constant Field Values
-
BACKUP_SHEET
public static final String BACKUP_SHEET
the underlying spreadsheet.- See Also:
- Constant Field Values
-
BACKUP_COLUMNS
public static final String BACKUP_COLUMNS
the column indices.- See Also:
- Constant Field Values
-
m_Columns
protected SpreadSheetColumnRange m_Columns
the range of columns to use.
-
m_Rows
protected Range m_Rows
the range of rows to use.
-
m_VariablePrefix
protected String m_VariablePrefix
the prefix for the variables.
-
m_MissingValue
protected String m_MissingValue
the value to use for missing cells.
-
m_Sheet
protected SpreadSheet m_Sheet
the underlying sheet.
-
m_ColumnIndices
protected int[] m_ColumnIndices
the column indices.
-
m_OutputModified
protected boolean m_OutputModified
whether to output the modified spreadsheet.
-
m_Lenient
protected boolean m_Lenient
whether to suppress the error message if no rows selected.
-
-
Method Detail
-
globalInfo
public String globalInfo()
Returns a string describing the object.- Specified by:
globalInfo
in interfaceGlobalInfoSupporter
- Specified by:
globalInfo
in classAbstractOptionHandler
- Returns:
- a description suitable for displaying in the gui
-
defineOptions
public void defineOptions()
Adds options to the internal list of options.- Specified by:
defineOptions
in interfaceOptionHandler
- Overrides:
defineOptions
in classAbstractActor
-
initialize
protected void initialize()
Initializes the members.- Overrides:
initialize
in classAbstractActor
-
reset
protected void reset()
Resets the actor.- Overrides:
reset
in classAbstractActor
-
pruneBackup
protected void pruneBackup()
Removes entries from the backup.- Overrides:
pruneBackup
in classAbstractActor
- See Also:
AbstractActor.reset()
-
backupState
protected Hashtable<String,Object> backupState()
Backs up the current state of the actor before update the variables.- Overrides:
backupState
in classAbstractTransformer
- Returns:
- the backup
- See Also:
AbstractActor.updateVariables()
,AbstractActor.restoreState(Hashtable)
-
restoreState
protected void restoreState(Hashtable<String,Object> state)
Restores the state of the actor before the variables got updated.- Overrides:
restoreState
in classAbstractTransformer
- Parameters:
state
- the backup of the state to restore from- See Also:
AbstractActor.updateVariables()
,AbstractActor.backupState()
-
setColumns
public void setColumns(SpreadSheetColumnRange value)
Sets the columns to retrieve the values from.- Parameters:
value
- the columns
-
getColumns
public SpreadSheetColumnRange getColumns()
Returns the columns to retrieve the values from.- Returns:
- the columns
-
columnsTipText
public String columnsTipText()
Returns the tip text for this property.- Returns:
- tip text for this property suitable for displaying in the GUI or for listing the options.
-
setRows
public void setRows(Range value)
Sets the rows to retrieve the values from.- Parameters:
value
- the rows
-
getRows
public Range getRows()
Returns the rows to retrieve the values from.- Returns:
- the rows
-
rowsTipText
public String rowsTipText()
Returns the tip text for this property.- Returns:
- tip text for this property suitable for displaying in the GUI or for listing the options.
-
setVariablePrefix
public void setVariablePrefix(String value)
Sets the prefix for the variables (prefix + header).- Parameters:
value
- the prefix
-
getVariablePrefix
public String getVariablePrefix()
Returns the prefix for the variables (prefix + header).- Returns:
- the prefix
-
variablePrefixTipText
public String variablePrefixTipText()
Returns the tip text for this property.- Returns:
- tip text for this property suitable for displaying in the GUI or for listing the options.
-
setMissingValue
public void setMissingValue(String value)
Sets the value to use for missing cells.- Parameters:
value
- the value for missing cells
-
getMissingValue
public String getMissingValue()
Returns the value to use for missing cells.- Returns:
- the value for missing cells
-
missingValueTipText
public String missingValueTipText()
Returns the tip text for this property.- Returns:
- tip text for this property suitable for displaying in the GUI or for listing the options.
-
setOutputModified
public void setOutputModified(boolean value)
Sets whether to output the modified spreadsheet (current row, subset of columns) instead of the full one.- Parameters:
value
- true if to output modified spreadsheet
-
getOutputModified
public boolean getOutputModified()
Returns whether to output the modified spreadsheet (current row, subset of columns) instead of the full one.- Returns:
- true if to output modified spreadsheet
-
outputModifiedTipText
public String outputModifiedTipText()
Returns the tip text for this property.- Returns:
- tip text for this property suitable for displaying in the GUI or for listing the options.
-
setLenient
public void setLenient(boolean value)
Sets whether to suppress error message if no rows found.- Specified by:
setLenient
in interfaceLenientModeSupporter
- Parameters:
value
- true if to suppress
-
getLenient
public boolean getLenient()
Returns whether to suppress error message if no rows found.- Specified by:
getLenient
in interfaceLenientModeSupporter
- Returns:
- true if to suppress
-
lenientTipText
public String lenientTipText()
Returns the tip text for this property.- Specified by:
lenientTipText
in interfaceLenientModeSupporter
- Returns:
- tip text for this property suitable for displaying in the GUI or for listing the options.
-
getQuickInfo
public String getQuickInfo()
Returns a quick info about the actor, which will be displayed in the GUI.- Specified by:
getQuickInfo
in interfaceActor
- Specified by:
getQuickInfo
in interfaceQuickInfoSupporter
- Overrides:
getQuickInfo
in classAbstractActor
- Returns:
- null if no info available, otherwise short string
-
accepts
public Class[] accepts()
Returns the class that the consumer accepts.- Specified by:
accepts
in interfaceInputConsumer
- Returns:
- the Class of objects that can be processed
-
generates
public Class[] generates()
Returns the class of objects that it generates.- Specified by:
generates
in interfaceOutputProducer
- Returns:
- the Class of the generated tokens
-
doExecute
protected String doExecute()
Executes the flow item.- Specified by:
doExecute
in classAbstractActor
- Returns:
- null if everything is fine, otherwise error message
-
hasPendingOutput
public boolean hasPendingOutput()
Checks whether there is pending output to be collected after executing the flow item.- Specified by:
hasPendingOutput
in interfaceOutputProducer
- Overrides:
hasPendingOutput
in classAbstractTransformer
- Returns:
- true if there is pending output
-
output
public Token output()
Returns the generated token.- Specified by:
output
in interfaceOutputProducer
- Overrides:
output
in classAbstractTransformer
- Returns:
- the generated token
-
wrapUp
public void wrapUp()
Frees up memory.- Specified by:
wrapUp
in interfaceActor
- Overrides:
wrapUp
in classAbstractTransformer
-
cleanUp
public void cleanUp()
Cleans up after the execution has finished. Also removes graphical components.- Specified by:
cleanUp
in interfaceActor
- Specified by:
cleanUp
in interfaceCleanUpHandler
- Overrides:
cleanUp
in classAbstractActor
-
-