diff flys-client/src/main/java/de/intevation/flys/client/server/GCServiceImpl.java @ 1417:42d6cf6e10b7

Moved code to parse WMS Capabilities to an own class 'CapabilitiesParser' and added code to parse SRS definitions. flys-client/trunk@3325 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 28 Nov 2011 15:55:26 +0000
parents 16f19f12a962
children
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/server/GCServiceImpl.java	Wed Nov 23 09:45:22 2011 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/server/GCServiceImpl.java	Mon Nov 28 15:55:26 2011 +0000
@@ -1,29 +1,11 @@
 package de.intevation.flys.client.server;
 
-import java.io.InputStream;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.xpath.XPathConstants;
-
 import com.google.gwt.user.server.rpc.RemoteServiceServlet;
 
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
 import org.apache.log4j.Logger;
 
-import de.intevation.artifacts.common.utils.XMLUtils;
-
 import de.intevation.flys.client.shared.exceptions.ServerException;
 import de.intevation.flys.client.shared.model.Capabilities;
-import de.intevation.flys.client.shared.model.ContactInformation;
-import de.intevation.flys.client.shared.model.WMSLayer;
 import de.intevation.flys.client.client.services.GCService;
 
 
@@ -34,62 +16,7 @@
 extends      RemoteServiceServlet
 implements   GCService
 {
-    public static final String ERR_GC_REQUEST_FAILED =
-        "error_gc_req_failed";
-
-    public static final String ERR_GC_DOC_NOT_VALID =
-        "error_gc_doc_not_valid";
-
-    public static final String ERR_MALFORMED_URL =
-        "error_malformed_url";
-
-    public static final String XPATH_WMS_CAPS =
-        "/WMS_Capabilities";
-
-    public static final String XPATH_WMT_CAPS =
-        "/WMT_MS_Capabilities";
-
-    public static final String XPATH_TITLE =
-        "Service/Title/text()";
-
-    public static final String XPATH_ONLINE_RESOURCE =
-        "Service/OnlineResource/@href";
-
-    public static final String XPATH_CONTACT_INFORMATION =
-        "Service/ContactInformation";
-
-    public static final String XPATH_CI_PERSON =
-        "ContactPersonPrimary/ContactPerson/text()";
-
-    public static final String XPATH_CI_ORGANIZATION =
-        "ContactPersonPrimary/ContactOrganization/text()";
-
-    public static final String XPATH_CI_ADDRESS =
-        "ContactAddress/Address/text()";
-
-    public static final String XPATH_CI_CITY =
-        "ContactAddress/City/text()";
-
-    public static final String XPATH_CI_POSTCODE =
-        "ContactAddress/PostCode/text()";
-
-    public static final String XPATH_CI_PHONE =
-        "ContactVoiceTelephone/text()";
-
-    public static final String XPATH_CI_EMAIL =
-        "ContactElectronicMailAddress/text()";
-
-    public static final String XPATH_FEES =
-        "Service/Fees/text()";
-
-    public static final String XPATH_ACCESS_CONSTRAINTS =
-        "Service/AccessConstraints/text()";
-
-    public static final String XPATH_LAYERS =
-        "Capability/Layer";
-
-
-    private Logger logger = Logger.getLogger(GCServiceImpl.class);
+    private static Logger logger = Logger.getLogger(GCServiceImpl.class);
 
 
     public Capabilities query(String path)
@@ -97,209 +24,7 @@
     {
         logger.info("GCServiceImpl.query");
 
-        try {
-            URL url = new URL(path);
-
-            logger.debug("Open connection to url: " + path);
-
-            URLConnection conn = url.openConnection();
-            conn.connect();
-
-            InputStream is = conn.getInputStream();
-
-            return parseCapabilitiesResponse(is);
-        }
-        catch (MalformedURLException mue) {
-            logger.warn(mue, mue);
-            throw new ServerException(ERR_MALFORMED_URL);
-        }
-        catch (IOException ioe) {
-            logger.warn(ioe, ioe);
-        }
-
-        throw new ServerException(ERR_GC_REQUEST_FAILED);
-    }
-
-
-    protected Capabilities parseCapabilitiesResponse(InputStream is)
-    throws ServerException
-    {
-        logger.debug("GCServiceImpl.parseCapabilitiesResponse");
-
-        Document doc = XMLUtils.parseDocument(is, false);
-
-        if (doc == null) {
-            throw new ServerException(ERR_GC_DOC_NOT_VALID);
-        }
-
-        Node capabilities = getCapabilitiesNode(doc);
-
-        String title = (String) XMLUtils.xpath(
-            capabilities,
-            XPATH_TITLE,
-            XPathConstants.STRING);
-
-        String onlineResource = (String) XMLUtils.xpath(
-            capabilities,
-            XPATH_ONLINE_RESOURCE,
-            XPathConstants.STRING);
-
-        String fees = (String) XMLUtils.xpath(
-            capabilities,
-            XPATH_FEES,
-            XPathConstants.STRING);
-
-        String accessConstraints = (String) XMLUtils.xpath(
-            capabilities,
-            XPATH_ACCESS_CONSTRAINTS,
-            XPathConstants.STRING);
-
-        Node contactInformation = (Node) XMLUtils.xpath(
-            capabilities,
-            XPATH_CONTACT_INFORMATION,
-            XPathConstants.NODE);
-
-        ContactInformation ci = parseContactInformation(contactInformation);
-
-        logger.debug("Found fees: " + fees);
-        logger.debug("Found access constraints: " + accessConstraints);
-
-        NodeList layerNodes = (NodeList) XMLUtils.xpath(
-            capabilities,
-            XPATH_LAYERS,
-            XPathConstants.NODESET);
-
-        List<WMSLayer> layers = parseLayers(layerNodes, onlineResource);
-
-        return new Capabilities(
-            title,
-            onlineResource,
-            ci,
-            fees,
-            accessConstraints,
-            layers);
-    }
-
-
-    protected Node getCapabilitiesNode(Document doc)
-    throws    ServerException {
-        Node capabilities = (Node) XMLUtils.xpath(
-            doc,
-            XPATH_WMS_CAPS,
-            XPathConstants.NODE);
-
-        if (capabilities == null) {
-            logger.info("No '/WMS_Capabilities' node found.");
-            logger.info("Try to find a '/WMT_MS_Capabilities' node.");
-
-            capabilities = (Node) XMLUtils.xpath(
-                doc,
-                XPATH_WMT_CAPS,
-                XPathConstants.NODE);
-        }
-
-        if (capabilities == null) {
-            throw new ServerException(ERR_GC_DOC_NOT_VALID);
-        }
-
-        return capabilities;
-    }
-
-
-    protected ContactInformation parseContactInformation(Node node) {
-        String person = (String) XMLUtils.xpath(
-            node,
-            XPATH_CI_PERSON,
-            XPathConstants.STRING);
-
-        String organization = (String) XMLUtils.xpath(
-            node,
-            XPATH_CI_ORGANIZATION,
-            XPathConstants.STRING);
-
-        String address = (String) XMLUtils.xpath(
-            node,
-            XPATH_CI_ADDRESS,
-            XPathConstants.STRING);
-
-        String postcode = (String) XMLUtils.xpath(
-            node,
-            XPATH_CI_POSTCODE,
-            XPathConstants.STRING);
-
-        String city = (String) XMLUtils.xpath(
-            node,
-            XPATH_CI_CITY,
-            XPathConstants.STRING);
-
-        String phone = (String) XMLUtils.xpath(
-            node,
-            XPATH_CI_PHONE,
-            XPathConstants.STRING);
-
-        String email = (String) XMLUtils.xpath(
-            node,
-            XPATH_CI_EMAIL,
-            XPathConstants.STRING);
-
-        ContactInformation ci = new ContactInformation();
-        ci.setPerson(person);
-        ci.setOrganization(organization);
-        ci.setAddress(address);
-        ci.setPostcode(postcode);
-        ci.setCity(city);
-        ci.setPhone(phone);
-        ci.setEmail(email);
-
-        return ci;
-    }
-
-
-    /**
-     * @param layersNode
-     * @param onlineResource
-     *
-     * @return
-     */
-    protected List<WMSLayer> parseLayers(
-        NodeList layersNode,
-        String   onlineResource
-    ) {
-        int len = layersNode != null ? layersNode.getLength() : 0;
-
-        logger.debug("Node has " + len + " layers.");
-
-        List<WMSLayer> layers = new ArrayList<WMSLayer>(len);
-
-        for (int i = 0; i < len; i++) {
-            layers.add(parseLayer(layersNode.item(i), onlineResource));
-        }
-
-        return layers;
-    }
-
-
-    protected WMSLayer parseLayer(Node layerNode, String onlineResource) {
-        String title = (String) XMLUtils.xpath(
-            layerNode,
-            "Title/text()",
-            XPathConstants.STRING);
-
-        String name = (String) XMLUtils.xpath(
-            layerNode,
-            "Name/text()",
-            XPathConstants.STRING);
-
-        logger.debug("Found layers: " + title + "(" + name + ")");
-
-        NodeList layersNodes = (NodeList) XMLUtils.xpath(
-            layerNode,
-            "Layer",
-            XPathConstants.NODESET);
-
-        List<WMSLayer> layers = parseLayers(layersNodes, onlineResource);
-
-        return new WMSLayer(onlineResource, title, name, layers);
+        return CapabilitiesParser.getCapabilities(path);
     }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org