uk.ac.starlink.table
Class ColumnStarTable

java.lang.Object
  extended by uk.ac.starlink.table.AbstractStarTable
      extended by uk.ac.starlink.table.RandomStarTable
          extended by uk.ac.starlink.table.ColumnStarTable
All Implemented Interfaces:
StarTable
Direct Known Subclasses:
ColFitsStarTable

public abstract class ColumnStarTable
extends RandomStarTable

A random-access StarTable that manages its data in columns. The data in each column is managed by a ColumnData object which can be accessed directly using the getColumnData(int) method. Columns can be added and substituted. If the columns permit it then table cells can be written to as well as read from.

Concrete subclasses of this abstract class must implement getRowCount(). If you just need a ColumnStarTable with a fixed number of rows you can use the static convenience method makeTableWithRows(long).


Field Summary
 java.util.List columns
           
 
Constructor Summary
ColumnStarTable()
          Default constructor.
ColumnStarTable(StarTable template)
          Initialises a ColumnStarTable using a template StarTable to provide per-table metadata.
 
Method Summary
 void addColumn(ColumnData coldata)
          Appends a new column to the end of this model.
 java.lang.Object getCell(long lrow, 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.
 ColumnData getColumnData(int icol)
          Returns the ColumnData object for a given column.
 ColumnInfo getColumnInfo(int icol)
          Returns the object describing the data in a given column.
abstract  long getRowCount()
          Gets the number of rows in the table (which must be applicable to all the columns).
static ColumnStarTable makeTableWithRows(long nrow)
          Convenience method to return a ColumnStarTable with a fixed number of rows.
 void setCell(long lrow, int icol, java.lang.Object value)
          Stores an object in a given cell of the table.
 void setColumn(int icol, ColumnData coldata)
          Substitutes a new column for the one which is currently in a given position.
 
Methods inherited from class uk.ac.starlink.table.RandomStarTable
getRowSequence, isRandom
 
Methods inherited from class uk.ac.starlink.table.AbstractStarTable
checkedLongToInt, getColumnAuxDataInfos, getName, getParameterByName, getParameters, getRow, getURL, setName, setParameter, setParameters, setURL
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

columns

public java.util.List columns
Constructor Detail

ColumnStarTable

public ColumnStarTable()
Default constructor.


ColumnStarTable

public ColumnStarTable(StarTable template)
Initialises a ColumnStarTable using a template StarTable to provide per-table metadata. The newly constructed object will have copies of the template's name, parameters etc.

Parameters:
template - the template StarTable
Method Detail

getRowCount

public abstract long getRowCount()
Gets the number of rows in the table (which must be applicable to all the columns). Since this is a RandomStarTable the return value must be non-negative.

Specified by:
getRowCount in interface StarTable
Specified by:
getRowCount in class RandomStarTable
Returns:
number of rows

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

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

getCell

public java.lang.Object getCell(long lrow,
                                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:
lrow - 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

setCell

public void setCell(long lrow,
                    int icol,
                    java.lang.Object value)
             throws java.io.IOException
Stores an object in a given cell of the table.

Parameters:
lrow - the row index
icol - the column index
value - the value to store
Throws:
java.io.IOException - if an I/O error occurs
java.lang.UnsupportedOperationException - if column icol is not writable (!getColumnData(icol).isWritable());

getColumnData

public ColumnData getColumnData(int icol)
Returns the ColumnData object for a given column.

Parameters:
icol - the index of the column for which the result is required
Returns:
the ColumnData for column icol

addColumn

public void addColumn(ColumnData coldata)
Appends a new column to the end of this model.

Parameters:
coldata - the new column object to add

setColumn

public void setColumn(int icol,
                      ColumnData coldata)
Substitutes a new column for the one which is currently in a given position. The old one is discarded.

Parameters:
icol - the column index to change
coldata - the new column data object

makeTableWithRows

public static ColumnStarTable makeTableWithRows(long nrow)
Convenience method to return a ColumnStarTable with a fixed number of rows.

Parameters:
nrow - the number of rows this table will have

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