diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/MetaDataService.java @ 947:db8d93cb65fd

Made meta data template configurable. flys-artifacts/trunk@2363 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 19 Jul 2011 16:39:32 +0000
parents 24b53f9aa9dc
children 0881cd4be773
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/MetaDataService.java	Tue Jul 19 16:14:52 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/MetaDataService.java	Tue Jul 19 16:39:32 2011 +0000
@@ -2,6 +2,8 @@
 
 import java.io.InputStream;
 import java.io.IOException;
+import java.io.File;
+import java.io.FileInputStream;
 
 import java.sql.Connection;
 import java.sql.SQLException;
@@ -18,6 +20,7 @@
 
 import de.intevation.artifactdatabase.DefaultService;
 
+import de.intevation.artifacts.common.utils.Config;
 import de.intevation.artifacts.common.utils.XMLUtils;
 
 import de.intevation.artifacts.common.ArtifactNamespaceContext;
@@ -35,10 +38,11 @@
 {
     private static Logger log = Logger.getLogger(MetaDataService.class);
 
+    public static final String XPATH_META_DATA_TEMPLATE =
+        "/artifact-database/metadata/@template";
+
     public static final String XPATH_RIVER = "/art:river/text()";
 
-    public static final String META_DATA_TEMPLATE = "/metadata/template.xml";
-
     protected Builder builder;
 
     public MetaDataService() {
@@ -100,14 +104,26 @@
     public void setup(ServiceFactory factory, Object globalContext) {
         log.debug("MetaDataService.setup");
 
-        InputStream in = getClass().getResourceAsStream(META_DATA_TEMPLATE);
+        String path = Config.getStringXPath(XPATH_META_DATA_TEMPLATE);
 
-        if (in == null) {
-            log.error("cannot get template resource");
+        if (path == null) {
+            log.error("no path to template file given");
             return;
         }
 
+        path = Config.replaceConfigDir(path);
+
+        File file = new File(path);
+
+        if (!file.isFile() || !file.canRead()) {
+            log.error("Cannot open template file '" + file + "'");
+            return;
+        }
+
+        InputStream in = null;
+
         try {
+            in = new FileInputStream(file);
             Document template = XMLUtils.parseDocument(in);
             if (template == null) {
                 log.error("cannot parse meta data template");
@@ -116,6 +132,9 @@
                 builder = new Builder(template);
             }
         }
+        catch (IOException ioe) {
+            log.error(ioe);
+        }
         finally {
             try {
                 in.close();

http://dive4elements.wald.intevation.org