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

📄 database.java

📁 关于Berkelay数据库的共享源码
💻 JAVA
字号:
/*- * See the file LICENSE for redistribution information. * * Copyright (c) 2002-2006 *	Oracle Corporation.  All rights reserved. * * $Id: Database.java,v 12.5 2006/08/24 14:46:07 bostic Exp $ */package com.sleepycat.db;import com.sleepycat.db.internal.Db;import com.sleepycat.db.internal.DbConstants;import com.sleepycat.db.internal.DbSequence;import com.sleepycat.db.internal.Dbc;public class Database {    Db db;    private int autoCommitFlag;    int rmwFlag;    /* package */    Database(final Db db)        throws DatabaseException {        this.db = db;        db.wrapper = this;        this.autoCommitFlag =            db.get_transactional() ? DbConstants.DB_AUTO_COMMIT : 0;        rmwFlag = ((db.get_env().get_open_flags() &                    DbConstants.DB_INIT_LOCK) != 0) ? DbConstants.DB_RMW : 0;    }    public Database(final String filename,                    final String databaseName,                    final DatabaseConfig config)        throws DatabaseException, java.io.FileNotFoundException {        this(DatabaseConfig.checkNull(config).openDatabase(null, null,            filename, databaseName));        // Set up dbenv.wrapper        new Environment(db.get_env());    }    public void close(final boolean noSync)        throws DatabaseException {        db.close(noSync ? DbConstants.DB_NOSYNC : 0);    }    public void close()        throws DatabaseException {        close(false);    }    public CompactStats compact(final Transaction txn,                                final DatabaseEntry start,                                final DatabaseEntry stop,                                final DatabaseEntry end,                                CompactConfig config)        throws DatabaseException {        config = CompactConfig.checkNull(config);        CompactStats compact = new CompactStats(config.getFillPercent(),            config.getTimeout(), config.getMaxPages());        db.compact((txn == null) ? null : txn.txn,            start, stop, compact, config.getFlags(), end);        return compact;    }    public Cursor openCursor(final Transaction txn, CursorConfig config)        throws DatabaseException {        return new Cursor(this, CursorConfig.checkNull(config).openCursor(            db, (txn == null) ? null : txn.txn), config);    }    public Sequence openSequence(final Transaction txn,                                 final DatabaseEntry key,                                 final SequenceConfig config)        throws DatabaseException {        return new Sequence(SequenceConfig.checkNull(config).openSequence(            db, (txn == null) ? null : txn.txn, key), config);    }    public void removeSequence(final Transaction txn,                               final DatabaseEntry key,                               SequenceConfig config)        throws DatabaseException {        config = SequenceConfig.checkNull(config);        final DbSequence seq = config.openSequence(            db, (txn == null) ? null : txn.txn, key);        seq.remove((txn == null) ? null : txn.txn,            (txn == null && db.get_transactional()) ?            DbConstants.DB_AUTO_COMMIT | (config.getAutoCommitNoSync() ?            DbConstants.DB_TXN_NOSYNC : 0) : 0);    }    public String getDatabaseFile()        throws DatabaseException {        return db.get_filename();    }    public String getDatabaseName()        throws DatabaseException {        return db.get_dbname();    }    public DatabaseConfig getConfig()        throws DatabaseException {        return new DatabaseConfig(db);    }    public void setConfig(DatabaseConfig config)        throws DatabaseException {        config.configureDatabase(db, getConfig());    }    public Environment getEnvironment()        throws DatabaseException {        return db.get_env().wrapper;    }    public CacheFile getCacheFile()        throws DatabaseException {        return new CacheFile(db.get_mpf());    }    public OperationStatus append(final Transaction txn,                                  final DatabaseEntry key,                                  final DatabaseEntry data)        throws DatabaseException {        return OperationStatus.fromInt(            db.put((txn == null) ? null : txn.txn, key, data,                DbConstants.DB_APPEND | ((txn == null) ? autoCommitFlag : 0)));    }    public OperationStatus consume(final Transaction txn,                                   final DatabaseEntry key,                                   final DatabaseEntry data,                                   final boolean wait)        throws DatabaseException {        return OperationStatus.fromInt(            db.get((txn == null) ? null : txn.txn,                key, data,                (wait ? DbConstants.DB_CONSUME_WAIT : DbConstants.DB_CONSUME) |                ((txn == null) ? autoCommitFlag : 0)));    }    public OperationStatus delete(final Transaction txn,                                  final DatabaseEntry key)        throws DatabaseException {        return OperationStatus.fromInt(            db.del((txn == null) ? null : txn.txn, key,                ((txn == null) ? autoCommitFlag : 0)));    }    public OperationStatus get(final Transaction txn,                               final DatabaseEntry key,                               final DatabaseEntry data,                               final LockMode lockMode)        throws DatabaseException {        return OperationStatus.fromInt(            db.get((txn == null) ? null : txn.txn,                key, data,                LockMode.getFlag(lockMode) |                ((data == null) ? 0 : data.getMultiFlag())));    }    public KeyRange getKeyRange(final Transaction txn,                                final DatabaseEntry key)        throws DatabaseException {        final KeyRange range = new KeyRange();        db.key_range((txn == null) ? null : txn.txn, key, range, 0);        return range;    }    public OperationStatus getSearchBoth(final Transaction txn,                                         final DatabaseEntry key,                                         final DatabaseEntry data,                                         final LockMode lockMode)        throws DatabaseException {        return OperationStatus.fromInt(            db.get((txn == null) ? null : txn.txn,                key, data,                DbConstants.DB_GET_BOTH |                LockMode.getFlag(lockMode) |                ((data == null) ? 0 : data.getMultiFlag())));    }    public OperationStatus getSearchRecordNumber(final Transaction txn,                                           final DatabaseEntry key,                                           final DatabaseEntry data,                                           final LockMode lockMode)        throws DatabaseException {        return OperationStatus.fromInt(            db.get((txn == null) ? null : txn.txn,                key, data,                DbConstants.DB_SET_RECNO |                LockMode.getFlag(lockMode) |                ((data == null) ? 0 : data.getMultiFlag())));    }    public OperationStatus put(final Transaction txn,                               final DatabaseEntry key,                               final DatabaseEntry data)        throws DatabaseException {        return OperationStatus.fromInt(            db.put((txn == null) ? null : txn.txn,                key, data,                ((txn == null) ? autoCommitFlag : 0)));    }    public OperationStatus putNoDupData(final Transaction txn,                                        final DatabaseEntry key,                                        final DatabaseEntry data)        throws DatabaseException {        return OperationStatus.fromInt(            db.put((txn == null) ? null : txn.txn,                key, data,                DbConstants.DB_NODUPDATA |                ((txn == null) ? autoCommitFlag : 0)));    }    public OperationStatus putNoOverwrite(final Transaction txn,                                          final DatabaseEntry key,                                          final DatabaseEntry data)        throws DatabaseException {        return OperationStatus.fromInt(            db.put((txn == null) ? null : txn.txn,                key, data,                DbConstants.DB_NOOVERWRITE |                ((txn == null) ? autoCommitFlag : 0)));    }    public JoinCursor join(final Cursor[] cursList, JoinConfig config)        throws DatabaseException {        config = JoinConfig.checkNull(config);        final Dbc[] dbcList = new Dbc[cursList.length];        for (int i = 0; i < cursList.length; i++)            dbcList[i] = (cursList[i] == null) ? null : cursList[i].dbc;        return new JoinCursor(this,            db.join(dbcList, config.getFlags()), config);    }    public int truncate(final Transaction txn, boolean countRecords)        throws DatabaseException {        // XXX: implement countRecords in C        int count = db.truncate((txn == null) ? null : txn.txn,            ((txn == null) ? autoCommitFlag : 0));        return countRecords ? count : -1;    }    public DatabaseStats getStats(final Transaction txn, StatsConfig config)        throws DatabaseException {        return (DatabaseStats)db.stat((txn == null) ? null : txn.txn,            StatsConfig.checkNull(config).getFlags());    }    public static void remove(final String fileName,                              final String databaseName,                              DatabaseConfig config)        throws DatabaseException, java.io.FileNotFoundException {        final Db db = DatabaseConfig.checkNull(config).createDatabase(null);        db.remove(fileName, databaseName, 0);    }    public static void rename(final String fileName,                              final String oldDatabaseName,                              final String newDatabaseName,                              DatabaseConfig config)        throws DatabaseException, java.io.FileNotFoundException {        final Db db = DatabaseConfig.checkNull(config).createDatabase(null);        db.rename(fileName, oldDatabaseName, newDatabaseName, 0);    }    public void sync()        throws DatabaseException {        db.sync(0);    }    public static void upgrade(final String fileName,                        DatabaseConfig config)        throws DatabaseException, java.io.FileNotFoundException {        final Db db = DatabaseConfig.checkNull(config).createDatabase(null);        db.upgrade(fileName,            config.getSortedDuplicates() ? DbConstants.DB_DUPSORT : 0);        db.close(0);    }    public static boolean verify(final String fileName,                                 final String databaseName,                                 final java.io.PrintStream dumpStream,                                 VerifyConfig verifyConfig,                                 DatabaseConfig dbConfig)        throws DatabaseException, java.io.FileNotFoundException {        final Db db = DatabaseConfig.checkNull(dbConfig).createDatabase(null);        return db.verify(fileName, databaseName, dumpStream,            VerifyConfig.checkNull(verifyConfig).getFlags());    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -