Class SpreadSheetDifference

  • All Implemented Interfaces:
    AdditionalInformationHandler, CleanUpHandler, Destroyable, GlobalInfoSupporter, LoggingLevelHandler, LoggingSupporter, OptionHandler, QuickInfoSupporter, ShallowCopySupporter<Actor>, SizeOfHandler, Stoppable, StoppableWithFeedback, VariablesInspectionHandler, 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: 
     
    Author:
    fracpete (fracpete at waikato dot ac dot nz)
    See Also:
    Serialized Form
    • Field Detail

      • m_KeyColumns

        protected SpreadSheetColumnRange 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

      • setKeyColumns

        public void setKeyColumns​(SpreadSheetColumnRange value)
        Sets the colums that identify a row, use empty string to simply use row index.
        Parameters:
        value - the range
      • getKeyColumns

        public SpreadSheetColumnRange 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