public abstract class WrapperDataStoreFactory extends Object implements DataStoreFactory
The implementation is fairly ticklish, since various of the objects
that we want to wrap have not only to behave (mostly) like the unwrapped
objects to which they delegate, but also to be equal to them
(Equality
).
It works by wrapping each DataSpec in a custom wrapper object any time
it is presented to the underlying base DataStoreFactory,
either by the methods of this DataStoreFactory implementation
or by methods invoked on DataStore objects it dispenses.
These wrapper objects obey the equality constraints.
Modifier | Constructor and Description |
---|---|
protected |
WrapperDataStoreFactory(DataStoreFactory baseFact)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
protected abstract RowAccess |
createRowAccess(StarTable table)
Creates a row access from a given table.
|
protected abstract RowSequence |
createRowSequence(StarTable table)
Creates a row sequence from a given table.
|
protected abstract RowSplittable |
createRowSplittable(StarTable table)
Creates a row splittable from a given table.
|
DataStore |
readDataStore(DataSpec[] dataSpecs,
DataStore prevStore)
Generates a DataStore capable of supplying the data for a given
list of DataSpec objects.
|
protected WrapperDataStoreFactory(DataStoreFactory baseFact)
baseFact
- base implementation that actually acquires the datapublic DataStore readDataStore(DataSpec[] dataSpecs, DataStore prevStore) throws IOException, InterruptedException
DataStoreFactory
prevStore
argument may optionally supply the
result of a previous invocation of this method.
The implementation may choose to make use of the internal state
of such an instance for efficiency, for instance by re-using data
that has already been read.
Since the bulk data is managed by the DataStore object,
care should be taken about what happens to the DataStore
objects supplied to and returned from this method.
In particular, code both invoking and implementing this method should
usually make sure not to keep a reference to the prevStore
argument.
This method may perform the actual reading, and therefore take time. It is not intended to be invoked on the event dispatch thread.
readDataStore
in interface DataStoreFactory
dataSpecs
- data specifications; some elements may be nullprevStore
- previously obtained DataStore, or nullIOException
InterruptedException
protected abstract RowSequence createRowSequence(StarTable table) throws IOException
The obvious implementation is table.getRowSequence()
,
but implementations may decorate that instance to provide
useful functionality.
table
- table providing dataIOException
protected abstract RowAccess createRowAccess(StarTable table) throws IOException
The obvious implementation is table.getRowAccess()
,
but implementations may decorate that instance to provide
useful functionality.
table
- table providing dataIOException
protected abstract RowSplittable createRowSplittable(StarTable table) throws IOException
The obvious implementation is table.getRowSplittable()
,
but implementations may decorate that instance to provide
useful functionality.
table
- table providing dataIOException
Copyright © 2024 Central Laboratory of the Research Councils. All Rights Reserved.