public class IndexCursorImpl extends CursorImpl implements IndexCursor
CursorImpl.BaseIterator, CursorImpl.DirHandler, CursorImpl.IdImpl, CursorImpl.PositionImpl, CursorImpl.SavepointImpl
Cursor.Id, Cursor.Position, Cursor.Savepoint
_columnMatcher, _curPos, _prevPos, MOVE_FORWARD, MOVE_REVERSE
Modifier and Type | Method and Description |
---|---|
static IndexCursorImpl |
createCursor(TableImpl table,
IndexImpl index,
Object[] startRow,
boolean startInclusive,
Object[] endRow,
boolean endInclusive)
Creates an indexed cursor for the given table, narrowed to the given
range.
|
boolean |
currentRowMatchesEntry(Object... entryValues)
Returns
true if the current row matches the given index entries. |
Iterator<Row> |
entryIterator(EntryIterableBuilder iterBuilder) |
protected CursorImpl.PositionImpl |
findAnotherPosition(TableImpl.RowState rowState,
CursorImpl.PositionImpl curPos,
boolean moveForward)
Finds the next non-deleted row after the given row (as defined by this
cursor) and returns the id of the row, where "next" may be backwards if
moveForward is
false . |
protected boolean |
findAnotherRowImpl(ColumnImpl columnPattern,
Object valuePattern,
boolean moveForward,
ColumnMatcher columnMatcher,
Object searchInfo)
Moves to the next row (as defined by the cursor) where the given column
has the given value.
|
protected boolean |
findAnotherRowImpl(Map<String,?> rowPattern,
boolean moveForward,
ColumnMatcher columnMatcher,
Object searchInfo)
Moves to the next row (as defined by the cursor) where the given columns
have the given values.
|
void |
findClosestRowByEntry(Object... entryValues)
Moves to the first row (as defined by the cursor) where the index entries
are >= the given values.
|
boolean |
findFirstRowByEntry(Object... entryValues)
Moves to the first row (as defined by the cursor) where the index entries
match the given values.
|
protected boolean |
findFirstRowByEntryImpl(Object[] rowValues,
boolean requireMatch,
ColumnMatcher columnMatcher)
Moves to the first row (as defined by the cursor) where the index entries
match the given values.
|
Row |
findRowByEntry(Object... entryValues)
Finds the first row (as defined by the cursor) where the index entries
match the given values.
|
protected ColumnMatcher |
getDefaultColumnMatcher()
Returns the default ColumnMatcher for this Cursor.
|
protected com.healthmarketscience.jackcess.impl.IndexCursorImpl.IndexDirHandler |
getDirHandler(boolean moveForward)
Returns the DirHandler for the given movement direction.
|
IndexImpl |
getIndex() |
protected CursorImpl.PositionImpl |
getRowPosition(RowIdImpl rowId)
Returns the appropriate position information for the given row (which is
the current row and is valid).
|
protected boolean |
isUpToDate()
Returns
true if this cursor is up-to-date with respect to the
relevant table and related table objects, false otherwise. |
protected boolean |
keepSearching(ColumnMatcher columnMatcher,
Object searchInfo)
Called by findAnotherRowImpl to determine if the search should continue
after finding a row which does not match the current pattern.
|
EntryIterableBuilder |
newEntryIterable(Object... entryValues)
Convenience method for constructing a new EntryIterableBuilder for this
cursor.
|
protected Object |
prepareSearchInfo(ColumnImpl columnPattern,
Object valuePattern)
Called before a search commences to allow for search specific data to be
generated (which is cached for re-use by the iterators).
|
protected Object |
prepareSearchInfo(Map<String,?> rowPattern)
Called before a search commences to allow for search specific data to be
generated (which is cached for re-use by the iterators).
|
protected void |
reset(boolean moveForward)
Resets this cursor for traversing the given direction.
|
protected void |
restorePositionImpl(CursorImpl.PositionImpl curPos,
CursorImpl.PositionImpl prevPos)
Restores a current and previous position for the cursor.
|
afterLast, beforeFirst, createCursor, currentRowMatches, currentRowMatches, currentRowMatches, currentRowMatchesImpl, currentRowMatchesImpl, deleteCurrentRow, findAnotherRow, findAnotherRow, findFirstRow, findFirstRow, findFirstRow, findNextRow, findNextRow, findNextRow, findRow, getColumnMatcher, getCurrentRow, getCurrentRow, getCurrentRowValue, getCurrentRowValue, getErrorHandler, getFirstPosition, getFormat, getId, getLastPosition, getNextRow, getNextRow, getPageChannel, getPreviousRow, getPreviousRow, getRowState, getSavepoint, getTable, isAfterLast, isAtBeginning, isBeforeFirst, isCurrentRowDeleted, isCurrentRowValid, iterator, iterator, moveNextRows, movePreviousRows, moveToAnotherRow, moveToNextRow, moveToPreviousRow, newIterable, reset, restorePosition, restorePosition, restoreSavepoint, restoreSavepoint, setColumnMatcher, setCurrentRowValue, setCurrentRowValue, setErrorHandler, toString, updateCurrentRow, updateCurrentRowFromMap
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
afterLast, beforeFirst, currentRowMatches, currentRowMatches, deleteCurrentRow, findFirstRow, findFirstRow, findNextRow, findNextRow, findRow, getColumnMatcher, getCurrentRow, getCurrentRow, getCurrentRowValue, getErrorHandler, getId, getNextRow, getNextRow, getPreviousRow, getPreviousRow, getSavepoint, getTable, isAfterLast, isBeforeFirst, isCurrentRowDeleted, iterator, moveNextRows, movePreviousRows, moveToNextRow, moveToPreviousRow, newIterable, reset, restoreSavepoint, setColumnMatcher, setCurrentRowValue, setErrorHandler, updateCurrentRow, updateCurrentRowFromMap
forEach, spliterator
public static IndexCursorImpl createCursor(TableImpl table, IndexImpl index, Object[] startRow, boolean startInclusive, Object[] endRow, boolean endInclusive) throws IOException
Note, index based table traversal may not include all rows, as certain
types of indexes do not include all entries (namely, some indexes ignore
null entries, see Index.shouldIgnoreNulls()
).
table
- the table over which this cursor will traverseindex
- index for the table which will define traversal order as
well as enhance certain lookupsstartRow
- the first row of data for the cursor, or null
for
the first entrystartInclusive
- whether or not startRow is inclusive or exclusiveendRow
- the last row of data for the cursor, or null
for
the last entryendInclusive
- whether or not endRow is inclusive or exclusiveIOException
public IndexImpl getIndex()
getIndex
in interface IndexCursor
public Row findRowByEntry(Object... entryValues) throws IOException
IndexCursor
findRowByEntry
in interface IndexCursor
entryValues
- the column values for the index's columns.null
if a match could not be found.IOException
public boolean findFirstRowByEntry(Object... entryValues) throws IOException
IndexCursor
Warning, this method always starts searching from the beginning of the Table (you cannot use it to find successive matches).
findFirstRowByEntry
in interface IndexCursor
entryValues
- the column values for the index's columns.true
if a valid row was found with the given values,
false
if no row was foundIOException
public void findClosestRowByEntry(Object... entryValues) throws IOException
IndexCursor
findClosestRowByEntry
in interface IndexCursor
entryValues
- the column values for the index's columns.IOException
public boolean currentRowMatchesEntry(Object... entryValues) throws IOException
IndexCursor
true
if the current row matches the given index entries.currentRowMatchesEntry
in interface IndexCursor
entryValues
- the column values for the index's columns.IOException
public EntryIterableBuilder newEntryIterable(Object... entryValues)
IndexCursor
newEntryIterable
in interface IndexCursor
entryValues
- the column values for the index's columns.public Iterator<Row> entryIterator(EntryIterableBuilder iterBuilder)
protected com.healthmarketscience.jackcess.impl.IndexCursorImpl.IndexDirHandler getDirHandler(boolean moveForward)
CursorImpl
getDirHandler
in class CursorImpl
protected boolean isUpToDate()
CursorImpl
true
if this cursor is up-to-date with respect to the
relevant table and related table objects, false
otherwise.isUpToDate
in class CursorImpl
protected void reset(boolean moveForward)
CursorImpl
reset
in class CursorImpl
protected void restorePositionImpl(CursorImpl.PositionImpl curPos, CursorImpl.PositionImpl prevPos) throws IOException
CursorImpl
restorePositionImpl
in class CursorImpl
IOException
protected CursorImpl.PositionImpl getRowPosition(RowIdImpl rowId) throws IOException
CursorImpl
getRowPosition
in class CursorImpl
IOException
protected boolean findAnotherRowImpl(ColumnImpl columnPattern, Object valuePattern, boolean moveForward, ColumnMatcher columnMatcher, Object searchInfo) throws IOException
CursorImpl
Default implementation scans the table from beginning to end.
findAnotherRowImpl
in class CursorImpl
columnPattern
- column from the table for this cursor which is being
matched by the valuePatternvaluePattern
- value which is equal to the corresponding value in
the matched rowtrue
if a valid row was found with the given value,
false
if no row was foundIOException
protected boolean findFirstRowByEntryImpl(Object[] rowValues, boolean requireMatch, ColumnMatcher columnMatcher) throws IOException
rowValues
- the column values built from the index column valuesrequireMatch
- whether or not an exact match is foundtrue
if a valid row was found with the given values,
false
if no row was foundIOException
protected boolean findAnotherRowImpl(Map<String,?> rowPattern, boolean moveForward, ColumnMatcher columnMatcher, Object searchInfo) throws IOException
CursorImpl
Default implementation scans the table from beginning to end.
findAnotherRowImpl
in class CursorImpl
rowPattern
- column names and values which must be equal to the
corresponding values in the matched rowtrue
if a valid row was found with the given values,
false
if no row was foundIOException
protected Object prepareSearchInfo(ColumnImpl columnPattern, Object valuePattern)
CursorImpl
prepareSearchInfo
in class CursorImpl
protected Object prepareSearchInfo(Map<String,?> rowPattern)
CursorImpl
prepareSearchInfo
in class CursorImpl
protected boolean keepSearching(ColumnMatcher columnMatcher, Object searchInfo) throws IOException
CursorImpl
keepSearching
in class CursorImpl
IOException
protected CursorImpl.PositionImpl findAnotherPosition(TableImpl.RowState rowState, CursorImpl.PositionImpl curPos, boolean moveForward) throws IOException
CursorImpl
false
. If there are no more rows, the returned
rowId should equal the value returned by CursorImpl.getLastPosition()
if
moving forward and CursorImpl.getFirstPosition()
if moving backward.findAnotherPosition
in class CursorImpl
IOException
protected ColumnMatcher getDefaultColumnMatcher()
CursorImpl
getDefaultColumnMatcher
in class CursorImpl
Copyright © 2005–2018. All rights reserved.