📄 rangecursor.java
字号:
public OperationStatus getSearchRecordNumber(DatabaseEntry key, DatabaseEntry pKey, DatabaseEntry data, LockMode lockMode) throws DatabaseException { OperationStatus status; if (!range.hasBound()) { setParams(key, pKey, data); status = doGetSearchRecordNumber(lockMode); endOperation(null, status, null, null, null); return status; } if (!range.check(key)) { status = OperationStatus.NOTFOUND; } else { shareData(key, privKey); status = doGetSearchRecordNumber(lockMode); endOperation(null, status, key, pKey, data); } return status; } public OperationStatus getNextDup(DatabaseEntry key, DatabaseEntry pKey, DatabaseEntry data, LockMode lockMode) throws DatabaseException { if (!initialized) { throw new DatabaseException("Cursor not initialized"); } OperationStatus status; if (!range.hasBound()) { setParams(key, pKey, data); status = doGetNextDup(lockMode); endOperation(null, status, null, null, null); } else if (pkRange != null && pkRange.endKey != null) { status = OperationStatus.NOTFOUND; Cursor oldCursor = beginOperation(); try { status = doGetNextDup(lockMode); if (status == OperationStatus.SUCCESS && !pkRange.checkEnd(privPKey, true)) { status = OperationStatus.NOTFOUND; } } finally { endOperation(oldCursor, status, key, pKey, data); } } else { status = doGetNextDup(lockMode); endOperation(null, status, key, pKey, data); } return status; } public OperationStatus getPrevDup(DatabaseEntry key, DatabaseEntry pKey, DatabaseEntry data, LockMode lockMode) throws DatabaseException { if (!initialized) { throw new DatabaseException("Cursor not initialized"); } OperationStatus status; if (!range.hasBound()) { setParams(key, pKey, data); status = doGetPrevDup(lockMode); endOperation(null, status, null, null, null); } else if (pkRange != null && pkRange.beginKey != null) { status = OperationStatus.NOTFOUND; Cursor oldCursor = beginOperation(); try { status = doGetPrevDup(lockMode); if (status == OperationStatus.SUCCESS && !pkRange.checkBegin(privPKey, true)) { status = OperationStatus.NOTFOUND; } } finally { endOperation(oldCursor, status, key, pKey, data); } } else { status = doGetPrevDup(lockMode); endOperation(null, status, key, pKey, data); } return status; } public OperationStatus getCurrent(DatabaseEntry key, DatabaseEntry pKey, DatabaseEntry data, LockMode lockMode) throws DatabaseException { if (!initialized) { throw new DatabaseException("Cursor not initialized"); } if (secCursor != null && pKey != null) { return secCursor.getCurrent(key, pKey, data, lockMode); } else { return cursor.getCurrent(key, data, lockMode); } } /* * Pass-thru methods. */ public void close() throws DatabaseException { closeCursor(cursor); } public int count() throws DatabaseException { return cursor.count(); } public OperationStatus delete() throws DatabaseException { return cursor.delete(); } public OperationStatus put(DatabaseEntry key, DatabaseEntry data) throws DatabaseException { return cursor.put(key, data); } public OperationStatus putNoOverwrite(DatabaseEntry key, DatabaseEntry data) throws DatabaseException { return cursor.putNoOverwrite(key, data); } public OperationStatus putNoDupData(DatabaseEntry key, DatabaseEntry data) throws DatabaseException { return cursor.putNoDupData(key, data); } public OperationStatus putCurrent(DatabaseEntry data) throws DatabaseException { return cursor.putCurrent(data); } public OperationStatus putAfter(DatabaseEntry key, DatabaseEntry data) throws DatabaseException { return DbCompat.putAfter(cursor, key, data); } public OperationStatus putBefore(DatabaseEntry key, DatabaseEntry data) throws DatabaseException { return DbCompat.putBefore(cursor, key, data); } private OperationStatus doGetFirst(LockMode lockMode) throws DatabaseException { if (secCursor != null && privPKey != null) { return secCursor.getFirst(privKey, privPKey, privData, lockMode); } else { return cursor.getFirst(privKey, privData, lockMode); } } private OperationStatus doGetLast(LockMode lockMode) throws DatabaseException { if (secCursor != null && privPKey != null) { return secCursor.getLast(privKey, privPKey, privData, lockMode); } else { return cursor.getLast(privKey, privData, lockMode); } } private OperationStatus doGetNext(LockMode lockMode) throws DatabaseException { if (secCursor != null && privPKey != null) { return secCursor.getNext(privKey, privPKey, privData, lockMode); } else { return cursor.getNext(privKey, privData, lockMode); } } private OperationStatus doGetNextDup(LockMode lockMode) throws DatabaseException { if (secCursor != null && privPKey != null) { return secCursor.getNextDup(privKey, privPKey, privData, lockMode); } else { return cursor.getNextDup(privKey, privData, lockMode); } } private OperationStatus doGetNextNoDup(LockMode lockMode) throws DatabaseException { if (secCursor != null && privPKey != null) { return secCursor.getNextNoDup(privKey, privPKey, privData, lockMode); } else { return cursor.getNextNoDup(privKey, privData, lockMode); } } private OperationStatus doGetPrev(LockMode lockMode) throws DatabaseException { if (secCursor != null && privPKey != null) { return secCursor.getPrev(privKey, privPKey, privData, lockMode); } else { return cursor.getPrev(privKey, privData, lockMode); } } private OperationStatus doGetPrevDup(LockMode lockMode) throws DatabaseException { if (secCursor != null && privPKey != null) { return secCursor.getPrevDup(privKey, privPKey, privData, lockMode); } else { return cursor.getPrevDup(privKey, privData, lockMode); } } private OperationStatus doGetPrevNoDup(LockMode lockMode) throws DatabaseException { if (secCursor != null && privPKey != null) { return secCursor.getPrevNoDup(privKey, privPKey, privData, lockMode); } else { return cursor.getPrevNoDup(privKey, privData, lockMode); } } private OperationStatus doGetSearchKey(LockMode lockMode) throws DatabaseException { if (checkRecordNumber() && DbCompat.getRecordNumber(privKey) <= 0) { return OperationStatus.NOTFOUND; } if (secCursor != null && privPKey != null) { return secCursor.getSearchKey(privKey, privPKey, privData, lockMode); } else { return cursor.getSearchKey(privKey, privData, lockMode); } } private OperationStatus doGetSearchKeyRange(LockMode lockMode) throws DatabaseException { if (checkRecordNumber() && DbCompat.getRecordNumber(privKey) <= 0) { return OperationStatus.NOTFOUND; } if (secCursor != null && privPKey != null) { return secCursor.getSearchKeyRange(privKey, privPKey, privData, lockMode); } else { return cursor.getSearchKeyRange(privKey, privData, lockMode); } } private OperationStatus doGetSearchBoth(LockMode lockMode) throws DatabaseException { if (checkRecordNumber() && DbCompat.getRecordNumber(privKey) <= 0) { return OperationStatus.NOTFOUND; } if (secCursor != null && privPKey != null) { return secCursor.getSearchBoth(privKey, privPKey, privData, lockMode); } else { return cursor.getSearchBoth(privKey, privData, lockMode); } } private OperationStatus doGetSearchBothRange(LockMode lockMode) throws DatabaseException { if (checkRecordNumber() && DbCompat.getRecordNumber(privKey) <= 0) { return OperationStatus.NOTFOUND; } if (secCursor != null && privPKey != null) { return secCursor.getSearchBothRange(privKey, privPKey, privData, lockMode); } else { return cursor.getSearchBothRange(privKey, privData, lockMode); } } private OperationStatus doGetSearchRecordNumber(LockMode lockMode) throws DatabaseException { if (DbCompat.getRecordNumber(privKey) <= 0) { return OperationStatus.NOTFOUND; } if (secCursor != null && privPKey != null) { return DbCompat.getSearchRecordNumber(secCursor, privKey, privPKey, privData, lockMode); } else { return DbCompat.getSearchRecordNumber(cursor, privKey, privData, lockMode); } } /* * Protected methods for duping and closing cursors. These are overridden * by the collections API to implement cursor pooling for CDS. */ /** * Dups the given cursor. */ protected Cursor dupCursor(Cursor cursor, boolean samePosition) throws DatabaseException { return cursor.dup(samePosition); } /** * Closes the given cursor. */ protected void closeCursor(Cursor cursor) throws DatabaseException { cursor.close(); } /** * If the database is a RECNO or QUEUE database, we know its keys are * record numbers. We treat a non-positive record number as out of bounds, * that is, we return NOTFOUND rather than throwing * IllegalArgumentException as would happen if we passed a non-positive * record number into the DB cursor. This behavior is required by the * collections interface. */ protected boolean checkRecordNumber() { return false; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -