uk.ac.starlink.table
Class CalcStarTable<C>

java.lang.Object
  extended by uk.ac.starlink.table.AbstractStarTable
      extended by uk.ac.starlink.table.CalcStarTable<C>
Type Parameters:
C - type of object that is calculated from each row of the input table, and supplies values to the corresponding row of this table
All Implemented Interfaces:
StarTable

public abstract class CalcStarTable<C>
extends AbstractStarTable

StarTable implementation whose column values are derived from some single calculation on the column values of another table. The idea is that the cell values in a given row of an instance of this table are cheaply-obtained members of an object which is obtained by a potentially expensive calculation on the cell values of the corresponding row in the other table.


Nested Class Summary
static interface CalcStarTable.Col<C,T>
          Defines a column for use with this table implementation.
 
Constructor Summary
CalcStarTable(StarTable base, CalcStarTable.Col<C,?>[] columns)
          Constructor.
 
Method Summary
abstract  C createCalculation(long irow)
          Creates the calculation object for the given row of the input table.
abstract  C createCalculation(RowSequence baseSeq)
          Creates the calculation object for the current row of the input table.
 StarTable getBaseTable()
          Returns the input table on which this table is based.
 java.lang.Object getCell(long irow, int icol)
          The AbstractStarTable implementation of this method throws an UnsupportedOperationException, since unless otherwise provided there is no random access.
 int getColumnCount()
          Returns the number of columns in this table.
 ColumnInfo getColumnInfo(int icol)
          Returns the object describing the data in a given column.
 java.lang.Object[] getRow(long irow)
          The AbstractStarTable implementation of this method constructs a row by repeated invocation of AbstractStarTable.getCell(long, int).
 long getRowCount()
          Returns the number of rows in this table, if known.
 RowSequence getRowSequence()
          Returns an object which can iterate over all the rows in the table sequentially.
 boolean isRandom()
          The AbstractStarTable implementation of this method returns false.
 
Methods inherited from class uk.ac.starlink.table.AbstractStarTable
checkedLongToInt, getColumnAuxDataInfos, getName, getParameterByName, getParameters, getURL, setName, setParameter, setParameters, setURL
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CalcStarTable

public CalcStarTable(StarTable base,
                     CalcStarTable.Col<C,?>[] columns)
Constructor.

Parameters:
base - input table
columns - array defining the columns of this table
Method Detail

createCalculation

public abstract C createCalculation(RowSequence baseSeq)
                             throws java.io.IOException
Creates the calculation object for the current row of the input table.

Parameters:
baseSeq - row sequence of base table positioned at row of interest
Returns:
calculation object corresponding to baseSeq current row
Throws:
java.io.IOException

createCalculation

public abstract C createCalculation(long irow)
                             throws java.io.IOException
Creates the calculation object for the given row of the input table. Only works for random-access tables.

Parameters:
irow - row index for which calculation is required
Returns:
calculation object for input table row irow
Throws:
java.io.IOException

getBaseTable

public StarTable getBaseTable()
Returns the input table on which this table is based.

Returns:
base table

getColumnInfo

public ColumnInfo getColumnInfo(int icol)
Description copied from interface: StarTable
Returns the object describing the data in a given column.

Specified by:
getColumnInfo in interface StarTable
Specified by:
getColumnInfo in class AbstractStarTable
Parameters:
icol - the column for which header information is required
Returns:
a ValueInfo object for column icol

getColumnCount

public int getColumnCount()
Description copied from interface: StarTable
Returns the number of columns in this table.

Specified by:
getColumnCount in interface StarTable
Specified by:
getColumnCount in class AbstractStarTable
Returns:
the number of columns

getRowCount

public long getRowCount()
Description copied from interface: StarTable
Returns the number of rows in this table, if known. If the number of rows cannot be (easily) determined, a value of -1 will be returned.

Specified by:
getRowCount in interface StarTable
Specified by:
getRowCount in class AbstractStarTable
Returns:
the number of rows, or -1

isRandom

public boolean isRandom()
Description copied from class: AbstractStarTable
The AbstractStarTable implementation of this method returns false.

Specified by:
isRandom in interface StarTable
Overrides:
isRandom in class AbstractStarTable
Returns:
true if table random access methods are available

getRowSequence

public RowSequence getRowSequence()
                           throws java.io.IOException
Description copied from interface: StarTable
Returns an object which can iterate over all the rows in the table sequentially.

Specified by:
getRowSequence in interface StarTable
Specified by:
getRowSequence in class AbstractStarTable
Returns:
an object providing sequential access to the table data
Throws:
java.io.IOException - if there is an error providing access

getRow

public java.lang.Object[] getRow(long irow)
                          throws java.io.IOException
Description copied from class: AbstractStarTable
The AbstractStarTable implementation of this method constructs a row by repeated invocation of AbstractStarTable.getCell(long, int).

Specified by:
getRow in interface StarTable
Overrides:
getRow in class AbstractStarTable
Parameters:
irow - the index of the row to retrieve
Returns:
an array of the objects in each cell in row irow
Throws:
java.io.IOException - if there is an error reading the data

getCell

public java.lang.Object getCell(long irow,
                                int icol)
                         throws java.io.IOException
Description copied from class: AbstractStarTable
The AbstractStarTable implementation of this method throws an UnsupportedOperationException, since unless otherwise provided there is no random access.

Specified by:
getCell in interface StarTable
Overrides:
getCell in class AbstractStarTable
Parameters:
irow - the index of the cell's row
icol - the index of the cell's column
Returns:
the contents of this cell
Throws:
java.io.IOException - if there is an error reading the data

Copyright © 2004 CLRC: Central Laboratory of the Research Councils. All rights reserved.