diff gwt-client/src/main/java/org/dive4elements/river/client/server/CapabilitiesParser.java @ 6198:809c91beee54

CapabilitesParser can parse map format types now (#554).
author Christian Lins <christian.lins@intevation.de>
date Wed, 05 Jun 2013 12:56:24 +0200
parents ea9eef426962
children 734ba3732bb6
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/server/CapabilitiesParser.java	Wed Jun 05 11:54:24 2013 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/server/CapabilitiesParser.java	Wed Jun 05 12:56:24 2013 +0200
@@ -8,8 +8,14 @@
 
 package org.dive4elements.river.client.server;
 
+import org.dive4elements.artifacts.common.utils.XMLUtils;
+import org.dive4elements.river.client.shared.exceptions.ServerException;
+import org.dive4elements.river.client.shared.model.Capabilities;
+import org.dive4elements.river.client.shared.model.ContactInformation;
+import org.dive4elements.river.client.shared.model.WMSLayer;
+
+import java.io.IOException;
 import java.io.InputStream;
-import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLConnection;
@@ -20,21 +26,15 @@
 
 import javax.xml.xpath.XPathConstants;
 
+import org.apache.log4j.Logger;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
-import org.apache.log4j.Logger;
-
-import org.dive4elements.artifacts.common.utils.XMLUtils;
-
-import org.dive4elements.river.client.shared.exceptions.ServerException;
-import org.dive4elements.river.client.shared.model.Capabilities;
-import org.dive4elements.river.client.shared.model.ContactInformation;
-import org.dive4elements.river.client.shared.model.WMSLayer;
-
-
+/**
+ * Parser for GetCapabilities of a WMS.
+ */
 public class CapabilitiesParser {
 
     private static final Logger logger =
@@ -96,6 +96,9 @@
     public static final String XPATH_LAYERS =
         "Capability/Layer";
 
+    public static final String XPATH_MAP_FORMAT =
+        "Capability/Request/GetMap/Format";
+
     public static final Pattern SRS_PATTERN = Pattern.compile("(EPSG:\\d+)*");
 
 
@@ -110,9 +113,14 @@
         LoggingConfigurator.init(log4jProperties);
 
         try {
-            Capabilities caps = getCapabilities(System.getProperty("test.wms"));
+            String wmsURL = System.getProperty("test.wms");
+            if (wmsURL == null || args.length > 0) {
+                wmsURL = args[0];
+            }
+            Capabilities caps = getCapabilities(wmsURL);
 
             logger.debug(caps.toString());
+            System.out.println(caps.toString());
         }
         catch (ServerException se) {
             se.printStackTrace();
@@ -206,13 +214,22 @@
 
         List<WMSLayer> layers = parseLayers(layerNodes, onlineResource);
 
+        // Parse MIME types of supported return types, e.g. image/jpeg
+        NodeList mapFormatNodes = (NodeList)
+                XMLUtils.xpath(capabilities, XPATH_MAP_FORMAT, XPathConstants.NODESET);
+        List<String> mapFormats = new ArrayList<String>();
+        for (int n = 0; n < mapFormatNodes.getLength(); n++) {
+            mapFormats.add(mapFormatNodes.item(n).getTextContent());
+        }
+
         return new Capabilities(
             title,
             onlineResource,
             ci,
             fees,
             accessConstraints,
-            layers);
+            layers,
+            mapFormats);
     }
 
 

http://dive4elements.wald.intevation.org