|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.healthmarketscience.jackcess.impl.CursorImpl
com.healthmarketscience.jackcess.impl.IndexCursorImpl
public class IndexCursorImpl
Cursor backed by an index with extended traversal options.
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from class com.healthmarketscience.jackcess.impl.CursorImpl |
|---|
CursorImpl.BaseIterator, CursorImpl.DirHandler, CursorImpl.IdImpl, CursorImpl.PositionImpl, CursorImpl.SavepointImpl |
| Nested classes/interfaces inherited from interface com.healthmarketscience.jackcess.Cursor |
|---|
Cursor.Id, Cursor.Position, Cursor.Savepoint |
| Field Summary |
|---|
| Fields inherited from class com.healthmarketscience.jackcess.impl.CursorImpl |
|---|
_columnMatcher, _curPos, _prevPos, MOVE_FORWARD, MOVE_REVERSE |
| Method Summary | |
|---|---|
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. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface com.healthmarketscience.jackcess.Cursor |
|---|
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 |
| Method Detail |
|---|
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 exclusive
IOExceptionpublic IndexImpl getIndex()
getIndex in interface IndexCursor
public Row findRowByEntry(Object... entryValues)
throws IOException
IndexCursor
findRowByEntry in interface IndexCursorentryValues - the column values for the index's columns.
null if a match could not be found.
IOException
public 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 found
IOException
public void findClosestRowByEntry(Object... entryValues)
throws IOException
IndexCursor
findClosestRowByEntry in interface IndexCursorentryValues - the column values for the index's columns.
IOException
public 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)
IndexCursor
newEntryIterable 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)
CursorImpl
getDirHandler 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)
CursorImpl
reset in class CursorImpl
protected void restorePositionImpl(CursorImpl.PositionImpl curPos,
CursorImpl.PositionImpl prevPos)
throws IOException
CursorImpl
restorePositionImpl in class CursorImplIOException
protected CursorImpl.PositionImpl getRowPosition(RowIdImpl rowId)
throws IOException
CursorImpl
getRowPosition in class CursorImplIOException
protected 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 row
true if a valid row was found with the given value,
false if no row was found
IOException
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 found
true if a valid row was found with the given values,
false if no row was found
IOException
protected 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 row
true if a valid row was found with the given values,
false if no row was found
IOException
protected Object prepareSearchInfo(ColumnImpl columnPattern,
Object valuePattern)
CursorImpl
prepareSearchInfo in class CursorImplprotected Object prepareSearchInfo(Map<String,?> rowPattern)
CursorImpl
prepareSearchInfo in class CursorImpl
protected boolean keepSearching(ColumnMatcher columnMatcher,
Object searchInfo)
throws IOException
CursorImpl
keepSearching in class CursorImplIOException
protected 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()
CursorImpl
getDefaultColumnMatcher in class CursorImpl
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||