changeset 4243:e68a710d9652

Convert GaugeOverviewInfoService into RiverInfoService The service will be reused for the MeasurementStation info too and it returns a RiverInfo in both cases. Therefore rename the current GaugeOverviewInfoService into RiverInfoService.
author Björn Ricks <bjoern.ricks@intevation.de>
date Wed, 24 Oct 2012 15:50:41 +0200
parents 448cbd8708d5
children 3e62c8f8d475
files flys-client/src/main/java/de/intevation/flys/client/client/services/GaugeOverviewInfoService.java flys-client/src/main/java/de/intevation/flys/client/client/services/GaugeOverviewInfoServiceAsync.java flys-client/src/main/java/de/intevation/flys/client/client/services/RiverInfoService.java flys-client/src/main/java/de/intevation/flys/client/client/services/RiverInfoServiceAsync.java flys-client/src/main/java/de/intevation/flys/client/client/ui/GaugePanel.java flys-client/src/main/java/de/intevation/flys/client/server/GaugeOverviewInfoServiceImpl.java flys-client/src/main/java/de/intevation/flys/client/server/RiverInfoServiceImpl.java
diffstat 7 files changed, 250 insertions(+), 245 deletions(-) [+]
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/client/services/GaugeOverviewInfoService.java	Wed Oct 24 14:44:12 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-package de.intevation.flys.client.client.services;
-
-import com.google.gwt.user.client.rpc.RemoteService;
-import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
-
-import de.intevation.flys.client.shared.exceptions.ServerException;
-import de.intevation.flys.client.shared.model.RiverInfo;
-
-/**
- * @author <a href="mailto:bjoern.ricks@intevation.de">Björn Ricks</a>
- */
-@RemoteServiceRelativePath("gaugeoverviewinfo")
-public interface GaugeOverviewInfoService extends RemoteService {
-
-    public RiverInfo getRiverInfo(String river) throws ServerException;
-
-}
--- a/flys-client/src/main/java/de/intevation/flys/client/client/services/GaugeOverviewInfoServiceAsync.java	Wed Oct 24 14:44:12 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-package de.intevation.flys.client.client.services;
-
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
-import de.intevation.flys.client.shared.model.RiverInfo;
-
-
-/**
- * @author <a href="mailto:bjoern.ricks@intevation.de">Björn Ricks</a>
- */
-public interface GaugeOverviewInfoServiceAsync {
-
-    public void getRiverInfo(String river, AsyncCallback<RiverInfo> callback);
-}
-
-// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 tw=80 :
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/services/RiverInfoService.java	Wed Oct 24 15:50:41 2012 +0200
@@ -0,0 +1,21 @@
+package de.intevation.flys.client.client.services;
+
+import com.google.gwt.user.client.rpc.RemoteService;
+import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
+
+import de.intevation.flys.client.shared.exceptions.ServerException;
+import de.intevation.flys.client.shared.model.RiverInfo;
+
+/**
+ * @author <a href="mailto:bjoern.ricks@intevation.de">Björn Ricks</a>
+ */
+@RemoteServiceRelativePath("riverinfo")
+public interface RiverInfoService extends RemoteService {
+
+    /**
+     * Returns a RiverInfo object with GaugeInfos
+     */
+    public RiverInfo getGauges(String river)
+        throws ServerException;
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/services/RiverInfoServiceAsync.java	Wed Oct 24 15:50:41 2012 +0200
@@ -0,0 +1,16 @@
+package de.intevation.flys.client.client.services;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
+import de.intevation.flys.client.shared.model.RiverInfo;
+
+
+/**
+ * @author <a href="mailto:bjoern.ricks@intevation.de">Björn Ricks</a>
+ */
+public interface RiverInfoServiceAsync {
+
+    public void getGauges(String river, AsyncCallback<RiverInfo> callback);
+}
+
+// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 tw=80 :
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/GaugePanel.java	Wed Oct 24 14:44:12 2012 +0200
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/GaugePanel.java	Wed Oct 24 15:50:41 2012 +0200
@@ -16,8 +16,8 @@
 
 import de.intevation.flys.client.client.FLYS;
 import de.intevation.flys.client.client.FLYSConstants;
-import de.intevation.flys.client.client.services.GaugeOverviewInfoService;
-import de.intevation.flys.client.client.services.GaugeOverviewInfoServiceAsync;
+import de.intevation.flys.client.client.services.RiverInfoService;
+import de.intevation.flys.client.client.services.RiverInfoServiceAsync;
 import de.intevation.flys.client.shared.model.DataList;
 import de.intevation.flys.client.shared.model.RiverInfo;
 
@@ -39,8 +39,8 @@
     /** The message class that provides i18n strings.*/
     protected FLYSConstants MSG = GWT.create(FLYSConstants.class);
 
-    protected GaugeOverviewInfoServiceAsync gaugeOverviewInfoService =
-        GWT.create(GaugeOverviewInfoService.class);
+    protected RiverInfoServiceAsync riverInfoService =
+        GWT.create(RiverInfoService.class);
 
     protected GaugeTree gaugetree;
     protected Canvas gaugetreecanvas;
@@ -88,7 +88,7 @@
      * Loads the river info and renders it afterwards
      */
     public void refresh() {
-        gaugeOverviewInfoService.getRiverInfo(this.river, new AsyncCallback<RiverInfo>() {
+        riverInfoService.getGauges(this.river, new AsyncCallback<RiverInfo>() {
             @Override
             public void onFailure(Throwable e) {
                 GWT.log("Could not load the river info." + e);
--- a/flys-client/src/main/java/de/intevation/flys/client/server/GaugeOverviewInfoServiceImpl.java	Wed Oct 24 14:44:12 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,207 +0,0 @@
-package de.intevation.flys.client.server;
-
-import java.util.ArrayList;
-import javax.xml.xpath.XPathConstants;
-
-import org.apache.log4j.Logger;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-
-import de.intevation.artifacts.common.ArtifactNamespaceContext;
-import de.intevation.artifacts.common.utils.XMLUtils;
-import de.intevation.artifacts.httpclient.exceptions.ConnectionException;
-import de.intevation.artifacts.httpclient.http.HttpClient;
-import de.intevation.artifacts.httpclient.http.HttpClientImpl;
-
-import de.intevation.flys.client.client.services.GaugeOverviewInfoService;
-import de.intevation.flys.client.shared.exceptions.ServerException;
-import de.intevation.flys.client.shared.model.DefaultGaugeInfo;
-import de.intevation.flys.client.shared.model.DefaultRiverInfo;
-import de.intevation.flys.client.shared.model.GaugeInfo;
-import de.intevation.flys.client.shared.model.RiverInfo;
-
-/**
- * @author <a href="mailto:bjoern.ricks@intevation.de">Björn Ricks</a>
- */
-public class GaugeOverviewInfoServiceImpl
-extends      RemoteServiceServlet
-implements   GaugeOverviewInfoService
-{
-    private static final Logger logger =
-        Logger.getLogger(GaugeOverviewInfoServiceImpl.class);
-
-    public static final String ERROR_NO_RIVERINFO_FOUND =
-        "error_no_gaugeoverviewinfo_found";
-
-    private static final String XPATH_RIVER = "/art:gauge-info/art:river";
-
-    private static final String XPATH_GAUGES = "/art:gauge-info/art:gauges/art:gauge";
-
-    public RiverInfo getRiverInfo(String river) throws ServerException {
-        logger.info("RiverInfoServiceImpl.getRiverInfo");
-
-        String url = getServletContext().getInitParameter("server-url");
-
-        Document doc = XMLUtils.newDocument();
-
-        XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator(
-            doc,
-            ArtifactNamespaceContext.NAMESPACE_URI,
-            ArtifactNamespaceContext.NAMESPACE_PREFIX);
-
-        Element riverele = ec.create("river");
-        riverele.setTextContent(river);
-
-        doc.appendChild(riverele);
-
-        HttpClient client = new HttpClientImpl(url);
-
-        try {
-            Document result = client.callService(url, "gaugeoverviewinfo", doc);
-
-            Element riverresp = (Element) XMLUtils.xpath(
-                    result,
-                    XPATH_RIVER,
-                    XPathConstants.NODE,
-                    ArtifactNamespaceContext.INSTANCE);
-
-            String rname = riverresp.getAttributeNS(
-                    ArtifactNamespaceContext.NAMESPACE_URI, "name");
-            String rkmup = riverresp.getAttributeNS(
-                    ArtifactNamespaceContext.NAMESPACE_URI, "kmup");
-            String rstart = riverresp.getAttributeNS(
-                    ArtifactNamespaceContext.NAMESPACE_URI, "start");
-            String rend = riverresp.getAttributeNS(
-                    ArtifactNamespaceContext.NAMESPACE_URI, "end");
-            String rwstunit = riverresp.getAttributeNS(
-                    ArtifactNamespaceContext.NAMESPACE_URI, "wstunit");
-            String rminq = riverresp.getAttributeNS(
-                    ArtifactNamespaceContext.NAMESPACE_URI, "minq");
-            String rmaxq = riverresp.getAttributeNS(
-                    ArtifactNamespaceContext.NAMESPACE_URI, "maxq");
-            String rofficial = riverresp.getAttributeNS(
-                    ArtifactNamespaceContext.NAMESPACE_URI, "official");
-
-            logger.debug("River is " + rname);
-
-            boolean kmup = rkmup.equalsIgnoreCase("true");
-
-            NodeList gaugenodes = (NodeList) XMLUtils.xpath(
-                result,
-                XPATH_GAUGES,
-                XPathConstants.NODESET,
-                ArtifactNamespaceContext.INSTANCE);
-
-            int num = gaugenodes == null ? 0 : gaugenodes.getLength();
-
-            ArrayList<GaugeInfo> gauges = new ArrayList<GaugeInfo>(num);
-
-            if (num == 0) {
-                logger.warn("No gauge info found.");
-            }
-            else {
-                logger.debug("Found " + num + " gauges.");
-
-                for (int i = 0; i < num; i++) {
-                    Element gaugeele = (Element)gaugenodes.item(i);
-
-                    String gname = gaugeele.getAttributeNS(
-                            ArtifactNamespaceContext.NAMESPACE_URI, "name");
-                    String gstart = gaugeele.getAttributeNS(
-                            ArtifactNamespaceContext.NAMESPACE_URI, "start");
-                    String gend = gaugeele.getAttributeNS(
-                            ArtifactNamespaceContext.NAMESPACE_URI, "end");
-                    String gdatum = gaugeele.getAttributeNS(
-                            ArtifactNamespaceContext.NAMESPACE_URI, "datum");
-                    String gaeo = gaugeele.getAttributeNS(
-                            ArtifactNamespaceContext.NAMESPACE_URI, "aeo");
-                    String gminq = gaugeele.getAttributeNS(
-                            ArtifactNamespaceContext.NAMESPACE_URI, "minq");
-                    String gminw = gaugeele.getAttributeNS(
-                            ArtifactNamespaceContext.NAMESPACE_URI, "minw");
-                    String gmaxq = gaugeele.getAttributeNS(
-                            ArtifactNamespaceContext.NAMESPACE_URI, "maxq");
-                    String gmaxw = gaugeele.getAttributeNS(
-                            ArtifactNamespaceContext.NAMESPACE_URI, "maxw");
-                    String gstation = gaugeele.getAttributeNS(
-                            ArtifactNamespaceContext.NAMESPACE_URI, "station");
-                    String gofficial = gaugeele.getAttributeNS(
-                            ArtifactNamespaceContext.NAMESPACE_URI, "official");
-
-                    logger.debug("Found gauge with name " + gname);
-
-                    GaugeInfo gaugeinfo = new DefaultGaugeInfo(
-                            rname,
-                            gname,
-                            kmup,
-                            parseDouble(gstation),
-                            parseDouble(gstart),
-                            parseDouble(gend),
-                            parseDouble(gdatum),
-                            parseDouble(gaeo),
-                            parseDouble(gminq),
-                            parseDouble(gmaxq),
-                            parseDouble(gminw),
-                            parseDouble(gmaxw),
-                            rwstunit,
-                            parseLong(gofficial)
-                            );
-
-                    gauges.add(gaugeinfo);
-                }
-            }
-
-            RiverInfo riverinfo = new DefaultRiverInfo(
-                    rname,
-                    kmup,
-                    parseDouble(rstart),
-                    parseDouble(rend),
-                    rwstunit,
-                    parseDouble(rminq),
-                    parseDouble(rmaxq),
-                    parseLong(rofficial),
-                    gauges);
-
-            logger.debug("Finished RiverInfoService.");
-
-            return riverinfo;
-        }
-        catch (ConnectionException ce) {
-            logger.error(ce, ce);
-        }
-
-        logger.warn("No gauge found");
-        throw new ServerException(ERROR_NO_RIVERINFO_FOUND);
-    }
-
-    /**
-     * Avoids NullPointerException when parsing double value
-     */
-    private Double parseDouble(String value) {
-        if (value == null || value.isEmpty()) {
-            return null;
-        }
-        try {
-            return Double.valueOf(value);
-        }
-        catch(NumberFormatException e) {
-            logger.error(e, e);
-            return null;
-        }
-    }
-
-    private Long parseLong(String value) {
-        if (value == null || value.isEmpty()) {
-            return null;
-        }
-        try {
-            return Long.valueOf(value);
-        }
-        catch(NumberFormatException e) {
-            logger.error(e, e);
-            return null;
-        }
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/server/RiverInfoServiceImpl.java	Wed Oct 24 15:50:41 2012 +0200
@@ -0,0 +1,208 @@
+package de.intevation.flys.client.server;
+
+import java.util.ArrayList;
+import javax.xml.xpath.XPathConstants;
+
+import org.apache.log4j.Logger;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+import de.intevation.artifacts.common.ArtifactNamespaceContext;
+import de.intevation.artifacts.common.utils.XMLUtils;
+import de.intevation.artifacts.httpclient.exceptions.ConnectionException;
+import de.intevation.artifacts.httpclient.http.HttpClient;
+import de.intevation.artifacts.httpclient.http.HttpClientImpl;
+
+import de.intevation.flys.client.client.services.RiverInfoService;
+import de.intevation.flys.client.shared.exceptions.ServerException;
+import de.intevation.flys.client.shared.model.DefaultGaugeInfo;
+import de.intevation.flys.client.shared.model.DefaultRiverInfo;
+import de.intevation.flys.client.shared.model.GaugeInfo;
+import de.intevation.flys.client.shared.model.RiverInfo;
+
+/**
+ * @author <a href="mailto:bjoern.ricks@intevation.de">Björn Ricks</a>
+ */
+public class RiverInfoServiceImpl
+extends      RemoteServiceServlet
+implements   RiverInfoService
+{
+    private static final Logger logger =
+        Logger.getLogger(RiverInfoServiceImpl.class);
+
+    public static final String ERROR_NO_RIVERINFO_FOUND =
+        "error_no_gaugeoverviewinfo_found";
+
+    private static final String XPATH_RIVER = "/art:gauge-info/art:river";
+
+    private static final String XPATH_GAUGES = "/art:gauge-info/art:gauges/art:gauge";
+
+    public RiverInfo getGauges(String river) throws ServerException {
+        logger.info("RiverInfoServiceImpl.getRiverInfo");
+
+        String url = getServletContext().getInitParameter("server-url");
+
+        Document doc = XMLUtils.newDocument();
+
+        XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator(
+            doc,
+            ArtifactNamespaceContext.NAMESPACE_URI,
+            ArtifactNamespaceContext.NAMESPACE_PREFIX);
+
+        Element riverele = ec.create("river");
+        riverele.setTextContent(river);
+
+        doc.appendChild(riverele);
+
+        HttpClient client = new HttpClientImpl(url);
+
+        try {
+            Document result = client.callService(url, "gaugeoverviewinfo", doc);
+
+            Element riverresp = (Element) XMLUtils.xpath(
+                    result,
+                    XPATH_RIVER,
+                    XPathConstants.NODE,
+                    ArtifactNamespaceContext.INSTANCE);
+
+            String rname = riverresp.getAttributeNS(
+                    ArtifactNamespaceContext.NAMESPACE_URI, "name");
+            String rkmup = riverresp.getAttributeNS(
+                    ArtifactNamespaceContext.NAMESPACE_URI, "kmup");
+            String rstart = riverresp.getAttributeNS(
+                    ArtifactNamespaceContext.NAMESPACE_URI, "start");
+            String rend = riverresp.getAttributeNS(
+                    ArtifactNamespaceContext.NAMESPACE_URI, "end");
+            String rwstunit = riverresp.getAttributeNS(
+                    ArtifactNamespaceContext.NAMESPACE_URI, "wstunit");
+            String rminq = riverresp.getAttributeNS(
+                    ArtifactNamespaceContext.NAMESPACE_URI, "minq");
+            String rmaxq = riverresp.getAttributeNS(
+                    ArtifactNamespaceContext.NAMESPACE_URI, "maxq");
+            String rofficial = riverresp.getAttributeNS(
+                    ArtifactNamespaceContext.NAMESPACE_URI, "official");
+
+            logger.debug("River is " + rname);
+
+            boolean kmup = rkmup.equalsIgnoreCase("true");
+
+            NodeList gaugenodes = (NodeList) XMLUtils.xpath(
+                result,
+                XPATH_GAUGES,
+                XPathConstants.NODESET,
+                ArtifactNamespaceContext.INSTANCE);
+
+            int num = gaugenodes == null ? 0 : gaugenodes.getLength();
+
+            ArrayList<GaugeInfo> gauges = new ArrayList<GaugeInfo>(num);
+
+            if (num == 0) {
+                logger.warn("No gauge info found.");
+            }
+            else {
+                logger.debug("Found " + num + " gauges.");
+
+                for (int i = 0; i < num; i++) {
+                    Element gaugeele = (Element)gaugenodes.item(i);
+
+                    String gname = gaugeele.getAttributeNS(
+                            ArtifactNamespaceContext.NAMESPACE_URI, "name");
+                    String gstart = gaugeele.getAttributeNS(
+                            ArtifactNamespaceContext.NAMESPACE_URI, "start");
+                    String gend = gaugeele.getAttributeNS(
+                            ArtifactNamespaceContext.NAMESPACE_URI, "end");
+                    String gdatum = gaugeele.getAttributeNS(
+                            ArtifactNamespaceContext.NAMESPACE_URI, "datum");
+                    String gaeo = gaugeele.getAttributeNS(
+                            ArtifactNamespaceContext.NAMESPACE_URI, "aeo");
+                    String gminq = gaugeele.getAttributeNS(
+                            ArtifactNamespaceContext.NAMESPACE_URI, "minq");
+                    String gminw = gaugeele.getAttributeNS(
+                            ArtifactNamespaceContext.NAMESPACE_URI, "minw");
+                    String gmaxq = gaugeele.getAttributeNS(
+                            ArtifactNamespaceContext.NAMESPACE_URI, "maxq");
+                    String gmaxw = gaugeele.getAttributeNS(
+                            ArtifactNamespaceContext.NAMESPACE_URI, "maxw");
+                    String gstation = gaugeele.getAttributeNS(
+                            ArtifactNamespaceContext.NAMESPACE_URI, "station");
+                    String gofficial = gaugeele.getAttributeNS(
+                            ArtifactNamespaceContext.NAMESPACE_URI, "official");
+
+                    logger.debug("Found gauge with name " + gname);
+
+                    GaugeInfo gaugeinfo = new DefaultGaugeInfo(
+                            rname,
+                            gname,
+                            kmup,
+                            parseDouble(gstation),
+                            parseDouble(gstart),
+                            parseDouble(gend),
+                            parseDouble(gdatum),
+                            parseDouble(gaeo),
+                            parseDouble(gminq),
+                            parseDouble(gmaxq),
+                            parseDouble(gminw),
+                            parseDouble(gmaxw),
+                            rwstunit,
+                            parseLong(gofficial)
+                            );
+
+                    gauges.add(gaugeinfo);
+                }
+            }
+
+            DefaultRiverInfo riverinfo = new DefaultRiverInfo(
+                    rname,
+                    kmup,
+                    parseDouble(rstart),
+                    parseDouble(rend),
+                    rwstunit,
+                    parseDouble(rminq),
+                    parseDouble(rmaxq),
+                    parseLong(rofficial)
+                    );
+            riverinfo.setGauges(gauges);
+
+            logger.debug("Finished RiverInfoService.");
+
+            return riverinfo;
+        }
+        catch (ConnectionException ce) {
+            logger.error(ce, ce);
+        }
+
+        logger.warn("No gauge found");
+        throw new ServerException(ERROR_NO_RIVERINFO_FOUND);
+    }
+
+    /**
+     * Avoids NullPointerException when parsing double value
+     */
+    private Double parseDouble(String value) {
+        if (value == null || value.isEmpty()) {
+            return null;
+        }
+        try {
+            return Double.valueOf(value);
+        }
+        catch(NumberFormatException e) {
+            logger.error(e, e);
+            return null;
+        }
+    }
+
+    private Long parseLong(String value) {
+        if (value == null || value.isEmpty()) {
+            return null;
+        }
+        try {
+            return Long.valueOf(value);
+        }
+        catch(NumberFormatException e) {
+            logger.error(e, e);
+            return null;
+        }
+    }
+}

http://dive4elements.wald.intevation.org