sascha@983: package de.intevation.flys.artifacts.datacage;
sascha@983: 
sascha@983: import de.intevation.artifacts.common.utils.Config;
sascha@983: 
sascha@983: import de.intevation.artifactdatabase.db.SQL;
sascha@983: import de.intevation.artifactdatabase.db.DBConnection;
sascha@983: 
sascha@983: import org.apache.log4j.Logger;
sascha@983: 
sascha@983: public class DBConfig
sascha@983: { 
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 :