public class IndexCursorImpl extends CursorImpl implements IndexCursor
CursorImpl.BaseIterator, CursorImpl.DirHandler, CursorImpl.IdImpl, CursorImpl.PositionImpl, CursorImpl.SavepointImplCursor.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, updateCurrentRowFromMapclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitafterLast, 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, updateCurrentRowFromMapforEach, spliteratorpublic 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 exclusiveIOExceptionpublic IndexImpl getIndex()
getIndex in interface IndexCursorpublic Row findRowByEntry(Object... entryValues) throws IOException
IndexCursorfindRowByEntry in interface IndexCursorentryValues - the column values for the index's columns.null if a match could not be found.IOExceptionpublic boolean findFirstRowByEntry(Object... entryValues) throws IOException
IndexCursorWarning, this method always starts searching from the beginning of the Table (you cannot use it to find successive matches).
findFirstRowByEntry in interface IndexCursorentryValues - the column values for the index's columns.true if a valid row was found with the given values,
false if no row was foundIOExceptionpublic void findClosestRowByEntry(Object... entryValues) throws IOException
IndexCursorfindClosestRowByEntry in interface IndexCursorentryValues - the column values for the index's columns.IOExceptionpublic boolean currentRowMatchesEntry(Object... entryValues) throws IOException
IndexCursortrue if the current row matches the given index entries.currentRowMatchesEntry in interface IndexCursorentryValues - the column values for the index's columns.IOExceptionpublic EntryIterableBuilder newEntryIterable(Object... entryValues)
IndexCursornewEntryIterable in interface IndexCursorentryValues - the column values for the index's columns.public Iterator<Row> entryIterator(EntryIterableBuilder iterBuilder)
protected com.healthmarketscience.jackcess.impl.IndexCursorImpl.IndexDirHandler getDirHandler(boolean moveForward)
CursorImplgetDirHandler in class CursorImplprotected boolean isUpToDate()
CursorImpltrue if this cursor is up-to-date with respect to the
relevant table and related table objects, false otherwise.isUpToDate in class CursorImplprotected void reset(boolean moveForward)
CursorImplreset in class CursorImplprotected void restorePositionImpl(CursorImpl.PositionImpl curPos, CursorImpl.PositionImpl prevPos) throws IOException
CursorImplrestorePositionImpl in class CursorImplIOExceptionprotected CursorImpl.PositionImpl getRowPosition(RowIdImpl rowId) throws IOException
CursorImplgetRowPosition in class CursorImplIOExceptionprotected boolean findAnotherRowImpl(ColumnImpl columnPattern, Object valuePattern, boolean moveForward, ColumnMatcher columnMatcher, Object searchInfo) throws IOException
CursorImplDefault implementation scans the table from beginning to end.
findAnotherRowImpl in class CursorImplcolumnPattern - 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 foundIOExceptionprotected 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 foundIOExceptionprotected boolean findAnotherRowImpl(Map<String,?> rowPattern, boolean moveForward, ColumnMatcher columnMatcher, Object searchInfo) throws IOException
CursorImplDefault implementation scans the table from beginning to end.
findAnotherRowImpl in class CursorImplrowPattern - 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 foundIOExceptionprotected Object prepareSearchInfo(ColumnImpl columnPattern, Object valuePattern)
CursorImplprepareSearchInfo in class CursorImplprotected Object prepareSearchInfo(Map<String,?> rowPattern)
CursorImplprepareSearchInfo in class CursorImplprotected boolean keepSearching(ColumnMatcher columnMatcher, Object searchInfo) throws IOException
CursorImplkeepSearching in class CursorImplIOExceptionprotected CursorImpl.PositionImpl findAnotherPosition(TableImpl.RowState rowState, CursorImpl.PositionImpl curPos, boolean moveForward) throws IOException
CursorImplfalse. 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 CursorImplIOExceptionprotected ColumnMatcher getDefaultColumnMatcher()
CursorImplgetDefaultColumnMatcher in class CursorImplCopyright © 2005–2016. All rights reserved.