uk.ac.starlink.table
Class JoinStarTable

java.lang.Object
  extended by uk.ac.starlink.table.AbstractStarTable
      extended by uk.ac.starlink.table.JoinStarTable
All Implemented Interfaces:
StarTable

public class JoinStarTable
extends AbstractStarTable

Joins a number of tables to produce a single combined table. The result consists of all the constituent tables side by side, so has a number of columns equal to the sum of the numbers of columns in all the constituent tables. The nth row of this table is composed by appending the nth rows of all the constituent tables together in sequence. The number of rows is equal to the smallest of all the number of rows in the constituent tables (typically they will all have the same number of rows). Random access is only available if it is available in all the constituent tables.

While this table is active, the columns that the constituent tables had at the time of its construction shouldn't change their characteristics in incompatible ways or disappear. It's OK to add new columns though.


Constructor Summary
JoinStarTable(StarTable[] tables)
          Constructs a new JoinStarTable from a list of constituent tables.
JoinStarTable(StarTable[] tables, JoinFixAction[] fixCols)
          Constructs a new JoinStarTable from a list of constituent tables, optionally renaming duplicated column names.
 
Method Summary
 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.
 java.util.List getTables()
          Returns an unmodifiable list of the constituent tables providing the base data for this join table.
 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

JoinStarTable

public JoinStarTable(StarTable[] tables,
                     JoinFixAction[] fixCols)
Constructs a new JoinStarTable from a list of constituent tables, optionally renaming duplicated column names.

Parameters:
tables - array of constituent table objects providing the data and metadata for a new joined table
fixCols - actions to be taken in modifying column names from the originals (may be null for no action)

JoinStarTable

public JoinStarTable(StarTable[] tables)
Constructs a new JoinStarTable from a list of constituent tables. No column renaming is done.

Parameters:
tables - array of constituent table objects providing the data and metadata for a new joined table
Method Detail

getTables

public java.util.List getTables()
Returns an unmodifiable list of the constituent tables providing the base data for this join table.

Returns:
list of tables

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

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

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

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

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

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

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