public class MappingRowSplittable extends WrapperRowSequence implements RowSplittable
Note: this cannot in general be extended
by an anonymous class to change aspects of the behaviour
other than the column mapping, since the split()
method
has to return an instance of the same class rather than of its superclass.
baseSeq
Constructor and Description |
---|
MappingRowSplittable(RowSplittable baseSplit,
java.util.function.Function<RowSplittable,RowData> dataMapper)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
java.lang.Object |
getCell(int icol)
Returns the contents of a cell in the current row.
|
java.lang.Object[] |
getRow()
Returns the contents of the current table row, as an array
with the same number of elements as there are columns in this
table.
|
java.util.function.LongSupplier |
rowIndex()
Returns a supplier for the index of the row currently being processed,
if possible.
|
RowSplittable |
split()
Attempts to partition this object into two halves,
ideally of similar size.
|
long |
splittableSize()
Provides an estimate of the number of processable items in this object.
|
close, next, toString
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
close, next
public MappingRowSplittable(RowSplittable baseSplit, java.util.function.Function<RowSplittable,RowData> dataMapper)
baseSplit
- base splittabledataMapper
- used to acquire data access behaviour from
newly split base instancespublic java.lang.Object getCell(int icol) throws java.io.IOException
RowSequence
getColumnInfo(icol).getContentClass()
.
An unchecked exception will be thrown if there is no current
row (next
has not yet been called).getCell
in interface RowData
getCell
in interface RowSequence
getCell
in class WrapperRowSequence
icol
- column indexicol
in the current rowjava.io.IOException
- if there is an error reading the datapublic java.lang.Object[] getRow() throws java.io.IOException
RowSequence
next
has not yet been called).getRow
in interface RowData
getRow
in interface RowSequence
getRow
in class WrapperRowSequence
irow
java.io.IOException
- if there is an error reading the datapublic long splittableSize()
Splittable
If no estimate for the size is available, a negative value should be returned.
splittableSize
in interface Splittable<RowSplittable>
public java.util.function.LongSupplier rowIndex()
RowSplittable
Typically, the row index will start at 0 and increment for each row, but the numbering may be different depending on the requirements of the implementation or usage.
Before the RowSequence.next()
method has been called,
the return value will be one less than the first row index.
After RowSequence.next
has returned false,
the value is undefined.
Depending on the implementation, it may not be possible to determine the row index (for instance if the sequence is split into sub-splittables of unknown size). In such cases, this method returns null. The null-ness of the return value must be the same for all instances of the splittable hierarchy for a given sequence, so don't return a non-null value for the first splittable and then null values for some or all of its children.
rowIndex
in interface RowSplittable
public RowSplittable split()
Splittable
Following a successful call, the two parts may be processed in different threads.
split
in interface Splittable<RowSplittable>
Spliterator.trySplit()