Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/datacage/Recommendations.java @ 1046:0a5eff5511b1
Fixed flys/issue262: Unified user and system datacage template
flys-artifacts/trunk@2508 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 19 Aug 2011 09:48:13 +0000 |
parents | c586b6220f35 |
children | 3ca999f507b7 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/datacage/Recommendations.java Thu Aug 18 14:58:17 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/datacage/Recommendations.java Fri Aug 19 09:48:13 2011 +0000 @@ -14,8 +14,6 @@ import java.sql.Connection; import java.sql.SQLException; -import javax.sql.DataSource; - import org.apache.log4j.Logger; import org.w3c.dom.Document; @@ -43,11 +41,11 @@ private static final boolean DEVELOPMENT_MODE = Boolean.getBoolean("flys.datacage.recommendations.development"); - public static final String XPATH_SYSTEM_TEMPLATE = - "/artifact-database/metadata/system/@template"; + public static final String XPATH_TEMPLATE = + "/artifact-database/metadata/template/text()"; - public static final String XPATH_USER_TEMPLATE = - "/artifact-database/metadata/user/@template"; + public static final String DEFAULT_TEMPLATE_PATH = + "${artifacts.config.dir}/meta-data.xml"; private static Recommendations INSTANCE; @@ -102,25 +100,17 @@ } } // class BuilderProvider - protected BuilderProvider systemBuilderProvider; - protected BuilderProvider userBuilderProvider; + protected BuilderProvider builderProvider; public Recommendations() { } - public Recommendations( - BuilderProvider systemBuilderProvider, - BuilderProvider userBuilderProvider) { - this.systemBuilderProvider = systemBuilderProvider; - this.userBuilderProvider = userBuilderProvider; + public Recommendations(BuilderProvider builderProvider) { + this.builderProvider = builderProvider; } - public Builder getUserBuilder() { - return userBuilderProvider.getBuilder(); - } - - public Builder getSystemBuilder() { - return systemBuilderProvider.getBuilder(); + public Builder getBuilder() { + return builderProvider.getBuilder(); } protected static void artifactToParameters( @@ -190,32 +180,29 @@ List<Builder.NamedConnection> connections = new ArrayList<Builder.NamedConnection>(2); - if (userId != null) { // Use system and user templates. - // Get connection to datacage db. - DataSource dataSource = DBConfig + Connection userConnection = userId != null + ? DBConfig .getInstance() .getDBConnection() - .getDataSource(); + .getDataSource() + .getConnection() + : null; - Connection userConnection = dataSource.getConnection(); - try { + try { + if (userConnection != null) { connections.add(new Builder.NamedConnection( Builder.CONNECTION_USER, userConnection, false)); - - connections.add(new Builder.NamedConnection( - Builder.CONNECTION_SYSTEM, systemConnection, true)); + } - getUserBuilder().build(connections, result, parameters); - } - finally { - userConnection.close(); - } - } - else { // Use system template only. connections.add(new Builder.NamedConnection( Builder.CONNECTION_SYSTEM, systemConnection, true)); - getSystemBuilder().build(connections, result, parameters); + getBuilder().build(connections, result, parameters); + } + finally { + if (userConnection != null) { + userConnection.close(); + } } } }); @@ -253,62 +240,42 @@ } } - public static Recommendations createRecommendations( - File systemFile, - File userFile - ) { + public static Recommendations createRecommendations(File file) { log.debug("Recommendations.createBuilder"); - if (!systemFile.isFile() || !systemFile.canRead()) { - log.error("Cannot open template file '" + systemFile + "'"); + if (!file.isFile() || !file.canRead()) { + log.error("Cannot open template file '" + file + "'"); return null; } - if (!userFile.isFile() || !userFile.canRead()) { - log.error("Cannot open template file '" + userFile + "'"); - return null; - } + FileBuilderProvider fbp = new FileBuilderProvider(file); - FileBuilderProvider ufbp = new FileBuilderProvider(userFile); - FileBuilderProvider sfbp = new FileBuilderProvider(systemFile); - - if (ufbp.getBuilder() == null || sfbp.getBuilder() == null) { + if (fbp.getBuilder() == null) { log.error("failed loading builder"); return null; } - BuilderProvider ubp; - BuilderProvider sbp; + BuilderProvider bp = DEVELOPMENT_MODE + ? fbp + : fbp.toStaticProvider(); - if (DEVELOPMENT_MODE) { - ubp = ufbp; - sbp = sfbp; - } - else { - ubp = ufbp.toStaticProvider(); - sbp = sfbp.toStaticProvider(); - } - - return new Recommendations(sbp, ubp); + return new Recommendations(bp); } protected static Recommendations createRecommendations() { log.debug("Recommendations.createRecommendations"); - String systemPath = Config.getStringXPath(XPATH_SYSTEM_TEMPLATE); - String userPath = Config.getStringXPath(XPATH_USER_TEMPLATE); + String path = Config.getStringXPath(XPATH_TEMPLATE); - if (systemPath == null || userPath == null) { - log.error("no path to template file given"); - return null; + if (path == null) { + path = DEFAULT_TEMPLATE_PATH; } - systemPath = Config.replaceConfigDir(systemPath); - userPath = Config.replaceConfigDir(userPath); + path = Config.replaceConfigDir(path); - return createRecommendations( - new File(systemPath), - new File(userPath)); + log.info("Meta data template: " + path); + + return createRecommendations(new File(path)); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :