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 Object
getCell
(long irow, int icol) Implementations of this method must be safe for concurrent calls from multiple threads.Returns a RowAccess object based on the random data access methods of this table.abstract long
Implementations must supply a non-negative return value.Returns a RowSequence object based on the random data access methods of this table.boolean
isRandom()
Returns true.Methods inherited from class uk.ac.starlink.table.AbstractStarTable
checkedLongToInt, close, getColumnAuxDataInfos, getColumnCount, getColumnInfo, getName, getParameters, getRow, getRowSplittable, getURL, setName, setParameters, setURL
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods 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:
isRandom
in interfaceStarTable
- Overrides:
isRandom
in classAbstractStarTable
- Returns:
- true
-
getRowSequence
Returns a RowSequence object based on the random data access methods of this table.- Specified by:
getRowSequence
in interfaceStarTable
- Specified by:
getRowSequence
in classAbstractStarTable
- Returns:
- a row iterator
-
getRowAccess
Returns a RowAccess object based on the random data access methods of this table.- Specified by:
getRowAccess
in interfaceStarTable
- Overrides:
getRowAccess
in classAbstractStarTable
- Returns:
- a row access
-
getRowCount
public abstract long getRowCount()Implementations must supply a non-negative return value.- Specified by:
getRowCount
in interfaceStarTable
- Specified by:
getRowCount
in 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:
getCell
in interfaceStarTable
- Overrides:
getCell
in 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
-