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
+      }
+    }
+  }
+}
+