diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/MetaDataService.java @ 415:7c018f466d6d

Datacage: Added river parameter to meta data services. flys-artifacts/trunk@1879 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 10 May 2011 12:43:12 +0000
parents fc3cf0ef777e
children 24b53f9aa9dc
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/MetaDataService.java	Tue May 10 12:19:17 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/MetaDataService.java	Tue May 10 12:43:12 2011 +0000
@@ -10,6 +10,9 @@
 
 import org.apache.log4j.Logger;
 
+import java.util.Map;
+import java.util.HashMap;
+
 import de.intevation.artifacts.CallMeta;
 import de.intevation.artifacts.ServiceFactory;
 
@@ -30,6 +33,8 @@
 {
     private static Logger log = Logger.getLogger(MetaDataService.class);
 
+    public static final String XPATH_RIVER = "//river/@name";
+
     public static final String META_DATA_TEMPLATE = "/metadata/template.xml";
 
     protected Builder builder;
@@ -37,6 +42,20 @@
     public MetaDataService() {
     }
 
+    protected static Map<String, Object> extractParameters(Document data) {
+        HashMap<String, Object> parameters = new HashMap<String, Object>();
+
+        String river = XMLUtils.xpathString(data, XPATH_RIVER, null);
+
+        if (river == null || (river = river.trim()).length() == 0) {
+            river = "%"; // matches all rivers
+        }
+
+        parameters.put("river", river);
+
+        return parameters;
+    }
+
     @Override
     public Document process(
         Document data,
@@ -52,6 +71,8 @@
             return result;
         }
 
+        final Map<String, Object> parameters = extractParameters(data);
+
         Session session = SessionHolder.acquire();
         try {
             session.doWork(new Work() {
@@ -60,7 +81,7 @@
                 throws SQLException
                 {
                     log.debug("MetaDataService.execute");
-                    builder.build(connection, result);
+                    builder.build(connection, result, parameters);
                 }
             });
         }

http://dive4elements.wald.intevation.org