Mercurial > hg > mpdl-group
view software/mpdl-services/mpiwg-mpdl-lt/src/de/mpg/mpiwg/berlin/mpdl/lt/dict/db/DbEnvLex.java @ 19:4a3641ae14d2
Erstellung
author | Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de> |
---|---|
date | Wed, 09 Nov 2011 15:32:05 +0100 |
parents | |
children | e845310098ba |
line wrap: on
line source
package de.mpg.mpiwg.berlin.mpdl.lt.dict.db; import java.io.File; import java.util.HashMap; 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; import de.mpg.mpiwg.berlin.mpdl.exception.ApplicationException; public class DbEnvLex { private String dataDir; private File envPath; private Environment env; private EnvironmentConfig envConfig; private DatabaseConfig dbConfig; private HashMap<String, Database> lexiconDBs = new HashMap<String, Database>(); public DbEnvLex() { } public void setDataDir(String dataDir) { this.dataDir = dataDir; } public void initReadOnly() throws ApplicationException { try { envConfig = new EnvironmentConfig(); dbConfig = new DatabaseConfig(); envPath = new File(dataDir); env = new Environment(envPath, envConfig); } catch (DatabaseException e) { throw new ApplicationException(e); } } public void initReadWrite() throws ApplicationException { try { envConfig = new EnvironmentConfig(); dbConfig = new DatabaseConfig(); envConfig.setReadOnly(false); dbConfig.setReadOnly(false); envConfig.setAllowCreate(true); dbConfig.setAllowCreate(true); envConfig.setTransactional(true); dbConfig.setTransactional(true); envPath = new File(dataDir); env = new Environment(envPath, envConfig); } catch (DatabaseException e) { throw new ApplicationException(e); } } public void openDatabase(String lexiconName) throws ApplicationException { try { Database lexDB = lexiconDBs.get(lexiconName); if (lexDB == null) { Database lexiconDB = env.openDatabase(null, lexiconName + ".db", dbConfig); lexiconDBs.put(lexiconName, lexiconDB); } } catch (DatabaseException e) { throw new ApplicationException(e); } } public void closeDatabase(String lexiconName) throws ApplicationException { try { if (lexiconDBs != null) { Database lexiconDB = lexiconDBs.get(lexiconName); if (lexiconDB != null) lexiconDB.close(); } } catch (DatabaseException e) { throw new ApplicationException(e); } } public Environment getEnv() { return env; } public Database getLexiconDB(String lexiconName) { Database lexiconDB = lexiconDBs.get(lexiconName); return lexiconDB; } public void close() throws ApplicationException { if (env != null) { try { if (env != null) env.close(); } catch (DatabaseException e) { throw new ApplicationException(e); } } } }