Class WrapperStarTable
- All Implemented Interfaces:
Closeable
,AutoCloseable
,StarTable
- Direct Known Subclasses:
ColumnPermutedStarTable
,ColumnStoreStarTable
,ConcatStarTable
,EmptyStarTable
,ExplodedStarTable
,MetaCopyStarTable
,ProgressBarStarTable
,ProgressLineStarTable
,RowPermutedStarTable
,RowSubsetStarTable
,SelectorStarTable
getURL()
method which returns
null
as an indication that the actual table is not a persistent
one (though it may be based on, and even identical to, a persistent one).
This class is provided so that it can be extended by subclasses which modify the view of the base table in useful ways.
Subclasses should take care to ensure that all the data access methods
are overridden in a consistent way: getCell(long, int)
, getRow(long)
,
getRowSequence()
, getRowAccess()
and getRowSplittable()
.
- Author:
- Mark Taylor (Starlink)
- See Also:
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionWrapperStarTable
(StarTable baseTable) Constructs a newWrapperStarTable
from a given base table. -
Method Summary
Modifier and TypeMethodDescriptionstatic int
checkedLongToInt
(long lval) Convenience method to get anint
value from along
.void
close()
Relinquishes any resources associated with this table.Returns the base table underlying this wrapper table.getCell
(long irow, int icol) Returns the contents of a given table cell.Returns an ordered list of ValueInfo objects representing the auxiliary metadata returned bygetColumnInfo(int).getAuxData()
calls.int
Returns the number of columns in this table.getColumnInfo
(int icol) Returns the object describing the data in a given column.getName()
Returns the name of this table, if it has one.getParameterByName
(String parname) Returns a parameter (table-wide metadata item) of this table located by its name.Returns a list of table parameters, that is metadata items which pertain to the entire table.Object[]
getRow
(long irow) Returns the contents of a given table row.Returns an object which can provide random access to this table's data, if random access is implemented.long
Returns the number of rows in this table, if known.Returns an object which can iterate over all the rows in the table sequentially.Returns an object which can iterate over all the rows in the table, but which may also be requested to split recursively for potentially parallel processing.getURL()
Initially returnsnull
to indicate that this table itself is not persistent.boolean
isRandom()
Indicates whether random access is provided by this table.void
Sets the name of this table.void
setParameter
(DescribedValue dval) Adds the given DescribedValue to the list of parameter metadata objects associated with this table.void
Sets the URL of this table.toString()
Returns an indication of the wrapper structure of this table.
-
Field Details
-
baseTable
-
-
Constructor Details
-
WrapperStarTable
Constructs a newWrapperStarTable
from a given base table.- Parameters:
baseTable
- the table to which methods invoked upon the new wrapper table will be forwarded
-
-
Method Details
-
getBaseTable
Returns the base table underlying this wrapper table.- Returns:
- the table to which methods invoked upon this wrappter table are forwarded
-
getColumnCount
public int getColumnCount()Description copied from interface:StarTable
Returns the number of columns in this table.- Specified by:
getColumnCount
in interfaceStarTable
- 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 interfaceStarTable
- Returns:
- the number of rows, or -1
-
getURL
Initially returnsnull
to indicate that this table itself is not persistent. -
setURL
Description copied from interface:StarTable
Sets the URL of this table. It ought to be possible in principle to reconstruct this table by reading the resource aturl
. If called, the suppliedurl
should provide the return value for subsequent calls ofStarTable.getURL()
. -
getName
Description copied from interface:StarTable
Returns the name of this table, if it has one. The meaning of the name is not defined, but it will typically be a short string of text indicating the identity of this table. -
setName
Description copied from interface:StarTable
Sets the name of this table. If called, the suppliedname
should provide the return value for subsequent calls ofStarTable.getName()
. -
getParameters
Description copied from interface:StarTable
Returns a list of table parameters, that is metadata items which pertain to the entire table.- Specified by:
getParameters
in interfaceStarTable
- Returns:
- a
List
ofDescribedValue
objects constituting table-wide metadata not covered elsewhere in this interface
-
getParameterByName
Description copied from interface:StarTable
Returns a parameter (table-wide metadata item) of this table located by its name. If more than one parameter with the given name exists, an arbitrary one will be returned. If no parameter with the given name exists,null
will be returned.- Specified by:
getParameterByName
in interfaceStarTable
- Parameters:
parname
- the name of the table parameter required
-
setParameter
Description copied from interface:StarTable
Adds the given DescribedValue to the list of parameter metadata objects associated with this table. If an item in the parameter list with the same name as the supplied value already exists, it is removed from the list.- Specified by:
setParameter
in interfaceStarTable
- Parameters:
dval
- the new parameter datum to add
-
getColumnInfo
Description copied from interface:StarTable
Returns the object describing the data in a given column.- Specified by:
getColumnInfo
in interfaceStarTable
- Parameters:
icol
- the column for which header information is required- Returns:
- a ValueInfo object for column
icol
-
getColumnAuxDataInfos
Description copied from interface:StarTable
Returns an ordered list of ValueInfo objects representing the auxiliary metadata returned bygetColumnInfo(int).getAuxData()
calls. The idea is that the resulting list can be used to find out the kind of per-column metadata which can be expected to be found in some or all columns of this table. Each item in the returned list should have a unique name, and other characteristics which are applicable to auxData items which may be returned from any of the columns in this table.The order of the list may indicate some sort of natural ordering of these keys. The returned list is not guaranteed to be complete; it is legal to return an empty list if nothing is known about auxiliary metadata. The list ought not to contain duplicate elements.
- Specified by:
getColumnAuxDataInfos
in interfaceStarTable
- Returns:
- an unmodifiable ordered set of known metadata keys
- See Also:
-
getRowSequence
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 interfaceStarTable
- Returns:
- new RowSequence
- Throws:
IOException
- if there is an error providing access
-
getRowAccess
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 interfaceStarTable
- Returns:
- new RowAccess
- Throws:
IOException
- if there is an error setting up access
-
getRowSplittable
Description copied from interface:StarTable
Returns an object which can iterate over all the rows in the table, but which may also be requested to split recursively for potentially parallel processing.The return value must be non-null, and may provide splitting arrangements specially appropriate for the implementation. If this table 'wraps' an upstream table, it is usually best to base the implementation on calls to the the upstream
getRowSplittable
method, so that upstream policy about how to divide up the table is respected. However, implementations without special requirements may returnTables.getDefaultRowSplittable
(this)
.- Specified by:
getRowSplittable
in interfaceStarTable
- Returns:
- new RowSplittable
- Throws:
IOException
- See Also:
-
isRandom
public boolean isRandom()Description copied from interface:StarTable
Indicates whether random access is provided by this table. Only if the result istrue
may theStarTable.getRowAccess()
,StarTable.getRow(long)
andStarTable.getCell(long, int)
methods be used. -
getCell
Description copied from interface:StarTable
Returns the contents of a given table cell. The class of the returned object should be the same as, or a subclass of, the class returned bygetColumnInfo(icol).getContentClass()
.This method is safe for concurrent use from multiple threads, but in general it is recommended to use a
RowAccess
instead.- Specified by:
getCell
in interfaceStarTable
- 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
-
getRow
Description copied from interface:StarTable
Returns the contents of a given table row. The returned value is equivalent to an array formed of all the objects returned bygetCell(irow,icol)
for all the columnsicol
in sequence.This method is safe for concurrent use from multiple threads, but in general it is recommended to use a
RowAccess
instead.- Specified by:
getRow
in interfaceStarTable
- Parameters:
irow
- the index of the row to retrieve- Returns:
- an array of the objects in each cell in row
irow
- Throws:
IOException
- if there is an error reading the data
-
close
Description copied from interface:StarTable
Relinquishes any resources associated with this table. This may do nothing, and calling it is often not required, but it provides an opportunity to force release of file descriptors or other resources that are not well handled by garbage collection if the table itself holds them. It is not intended for release of heap-based resources, for which garbage collection already provides adequate management.Following a call to this method, any attempt to use this table or objects such as RowSequences obtained from it will result in undefined behaviour.
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in interfaceStarTable
- Throws:
IOException
-
checkedLongToInt
public static int checkedLongToInt(long lval) -
toString
Returns an indication of the wrapper structure of this table.
-