| | |
| | | public class ID2Entry |
| | | { |
| | | /** |
| | | * The database container. |
| | | * The database entryContainer. |
| | | */ |
| | | private Container container; |
| | | private EntryContainer entryContainer; |
| | | |
| | | /** |
| | | * The JE database configuration. |
| | |
| | | private DataConfig dataConfig; |
| | | |
| | | /** |
| | | * The name of the database within the container. |
| | | * The name of the database within the entryContainer. |
| | | */ |
| | | private String name; |
| | | |
| | |
| | | |
| | | /** |
| | | * Create a new ID2Entry object. |
| | | * @param container The container of the entry database. |
| | | * @param entryContainer The entryContainer of the entry database. |
| | | * @param dbConfig The JE database configuration to be used to open the |
| | | * underlying JE database. |
| | | * @param dataConfig The desired compression and encryption options for data |
| | | * stored in the entry database. |
| | | * @param name The name of the entry database. |
| | | */ |
| | | public ID2Entry(Container container, DatabaseConfig dbConfig, |
| | | public ID2Entry(EntryContainer entryContainer, DatabaseConfig dbConfig, |
| | | DataConfig dataConfig, String name) |
| | | { |
| | | this.container = container; |
| | | this.entryContainer = entryContainer; |
| | | this.dbConfig = dbConfig; |
| | | this.name = name; |
| | | this.dataConfig = dataConfig; |
| | |
| | | |
| | | /** |
| | | * Get a handle to the database. It returns a per-thread handle to avoid |
| | | * any thread contention on the database handle. The container is |
| | | * any thread contention on the database handle. The entryContainer is |
| | | * responsible for closing all handles. |
| | | * |
| | | * @return A database handle. |
| | |
| | | Database database = threadLocalDatabase.get(); |
| | | if (database == null) |
| | | { |
| | | database = container.openDatabase(dbConfig, name); |
| | | database = entryContainer.openDatabase(dbConfig, name); |
| | | threadLocalDatabase.set(database); |
| | | } |
| | | return database; |
| | |
| | | DatabaseEntry data = entryData(entry); |
| | | |
| | | OperationStatus status; |
| | | status = Container.insert(getDatabase(), txn, key, data); |
| | | status = EntryContainer.insert(getDatabase(), txn, key, data); |
| | | if (status != OperationStatus.SUCCESS) |
| | | { |
| | | return false; |
| | |
| | | DatabaseEntry data = entryData(entry); |
| | | |
| | | OperationStatus status; |
| | | status = Container.put(getDatabase(), txn, key, data); |
| | | status = EntryContainer.put(getDatabase(), txn, key, data); |
| | | if (status != OperationStatus.SUCCESS) |
| | | { |
| | | return false; |
| | |
| | | throws DatabaseException |
| | | { |
| | | OperationStatus status; |
| | | status = Container.put(getDatabase(), txn, key, data); |
| | | status = EntryContainer.put(getDatabase(), txn, key, data); |
| | | if (status != OperationStatus.SUCCESS) |
| | | { |
| | | return false; |
| | |
| | | { |
| | | DatabaseEntry key = id.getDatabaseEntry(); |
| | | |
| | | OperationStatus status = Container.delete(getDatabase(), txn, key); |
| | | OperationStatus status = EntryContainer.delete(getDatabase(), txn, key); |
| | | if (status != OperationStatus.SUCCESS) |
| | | { |
| | | return false; |
| | |
| | | DatabaseEntry data = new DatabaseEntry(); |
| | | |
| | | OperationStatus status; |
| | | status = Container.read(getDatabase(), txn, key, data, LockMode.DEFAULT); |
| | | status = EntryContainer.read(getDatabase(), txn, key, data, |
| | | LockMode.DEFAULT); |
| | | |
| | | if (status != OperationStatus.SUCCESS) |
| | | { |
| | |
| | | key = id.getDatabaseEntry(); |
| | | |
| | | // Read the current count, if any. |
| | | OperationStatus status = Container.read(getDatabase(), txn, |
| | | OperationStatus status = EntryContainer.read(getDatabase(), txn, |
| | | key, data, LockMode.DEFAULT); |
| | | |
| | | // Parse the current count. |
| | |
| | | key = id.getDatabaseEntry(); |
| | | |
| | | // Read the current count, if any. |
| | | OperationStatus status = Container.read(getDatabase(), txn, |
| | | OperationStatus status = EntryContainer.read(getDatabase(), txn, |
| | | key, data, LockMode.RMW); |
| | | |
| | | // Parse the current count. |
| | |
| | | // Write it. |
| | | byte[] bytes = JebFormat.entryIDToDatabase(count); |
| | | data.setData(bytes); |
| | | Container.put(getDatabase(), txn, key, data); |
| | | EntryContainer.put(getDatabase(), txn, key, data); |
| | | } |
| | | } |