adams.flow.transformer
Class SpreadSheetDifference

java.lang.Object
  extended by adams.core.ConsoleObject
      extended by adams.core.option.AbstractOptionHandler
          extended by adams.flow.core.AbstractActor
              extended by adams.flow.transformer.AbstractTransformer
                  extended by adams.flow.transformer.SpreadSheetDifference
All Implemented Interfaces:
AdditionalInformationHandler, CleanUpHandler, Debuggable, DebugOutputHandler, Destroyable, OptionHandler, QuickInfoSupporter, ShallowCopySupporter<AbstractActor>, SizeOfHandler, Stoppable, VariableChangeListener, Actor, ErrorHandler, InputConsumer, OutputProducer, Serializable, Comparable

public class SpreadSheetDifference
extends AbstractTransformer

Computes the difference of the numeric cells between two spreadsheets.
The values of the second spreadsheet are subtracted from the first one.
If no 'key' columns are defined, the current order of rows is used for comparison.

Input/output:
- accepts:
   adams.data.spreadsheet.SpreadSheet[]
- generates:
   adams.data.spreadsheet.SpreadSheet

Valid options are:

-D <int> (property: debugLevel)
    The greater the number the more additional info the scheme may output to 
    the console (0 = off).
    default: 0
    minimum: 0
 
-name <java.lang.String> (property: name)
    The name of the actor.
    default: SpreadSheetDifference
 
-annotation <adams.core.base.BaseText> (property: annotations)
    The annotations to attach to this actor.
    default: 
 
-skip (property: skip)
    If set to true, transformation is skipped and the input token is just forwarded 
    as it is.
 
-stop-flow-on-error (property: stopFlowOnError)
    If set to true, the flow gets stopped in case this actor encounters an error;
     useful for critical actors.
 
-key-columns <adams.core.Range> (property: keyColumns)
    The columns to use as keys for identifying rows in the spreadsheets, if 
    empty the row index is used instead; 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
    default: 
 

Version:
$Revision: 6306 $
Author:
fracpete (fracpete at waikato dot ac dot nz)
See Also:
Serialized Form

Field Summary
protected  int[] m_ColIndices
          the column indices to use.
protected  Range m_KeyColumns
          the range of column indices to use as key for identifying a row.
protected  RowIdentifier[] m_Rows
          for locating the rows.
 
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_Headless, m_Name, m_Parent, m_Root, m_Self, m_Skip, m_StopFlowOnError, m_StopMessage, m_Stopped, m_StorageHandler, m_VariablesUpdated
 
Fields inherited from class adams.core.option.AbstractOptionHandler
m_DebugLevel, m_OptionManager
 
Fields inherited from interface adams.flow.core.Actor
FILE_EXTENSION, FILE_EXTENSION_GZ
 
Constructor Summary
SpreadSheetDifference()
           
 
Method Summary
 Class[] accepts()
          Returns the class that the consumer accepts.
 void defineOptions()
          Adds options to the internal list of options.
protected  Row difference(SpreadSheet output, Row row1, Row row2)
          Computes the difference between the two rows: actual difference is computed for numeric cells.
protected  String doExecute()
          Executes the flow item.
protected  void generateOutputRow(SpreadSheet output, Row rowDiff)
          Generates a row and appends it to the output.
 Class[] generates()
          Returns the class of objects that it generates.
 Range getKeyColumns()
          Returns the colums that identify a row, use empty string to simply use row index
 String getQuickInfo()
          Returns a quick info about the actor, which will be displayed in the GUI.
 String globalInfo()
          Returns a string describing the object.
protected  void initialize()
           
protected  void initRowLookup(SpreadSheet[] sheets)
          Initializes the row lookup, if necessary.
 String keyColumnsTipText()
          Returns the tip text for this property.
 void setKeyColumns(Range value)
          Sets the colums that identify a row, use empty string to simply use row index.
 
Methods inherited from class adams.flow.transformer.AbstractTransformer
backupState, execute, hasPendingOutput, input, output, postExecute, reset, restoreState, wrapUp
 
Methods inherited from class adams.flow.core.AbstractActor
annotationsTipText, canInspectOptions, canPerformSetUpCheck, cleanUp, compareTo, debug, destroy, equals, findVariables, findVariables, findVariables, forceVariables, forCommandLine, forName, getAdditionalInformation, getAnnotations, getDefaultName, getDetectedVariables, getErrorHandler, getFlowActors, getFlowExecutionListeningSupporter, getFullName, getName, getNextSibling, getParent, getPreviousSibling, getRoot, getSkip, getStopFlowOnError, getStopMessage, getStorageHandler, getVariables, handleError, handleException, hasErrorHandler, hasStopMessage, index, isBackedUp, isExecuted, isExecuting, isFinished, isHeadless, isStopped, nameTipText, performSetUpChecks, preExecute, pruneBackup, pruneBackup, setAnnotations, setErrorHandler, setHeadless, setName, setParent, setSkip, setStopFlowOnError, setUp, setVariables, shallowCopy, shallowCopy, sizeOf, skipTipText, stopExecution, stopExecution, stopFlowOnErrorTipText, updateDetectedVariables, updatePrefix, updateVariables, variableChanged
 
Methods inherited from class adams.core.option.AbstractOptionHandler
cleanUpOptions, debug, debugLevelTipText, finishInit, getDebugLevel, getOptionManager, isDebugOn, newOptionManager, setDebugLevel, toCommandLine, toString
 
Methods inherited from class adams.core.ConsoleObject
getDebugging, getSystemErr, getSystemOut
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface adams.flow.core.Actor
cleanUp, compareTo, debug, destroy, equals, findVariables, getAnnotations, getDefaultName, getDetectedVariables, getErrorHandler, getFlowExecutionListeningSupporter, getFullName, getName, getNextSibling, getParent, getPreviousSibling, getRoot, getSkip, getStopFlowOnError, getStopMessage, getStorageHandler, getVariables, handleError, hasErrorHandler, hasStopMessage, index, isExecuted, isFinished, isHeadless, isStopped, setAnnotations, setErrorHandler, setHeadless, setName, setParent, setSkip, setStopFlowOnError, setUp, setVariables, sizeOf, stopExecution, stopExecution, variableChanged
 
Methods inherited from interface adams.core.AdditionalInformationHandler
getAdditionalInformation
 
Methods inherited from interface adams.core.option.OptionHandler
cleanUpOptions, getOptionManager
 

Field Detail

m_KeyColumns

protected Range m_KeyColumns
the range of column indices to use as key for identifying a row.


m_Rows

protected RowIdentifier[] m_Rows
for locating the rows.


m_ColIndices

protected int[] m_ColIndices
the column indices to use.

Constructor Detail

SpreadSheetDifference

public SpreadSheetDifference()
Method Detail

globalInfo

public String globalInfo()
Returns a string describing the object.

Specified by:
globalInfo in class AbstractOptionHandler
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 interface OptionHandler
Overrides:
defineOptions in class AbstractActor

initialize

protected void initialize()
Overrides:
initialize in class AbstractActor

getQuickInfo

public String getQuickInfo()
Returns a quick info about the actor, which will be displayed in the GUI.

Specified by:
getQuickInfo in interface QuickInfoSupporter
Specified by:
getQuickInfo in interface Actor
Overrides:
getQuickInfo in class AbstractActor
Returns:
null if no info available, otherwise short string

setKeyColumns

public void setKeyColumns(Range value)
Sets the colums that identify a row, use empty string to simply use row index.

Parameters:
value - the range

getKeyColumns

public Range getKeyColumns()
Returns the colums that identify a row, use empty string to simply use row index

Returns:
the range

keyColumnsTipText

public String keyColumnsTipText()
Returns the tip text for this property.

Returns:
tip text for this property suitable for displaying in the GUI or for listing the options.

accepts

public Class[] accepts()
Returns the class that the consumer accepts.

Returns:
adams.core.io.SpreadSheet.class

generates

public Class[] generates()
Returns the class of objects that it generates.

Returns:
adams.core.io.SpreadSheet.class

initRowLookup

protected void initRowLookup(SpreadSheet[] sheets)
Initializes the row lookup, if necessary.

Parameters:
sheets - the sheets to generated lookup for

difference

protected Row difference(SpreadSheet output,
                         Row row1,
                         Row row2)
Computes the difference between the two rows: actual difference is computed for numeric cells. If cells are strings, then the results is a missing value in case of differing strings, otherwise the same.

Parameters:
output - the spreadsheet the new row will get added to
row1 - the row from the first sheet
row2 - the row from the second sheet
Returns:
the generated difference

generateOutputRow

protected void generateOutputRow(SpreadSheet output,
                                 Row rowDiff)
Generates a row and appends it to the output.

Parameters:
output - the spreadsheet to receive the output

doExecute

protected String doExecute()
Executes the flow item.

Specified by:
doExecute in class AbstractActor
Returns:
null if everything is fine, otherwise error message


Copyright © 2013 University of Waikato, Hamilton, NZ. All Rights Reserved.