Class CalculatorColumnSupplement

java.lang.Object
uk.ac.starlink.ttools.filter.CalculatorColumnSupplement
All Implemented Interfaces:
ColumnSupplement

public abstract class CalculatorColumnSupplement extends Object implements ColumnSupplement
ColumnSupplement whose columns are derived by calculating values based on all the columns of another table. To generate any of the columns of this table, a whole row of the input supplement must be read. Concrete implementations of this abstract class must implement the calculate(java.lang.Object[]) method.
Since:
2 Apr 2012
Author:
Mark Taylor
  • Constructor Details

    • CalculatorColumnSupplement

      public CalculatorColumnSupplement(ColumnSupplement baseSup, uk.ac.starlink.table.ColumnInfo[] outColInfos)
      Constructor.
      Parameters:
      baseSup - base supplement
      outColInfos - column metadata for the supplementary columns (length defines column count)
  • Method Details

    • calculate

      protected abstract Object[] calculate(Object[] inRow) throws IOException
      Performs the calculations which populate the columns of this table. The input is a row of the base table, and the output is the row of this table.

      The implementation must return a new array each time, not repopulate the same Object[] array object.

      Parameters:
      inRow - input column values
      Returns:
      output column values (same size as column count)
      Throws:
      IOException
    • getColumnCount

      public int getColumnCount()
      Description copied from interface: ColumnSupplement
      Returns the number of columns defined by this object.
      Specified by:
      getColumnCount in interface ColumnSupplement
      Returns:
      number of columns
    • getColumnInfo

      public uk.ac.starlink.table.ColumnInfo getColumnInfo(int icol)
      Description copied from interface: ColumnSupplement
      Returns the column metadata object for a given column.
      Specified by:
      getColumnInfo in interface ColumnSupplement
      Parameters:
      icol - column index within this object
      Returns:
      column metadata for the icol'th column defined by this object
    • getRow

      public Object[] getRow(long irow) throws IOException
      Description copied from interface: ColumnSupplement
      Random access read of a row defined by this object.
      Specified by:
      getRow in interface ColumnSupplement
      Parameters:
      irow - row index
      Returns:
      array of cell contents for all the cells in this row
      Throws:
      IOException
    • getCell

      public Object getCell(long irow, int icol) throws IOException
      Description copied from interface: ColumnSupplement
      Random access read of a cell defined by this object.
      Specified by:
      getCell in interface ColumnSupplement
      Parameters:
      irow - row index
      icol - column index
      Returns:
      cell content
      Throws:
      IOException
    • createSupplementData

      public SupplementData createSupplementData(uk.ac.starlink.table.RowData rdata) throws IOException
      Description copied from interface: ColumnSupplement
      Returns a new accessor for the values in the columns defined by this object. The supplied row object must be from an appropriate host table; if not, behaviour is undefined.
      Specified by:
      createSupplementData in interface ColumnSupplement
      Parameters:
      rdata - row accessor providing data from the host table
      Returns:
      accessor over row data from supplementary columns
      Throws:
      IOException
    • getDouble

      public static double getDouble(Object value)
      Utility method to turn an Object into a floating point value. If the submitted value is not a Number (including if it is null), NaN will be returned.
      Parameters:
      value - object value
      Returns:
      floating point value