Package uk.ac.starlink.ttools.filter
Class CalculatorColumnSupplement
- java.lang.Object
-
- uk.ac.starlink.ttools.filter.CalculatorColumnSupplement
-
- All Implemented Interfaces:
ColumnSupplement
public abstract class CalculatorColumnSupplement extends java.lang.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 thecalculate(java.lang.Object[])
method.- Since:
- 2 Apr 2012
- Author:
- Mark Taylor
-
-
Constructor Summary
Constructors Constructor Description CalculatorColumnSupplement(ColumnSupplement baseSup, uk.ac.starlink.table.ColumnInfo[] outColInfos)
Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract java.lang.Object[]
calculate(java.lang.Object[] inRow)
Performs the calculations which populate the columns of this table.SupplementData
createSupplementData(uk.ac.starlink.table.RowData rdata)
Returns a new accessor for the values in the columns defined by this object.java.lang.Object
getCell(long irow, int icol)
Random access read of a cell defined by this object.int
getColumnCount()
Returns the number of columns defined by this object.uk.ac.starlink.table.ColumnInfo
getColumnInfo(int icol)
Returns the column metadata object for a given column.static double
getDouble(java.lang.Object value)
Utility method to turn an Object into a floating point value.java.lang.Object[]
getRow(long irow)
Random access read of a row defined by this object.
-
-
-
Constructor Detail
-
CalculatorColumnSupplement
public CalculatorColumnSupplement(ColumnSupplement baseSup, uk.ac.starlink.table.ColumnInfo[] outColInfos)
Constructor.- Parameters:
baseSup
- base supplementoutColInfos
- column metadata for the supplementary columns (length defines column count)
-
-
Method Detail
-
calculate
protected abstract java.lang.Object[] calculate(java.lang.Object[] inRow) throws java.io.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:
java.io.IOException
-
getColumnCount
public int getColumnCount()
Description copied from interface:ColumnSupplement
Returns the number of columns defined by this object.- Specified by:
getColumnCount
in interfaceColumnSupplement
- 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 interfaceColumnSupplement
- Parameters:
icol
- column index within this object- Returns:
- column metadata for the icol'th column defined by this object
-
getRow
public java.lang.Object[] getRow(long irow) throws java.io.IOException
Description copied from interface:ColumnSupplement
Random access read of a row defined by this object.- Specified by:
getRow
in interfaceColumnSupplement
- Parameters:
irow
- row index- Returns:
- array of cell contents for all the cells in this row
- Throws:
java.io.IOException
-
getCell
public java.lang.Object getCell(long irow, int icol) throws java.io.IOException
Description copied from interface:ColumnSupplement
Random access read of a cell defined by this object.- Specified by:
getCell
in interfaceColumnSupplement
- Parameters:
irow
- row indexicol
- column index- Returns:
- cell content
- Throws:
java.io.IOException
-
createSupplementData
public SupplementData createSupplementData(uk.ac.starlink.table.RowData rdata) throws java.io.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 interfaceColumnSupplement
- Parameters:
rdata
- row accessor providing data from the host table- Returns:
- accessor over row data from supplementary columns
- Throws:
java.io.IOException
-
getDouble
public static double getDouble(java.lang.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
-
-