Mercurial > hg > mpdl-group
diff software/eXist/mpdl-modules/src/de/mpg/mpiwg/berlin/mpdl/donatus/xmlrpc/DonatusBerkeleyDbEnv.java @ 0:408254cf2f1d
Erstellung
author | Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de> |
---|---|
date | Wed, 24 Nov 2010 17:24:23 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/software/eXist/mpdl-modules/src/de/mpg/mpiwg/berlin/mpdl/donatus/xmlrpc/DonatusBerkeleyDbEnv.java Wed Nov 24 17:24:23 2010 +0100 @@ -0,0 +1,75 @@ +package de.mpg.mpiwg.berlin.mpdl.donatus.xmlrpc; + +import java.io.File; + +import com.sleepycat.je.Database; +import com.sleepycat.je.DatabaseConfig; +import com.sleepycat.je.DatabaseException; +import com.sleepycat.je.Environment; +import com.sleepycat.je.EnvironmentConfig; + +public class DonatusBerkeleyDbEnv { + private File envPath; + private Environment env; + private Database lemmaDb; + private Database variantDb; + + public DonatusBerkeleyDbEnv() { + } + + public void setup(boolean readOnly) throws DatabaseException { + EnvironmentConfig envConfig = new EnvironmentConfig(); + DatabaseConfig dbConfig = new DatabaseConfig(); + // If the environment is read-only, then make the databases read-only too. + envConfig.setReadOnly(readOnly); + dbConfig.setReadOnly(readOnly); + // If the environment is opened for write, then we want to be able to create the environment and databases if they do not exist. + envConfig.setAllowCreate(!readOnly); + dbConfig.setAllowCreate(!readOnly); + // Allow transactions if we are writing to the database + envConfig.setTransactional(!readOnly); + dbConfig.setTransactional(!readOnly); + // Open the environment + envPath = new File(DonatusConstants.BERKELEY_DB_DIR); + env = new Environment(envPath, envConfig); + // open databases (and create them if not existent) + lemmaDb = env.openDatabase(null, "LemmaDB", dbConfig); + variantDb = env.openDatabase(null, "VariantDB", dbConfig); + } + + public void removeDatabases() { + try { + lemmaDb.close(); + variantDb.close(); + env.removeDatabase(null, "LemmaDB"); + env.removeDatabase(null, "VariantDB"); + } catch (DatabaseException e) { + e.printStackTrace(); // TODO + } + } + + public Environment getEnv() { + return env; + } + + public Database getLemmaDB() { + return lemmaDb; + } + + public Database getVariantDB() { + return variantDb; + } + + public void close() { + if (env != null) { + try { + lemmaDb.close(); + variantDb.close(); + env.close(); + } catch(DatabaseException e) { + e.printStackTrace(); // TODO + } + } + } +} +