diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/WMSBackgroundState.java @ 1063:e7c1ebfc2701

Repaired xpath expressions for wms srid and background layers that broke after the floodmap config structure changed. flys-artifacts/trunk@2541 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 24 Aug 2011 07:51:12 +0000
parents ae198bef4ba0
children 7f5426c69ee0
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/WMSBackgroundState.java	Tue Aug 23 15:32:33 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/WMSBackgroundState.java	Wed Aug 24 07:51:12 2011 +0000
@@ -1,14 +1,20 @@
 package de.intevation.flys.artifacts.states;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+
+import javax.xml.xpath.XPathConstants;
 
 import org.apache.log4j.Logger;
 
+import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 
 import de.intevation.artifacts.CallMeta;
 
 import de.intevation.artifacts.common.utils.Config;
+import de.intevation.artifacts.common.utils.XMLUtils;
 
 import de.intevation.artifactdatabase.state.Facet;
 
@@ -23,10 +29,10 @@
     public static final String I18N_DESCRIPTION = "floodmap.wmsbackground";
 
     public static final String XPATH_WMS_URL =
-        "/artifact-database/floodmap/background-layer/@url";
+        "/artifact-database/floodmap/river[@name=$name]/background-wms/@url";
 
     public static final String XPATH_WMS_LAYER =
-        "/artifact-database/floodmap/background-layer/@layer";
+        "/artifact-database/floodmap/river[@name=$name]/background-wms/@layers";
 
 
     protected String url;
@@ -41,9 +47,6 @@
         super.setup(config);
 
         logger.debug("WMSBackgroundState.setup()");
-
-        this.url   = Config.getStringXPath(XPATH_WMS_URL);
-        this.layer = Config.getStringXPath(XPATH_WMS_LAYER);
     }
 
 
@@ -58,6 +61,29 @@
         logger.debug("WMSBackgroundState.computeInit()");
 
         if (url == null || layer == null) {
+            Document cfg = Config.getConfig();
+
+            String river = artifact.getDataAsString("river");
+
+            Map<String, String> variables = new HashMap<String, String>();
+            variables.put("name", river);
+
+            url = (String) XMLUtils.xpath(
+                cfg,
+                XPATH_WMS_URL,
+                XPathConstants.STRING,
+                null,
+                variables);
+
+            layer = (String) XMLUtils.xpath(
+                cfg,
+                XPATH_WMS_LAYER,
+                XPathConstants.STRING,
+                null,
+                variables);
+        }
+
+        if (url == null || layer == null) {
             logger.warn("No background layers currently configured:");
             logger.warn("... add config for WMS url: " + XPATH_WMS_URL);
             logger.warn("... add config for WMS layer: " + XPATH_WMS_LAYER);

http://dive4elements.wald.intevation.org