📄 rangecursor.java
字号:
DatabaseEntry pKey, DatabaseEntry data, LockMode lockMode) throws DatabaseException { OperationStatus status; if (!initialized) { return getLast(key, pKey, data, lockMode); } if (!range.hasBound()) { setParams(key, pKey, data); status = doGetPrevNoDup(lockMode); endOperation(null, status, null, null, null); return status; } if (range.singleKey) { status = OperationStatus.NOTFOUND; } else { status = OperationStatus.NOTFOUND; Cursor oldCursor = beginOperation(); try { status = doGetPrevNoDup(lockMode); if (status == OperationStatus.SUCCESS && !range.check(privKey)) { status = OperationStatus.NOTFOUND; } } finally { endOperation(oldCursor, status, key, pKey, data); } } return status; } public OperationStatus getSearchKey(DatabaseEntry key, DatabaseEntry pKey, DatabaseEntry data, LockMode lockMode) throws DatabaseException { OperationStatus status; if (!range.hasBound()) { setParams(key, pKey, data); status = doGetSearchKey(lockMode); endOperation(null, status, null, null, null); return status; } if (!range.check(key)) { status = OperationStatus.NOTFOUND; } else { shareData(key, privKey); status = doGetSearchKey(lockMode); endOperation(null, status, key, pKey, data); } return status; } public OperationStatus getSearchBoth(DatabaseEntry key, DatabaseEntry pKey, DatabaseEntry data, LockMode lockMode) throws DatabaseException { OperationStatus status; if (!range.hasBound()) { setParams(key, pKey, data); status = doGetSearchBoth(lockMode); endOperation(null, status, null, null, null); return status; } if (!range.check(key)) { status = OperationStatus.NOTFOUND; } else { shareData(key, privKey); if (secCursor != null) { shareData(pKey, privPKey); } else { shareData(data, privData); } status = doGetSearchBoth(lockMode); endOperation(null, status, key, pKey, data); } return status; } public OperationStatus getSearchKeyRange(DatabaseEntry key, DatabaseEntry pKey, DatabaseEntry data, LockMode lockMode) throws DatabaseException { OperationStatus status = OperationStatus.NOTFOUND; if (!range.hasBound()) { setParams(key, pKey, data); status = doGetSearchKeyRange(lockMode); endOperation(null, status, null, null, null); return status; } Cursor oldCursor = beginOperation(); try { shareData(key, privKey); status = doGetSearchKeyRange(lockMode); if (status == OperationStatus.SUCCESS && !range.check(privKey)) { status = OperationStatus.NOTFOUND; } } finally { endOperation(oldCursor, status, key, pKey, data); } return status; } public OperationStatus getSearchBothRange(DatabaseEntry key, DatabaseEntry pKey, DatabaseEntry data, LockMode lockMode) throws DatabaseException { OperationStatus status = OperationStatus.NOTFOUND; if (!range.hasBound()) { setParams(key, pKey, data); status = doGetSearchBothRange(lockMode); endOperation(null, status, null, null, null); return status; } Cursor oldCursor = beginOperation(); try { shareData(key, privKey); if (secCursor != null) { shareData(pKey, privPKey); } else { shareData(data, privData); } status = doGetSearchBothRange(lockMode); if (status == OperationStatus.SUCCESS && !range.check(privKey)) { status = OperationStatus.NOTFOUND; } } finally { endOperation(oldCursor, status, key, pKey, data); } return status; } 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 { 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 { 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 { currentTxn.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 (isRecnoOrQueue && 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 (isRecnoOrQueue && 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 (isRecnoOrQueue && 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 (isRecnoOrQueue && 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); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -