view flys-artifacts/src/main/java/de/intevation/flys/artifacts/datacage/DBConfig.java @ 5509:627584bc0586

Datacage: Added <dc:filter> element. This allows cleaner way to narrow the datasets. Example: <dc:context> <dc:statement> SELECT DISTINCT name AS hws_name, official AS hws_official, kind_id AS hws_kind FROM hws_lines WHERE river_id = ${river_id} </dc:statement> <dc:if test="dc:has-result()"> <lines> <dc:macro name="hws-lines"> <dc:elements> <hws factory="hwsfactory" name="{$hws_name}"/> </dc:elements> </dc:macro> <dc:filter expr="$hws_official=1"> <dc:if test="dc:has-result()"> <official> <dc:filter expr="$hws_kind=1"> <dc:if test="dc:has-result()"> <Durchlass><dc:call-macro name="hws-lines"></Durchlass> </dc:if> </dc:filter> <dc:filter expr="$hws_kind=2"> <dc:if test="dc:has-result()"> <Damm><dc:call-macro name="hws-lines"></Damm> </dc:if> </dc:filter> <dc:filter expr="$hws_kind=3"> <dc:if test="dc:has-result()"> <Graben><dc:call-macro name="hws-lines"></Graben> </dc:if> </dc:filter> </official> </dc:if> </dc:filter> </lines> </dc:if> </dc:context>
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 28 Mar 2013 16:51:15 +0100
parents 5642a83420f2
children
line wrap: on
line source
package de.intevation.flys.artifacts.datacage;

import de.intevation.artifacts.common.utils.Config;

import de.intevation.artifactdatabase.db.SQL;
import de.intevation.artifactdatabase.db.DBConnection;

import org.apache.log4j.Logger;

public class DBConfig
{
    private static Logger logger = Logger.getLogger(DBConfig.class);

     /**
     * XPath to access the database driver within the global configuration.
     */
    public static final String DB_DRIVER =
        "/artifact-database/datacage/driver/text()";
    /**
     * XPath to access the database URL within the global configuration.
     */
    public static final String DB_URL =
        "/artifact-database/datacage/url/text()";
    /**
     * XPath to access the database use within the global configuration.
     */
    public static final String DB_USER =
        "/artifact-database/datacage/user/text()";
    /**
     * XPath to access the database password within the global configuration.
     */
    public static final String DB_PASSWORD =
        "/artifact-database/datacage/password/text()";

    /**
     * The default database driver: H2
     */
    public static final String DEFAULT_DRIVER =
        "org.h2.Driver";

    /**
     * The default database user: ""
     */
    public static final String DEFAULT_USER = "";

    /**
     * The default database password: ""
     */
    public static final String DEFAULT_PASSWORD = "";


    public static final String DEFAULT_URL =
        "jdbc:h2:mem:datacage;INIT=RUNSCRIPT FROM '${artifacts.config.dir}/datacage.sql'";

    public static final String RESOURCE_PATH = "/datacage-sql";

    private static DBConfig instance;

    protected DBConnection dbConnection;
    protected SQL          sql;

    public DBConfig() {
    }

    public DBConfig(DBConnection dbConnection, SQL sql) {
        this.dbConnection = dbConnection;
        this.sql          = sql;
    }

    public static synchronized DBConfig getInstance() {
        if (instance == null) {
            instance = createInstance();
        }
        return instance;
    }

    protected static DBConfig createInstance() {
        String driver = Config.getStringXPath(
            DB_DRIVER, DEFAULT_DRIVER);

        String url = Config.getStringXPath(
            DB_URL, DEFAULT_URL);

        url = Config.replaceConfigDir(url);

        String user = Config.getStringXPath(
            DB_USER, DEFAULT_USER);

        String password = Config.getStringXPath(
            DB_PASSWORD, DEFAULT_PASSWORD);

        DBConnection dbConnection = new DBConnection(
            driver, url, user, password);

        SQL sql = new SQL(DBConfig.class, RESOURCE_PATH, driver);

        return new DBConfig(dbConnection, sql);
    }

    public DBConnection getDBConnection() {
        return dbConnection;
    }

    public SQL getSQL() {
        return sql;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org