teichmann@5831: package org.dive4elements.river.artifacts.datacage; sascha@983: teichmann@5831: import org.dive4elements.artifacts.common.utils.Config; sascha@983: teichmann@5831: import org.dive4elements.artifactdatabase.db.SQL; teichmann@5831: import org.dive4elements.artifactdatabase.db.DBConnection; sascha@983: sascha@983: import org.apache.log4j.Logger; sascha@983: sascha@983: public class DBConfig sascha@3076: { sascha@1015: private static Logger logger = Logger.getLogger(DBConfig.class); sascha@983: sascha@983: /** sascha@983: * XPath to access the database driver within the global configuration. sascha@983: */ sascha@983: public static final String DB_DRIVER = sascha@983: "/artifact-database/datacage/driver/text()"; sascha@983: /** sascha@983: * XPath to access the database URL within the global configuration. sascha@983: */ sascha@983: public static final String DB_URL = sascha@983: "/artifact-database/datacage/url/text()"; sascha@983: /** sascha@983: * XPath to access the database use within the global configuration. sascha@983: */ sascha@983: public static final String DB_USER = sascha@983: "/artifact-database/datacage/user/text()"; sascha@983: /** sascha@983: * XPath to access the database password within the global configuration. sascha@983: */ sascha@983: public static final String DB_PASSWORD = sascha@983: "/artifact-database/datacage/password/text()"; sascha@983: sascha@983: /** sascha@983: * The default database driver: H2 sascha@983: */ sascha@983: public static final String DEFAULT_DRIVER = sascha@983: "org.h2.Driver"; sascha@983: sascha@983: /** sascha@983: * The default database user: "" sascha@983: */ sascha@983: public static final String DEFAULT_USER = ""; sascha@983: sascha@983: /** sascha@983: * The default database password: "" sascha@983: */ sascha@983: public static final String DEFAULT_PASSWORD = ""; sascha@983: sascha@983: sascha@983: public static final String DEFAULT_URL = sascha@994: "jdbc:h2:mem:datacage;INIT=RUNSCRIPT FROM '${artifacts.config.dir}/datacage.sql'"; sascha@983: sascha@983: public static final String RESOURCE_PATH = "/datacage-sql"; sascha@983: sascha@983: private static DBConfig instance; sascha@983: sascha@983: protected DBConnection dbConnection; sascha@983: protected SQL sql; sascha@983: sascha@983: public DBConfig() { sascha@983: } sascha@983: sascha@983: public DBConfig(DBConnection dbConnection, SQL sql) { sascha@983: this.dbConnection = dbConnection; sascha@983: this.sql = sql; sascha@983: } sascha@983: sascha@983: public static synchronized DBConfig getInstance() { sascha@983: if (instance == null) { sascha@983: instance = createInstance(); sascha@983: } sascha@983: return instance; sascha@983: } sascha@983: sascha@983: protected static DBConfig createInstance() { sascha@983: String driver = Config.getStringXPath( sascha@983: DB_DRIVER, DEFAULT_DRIVER); sascha@983: sascha@983: String url = Config.getStringXPath( sascha@983: DB_URL, DEFAULT_URL); sascha@983: sascha@983: url = Config.replaceConfigDir(url); sascha@983: sascha@983: String user = Config.getStringXPath( sascha@983: DB_USER, DEFAULT_USER); sascha@983: sascha@983: String password = Config.getStringXPath( sascha@983: DB_PASSWORD, DEFAULT_PASSWORD); sascha@983: sascha@983: DBConnection dbConnection = new DBConnection( sascha@983: driver, url, user, password); sascha@983: sascha@983: SQL sql = new SQL(DBConfig.class, RESOURCE_PATH, driver); sascha@983: sascha@983: return new DBConfig(dbConnection, sql); sascha@983: } sascha@983: sascha@983: public DBConnection getDBConnection() { sascha@983: return dbConnection; sascha@983: } sascha@983: sascha@983: public SQL getSQL() { sascha@983: return sql; sascha@983: } sascha@983: } sascha@983: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :