Package uk.ac.starlink.table
Class RandomStarTable
java.lang.Object
uk.ac.starlink.table.AbstractStarTable
uk.ac.starlink.table.RandomStarTable
- All Implemented Interfaces:
Closeable,AutoCloseable,StarTable
- Direct Known Subclasses:
BeanStarTable,ColumnStarTable,ConstantStarTable,RandomResultSetStarTable,RowListStarTable
Implements a StarTable based on row and cell accessor methods
that are random access and thread-safe.
The isRandom method always returns true, and the
getRowSequence method is implemented using the table's
(abstract) getCell and getRow methods,
which must be safe for concurrent use from multiple threads.
This implementation is only suitable where table data access is
naturally thread-safe; in cases where synchronization or some
other potentially expensive mechanism is used to secure thread-safety
of getCell, it is better to use a different implementation
with a better getRowSequence implementation.
- Author:
- Mark Taylor (Starlink)
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract ObjectgetCell(long irow, int icol) Implementations of this method must be safe for concurrent calls from multiple threads.Returns aRowAccessobject based on the random data access methods of this table.abstract longImplementations must supply a non-negative return value.Returns aRowSequenceobject based on the random data access methods of this table.booleanisRandom()Returns true.Methods inherited from class uk.ac.starlink.table.AbstractStarTable
checkedLongToInt, close, getColumnAuxDataInfos, getColumnCount, getColumnInfo, getName, getParameters, getRow, getRowSplittable, getURL, setName, setParameters, setURLMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface uk.ac.starlink.table.StarTable
getParameterByName, setParameter
-
Constructor Details
-
RandomStarTable
public RandomStarTable()
-
-
Method Details
-
isRandom
public boolean isRandom()Returns true.- Specified by:
isRandomin interfaceStarTable- Overrides:
isRandomin classAbstractStarTable- Returns:
- true
-
getRowSequence
Returns aRowSequenceobject based on the random data access methods of this table.- Specified by:
getRowSequencein interfaceStarTable- Specified by:
getRowSequencein classAbstractStarTable- Returns:
- a row iterator
-
getRowAccess
Returns aRowAccessobject based on the random data access methods of this table.- Specified by:
getRowAccessin interfaceStarTable- Overrides:
getRowAccessin classAbstractStarTable- Returns:
- a row access
-
getRowCount
public abstract long getRowCount()Implementations must supply a non-negative return value.- Specified by:
getRowCountin interfaceStarTable- Specified by:
getRowCountin classAbstractStarTable- Returns:
- the number of rows in the table
-
getCell
Implementations of this method must be safe for concurrent calls from multiple threads.- Specified by:
getCellin interfaceStarTable- Overrides:
getCellin classAbstractStarTable- Parameters:
irow- the index of the cell's rowicol- the index of the cell's column- Returns:
- the contents of this cell
- Throws:
IOException- if there is an error reading the data
-