⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rangecursor.java

📁 关于Berkelay数据库的共享源码
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
    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 + -