Mercurial > dive4elements > river
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 :