Class 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:
    java.io.Closeable, java.lang.AutoCloseable, 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.
    • 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​(RowData baseRow)
                                     throws java.io.IOException
        Creates the calculation object for the current row of the input table.
        Parameters:
        baseRow - row from base table
        Returns:
        calculation object corresponding to baseRow
        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
      • 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. Each such returned object is safe for use within a single thread, but not in general from multiple threads concurrently.
        Specified by:
        getRowSequence in interface StarTable
        Specified by:
        getRowSequence in class AbstractStarTable
        Returns:
        new RowSequence
        Throws:
        java.io.IOException - if there is an error providing access
      • getRowAccess

        public RowAccess getRowAccess()
                               throws java.io.IOException
        Description copied from interface: StarTable
        Returns an object which can provide random access to this table's data, if random access is implemented. Each such returned object is safe for use within a single thread, but not in general from multiple threads concurrently.
        Specified by:
        getRowAccess in interface StarTable
        Overrides:
        getRowAccess in class AbstractStarTable
        Returns:
        new RowAccess
        Throws:
        java.io.IOException - if there is an error setting up 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