annotate gwt-client/src/main/java/org/dive4elements/river/client/server/WQInfoServiceImpl.java @ 8870:c26fb37899ca

Introduced groups for modules. Modules marked with the same group-id, will be put together in the ui. Also using now the localization info from the server instead of localizing the modules again on the client side.
author gernotbelger
date Wed, 07 Feb 2018 11:59:13 +0100
parents 5e38e2924c07
children 82c67b859aa7 0a5239a1e46e
rev   line source
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5993
ea9eef426962 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5861
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5993
ea9eef426962 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5861
diff changeset
6 * documentation coming with Dive4Elements River for details.
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
9 package org.dive4elements.river.client.server;
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
10
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
11 import java.util.ArrayList;
5567
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
12 import java.util.Arrays;
7557
2ca1f3991e17 issue1542: Make WQInfoObjects and server provide start and end date for mainvalues, display in table.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6371
diff changeset
13 import java.util.Calendar;
5567
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
14 import java.util.Comparator;
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
15 import java.util.List;
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
16
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
17 import javax.xml.xpath.XPathConstants;
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
18
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
19 import org.w3c.dom.Document;
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
20 import org.w3c.dom.Element;
5596
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
21 import org.w3c.dom.Node;
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
22 import org.w3c.dom.NodeList;
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
23
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 245
diff changeset
24 import org.apache.log4j.Logger;
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 245
diff changeset
25
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
26 import com.google.gwt.user.server.rpc.RemoteServiceServlet;
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
27
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
28 import org.dive4elements.artifacts.common.ArtifactNamespaceContext;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
29 import org.dive4elements.artifacts.common.utils.XMLUtils;
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
30
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
31 import org.dive4elements.artifacts.httpclient.exceptions.ConnectionException;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
32 import org.dive4elements.artifacts.httpclient.http.HttpClient;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
33 import org.dive4elements.artifacts.httpclient.http.HttpClientImpl;
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
34
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
35 import org.dive4elements.river.client.shared.exceptions.ServerException;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
36 import org.dive4elements.river.client.client.services.WQInfoService;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
37 import org.dive4elements.river.client.shared.model.WQInfoObject;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
38 import org.dive4elements.river.client.shared.model.WQInfoObjectImpl;
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
39
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
40
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
41 /**
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
42 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
43 */
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
44 public class WQInfoServiceImpl
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
45 extends RemoteServiceServlet
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
46 implements WQInfoService
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
47 {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7557
diff changeset
48 private static final Logger log =
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 245
diff changeset
49 Logger.getLogger(WQInfoServiceImpl.class);
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 245
diff changeset
50
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
51 public static final String ERROR_NO_WQINFO_FOUND =
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
52 "error_no_wqinfo_found";
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
53
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8791
diff changeset
54 public static final String XPATH_WQS =
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8791
diff changeset
55 "art:service/art:mainvalues/art:mainvalue";
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
56
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
57
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
58 public WQInfoObject[] getWQInfo(
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
59 String locale,
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
60 String river,
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
61 double from,
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
62 double to)
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
63 throws ServerException
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
64 {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7557
diff changeset
65 log.info("WQInfoServiceImpl.getWQInfo");
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
66
1425
bc06a671ef60 Removed the URL parameter from service calls. The service
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1367
diff changeset
67 String url = getServletContext().getInitParameter("server-url");
bc06a671ef60 Removed the URL parameter from service calls. The service
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1367
diff changeset
68
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
69 Document doc = XMLUtils.newDocument();
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
70
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
71 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator(
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
72 doc,
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
73 ArtifactNamespaceContext.NAMESPACE_URI,
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
74 ArtifactNamespaceContext.NAMESPACE_PREFIX);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
75
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
76 Element mainvalues = ec.create("mainvalues");
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
77 Element riverEl = ec.create("river");
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
78 Element startEl = ec.create("start");
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
79 Element endEl = ec.create("end");
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
80
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
81 riverEl.setTextContent(river);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
82 startEl.setTextContent(Double.valueOf(from).toString());
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
83 endEl.setTextContent(Double.valueOf(to).toString());
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
84
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
85 mainvalues.appendChild(riverEl);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
86 mainvalues.appendChild(startEl);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
87 mainvalues.appendChild(endEl);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
88
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
89 doc.appendChild(mainvalues);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
90
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
91 HttpClient client = new HttpClientImpl(url, locale);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
92
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
93 try {
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
94 Document result = client.callService(url, "mainvalues", doc);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
95
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7557
diff changeset
96 log.debug("Extract wq info objects now.");
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
97 WQInfoObject[] objects = extractWQInfoObjects(result);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
98
5567
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
99 if (objects.length > 0) {
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
100 return objects;
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
101 }
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
102 }
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
103 catch (ConnectionException ce) {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7557
diff changeset
104 log.error(ce, ce);
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
105 }
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
106
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
107 throw new ServerException(ERROR_NO_WQINFO_FOUND);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
108 }
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
109
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
110
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
111 /**
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
112 * Extracts all wq info objects from <i>result</i> document.
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
113 *
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
114 * @param result The document retrieved by the server.
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
115 *
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
116 * @return a list of WQInfoObjects.
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
117 */
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
118 protected WQInfoObject[] extractWQInfoObjects(Document result)
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
119 throws ServerException
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
120 {
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
121 NodeList list = (NodeList) XMLUtils.xpath(
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
122 result,
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
123 XPATH_WQS,
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
124 XPathConstants.NODESET,
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
125 ArtifactNamespaceContext.INSTANCE);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
126
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
127 if (list == null || list.getLength() == 0) {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7557
diff changeset
128 log.warn("No wq info found.");
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
129
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
130 throw new ServerException(ERROR_NO_WQINFO_FOUND);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
131 }
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
132
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7557
diff changeset
133 boolean debug = log.isDebugEnabled();
5567
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
134
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
135 int num = list.getLength();
5567
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
136 if (debug) {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7557
diff changeset
137 log.debug("Response contains " + num + " objects.");
5567
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
138 }
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
139
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
140 List<WQInfoObject> objects =
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
141 new ArrayList<WQInfoObject>(num);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
142
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
143 for (int i = 0; i < num; i++) {
5596
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
144 WQInfoObject obj = buildWQInfoObject(list.item(i));
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
145
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
146 if (obj != null) {
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
147 objects.add(obj);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
148 }
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
149 }
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
150
5567
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
151 if (debug) {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7557
diff changeset
152 log.debug("Retrieved " + objects.size() + " wq values");
5567
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
153 }
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
154
5567
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
155 WQInfoObject [] array = (WQInfoObject[])
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
156 objects.toArray(new WQInfoObject[objects.size()]);
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
157
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
158 Arrays.sort(array, WQ_INFO_OBJECT_CMP);
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
159
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
160 return array;
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
161 }
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
162
5567
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
163 public static final Comparator<WQInfoObject> WQ_INFO_OBJECT_CMP =
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
164 new Comparator<WQInfoObject>() {
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
165 @Override
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
166 public int compare(WQInfoObject a, WQInfoObject b) {
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
167
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
168 // Descending by type: Qs before Ds
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
169 int cmp = a.getType().compareTo(b.getType());
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
170 if (cmp < 0) return +1;
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
171 if (cmp > 0) return -1;
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
172
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
173 // Ascending by value
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
174 double diff = a.getValue() - b.getValue();
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
175 if (diff < 0d) return -1;
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
176 if (diff > 0d) return +1;
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
177 return 0;
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
178 }
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
179 };
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
180
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
181 /**
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
182 * Extracts information for a single wq info object and intializes an
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
183 * WQInfoObject with them.
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
184 *
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
185 * @param node The node that contains the information.
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
186 *
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
187 * @return a valid WQInfoObject.
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
188 */
5596
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
189 protected static WQInfoObject buildWQInfoObject(Node node) {
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
190
5596
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
191 String name = XMLUtils.xpathString(
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
192 node, "@name", ArtifactNamespaceContext.INSTANCE);
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
193
5596
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
194 String type = XMLUtils.xpathString(
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
195 node, "@type", ArtifactNamespaceContext.INSTANCE);
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
196
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
197 String value = XMLUtils.xpathString(
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
198 node, "@value", ArtifactNamespaceContext.INSTANCE);
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
199
6371
19459037b3c7 GWT client: Display official lines in helper panels.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
200 String official = XMLUtils.xpathString(
19459037b3c7 GWT client: Display official lines in helper panels.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
201 node, "@official", ArtifactNamespaceContext.INSTANCE);
19459037b3c7 GWT client: Display official lines in helper panels.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
202
7557
2ca1f3991e17 issue1542: Make WQInfoObjects and server provide start and end date for mainvalues, display in table.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6371
diff changeset
203 String starttime = XMLUtils.xpathString(
2ca1f3991e17 issue1542: Make WQInfoObjects and server provide start and end date for mainvalues, display in table.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6371
diff changeset
204 node, "@starttime", ArtifactNamespaceContext.INSTANCE);
2ca1f3991e17 issue1542: Make WQInfoObjects and server provide start and end date for mainvalues, display in table.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6371
diff changeset
205
2ca1f3991e17 issue1542: Make WQInfoObjects and server provide start and end date for mainvalues, display in table.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6371
diff changeset
206 String stoptime = XMLUtils.xpathString(
2ca1f3991e17 issue1542: Make WQInfoObjects and server provide start and end date for mainvalues, display in table.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6371
diff changeset
207 node, "@stoptime", ArtifactNamespaceContext.INSTANCE);
2ca1f3991e17 issue1542: Make WQInfoObjects and server provide start and end date for mainvalues, display in table.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6371
diff changeset
208
5596
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
209 if (name != null && type != null) {
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
210 try {
7557
2ca1f3991e17 issue1542: Make WQInfoObjects and server provide start and end date for mainvalues, display in table.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6371
diff changeset
211 Calendar cal = Calendar.getInstance();
2ca1f3991e17 issue1542: Make WQInfoObjects and server provide start and end date for mainvalues, display in table.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6371
diff changeset
212 java.util.Date start = null;
2ca1f3991e17 issue1542: Make WQInfoObjects and server provide start and end date for mainvalues, display in table.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6371
diff changeset
213 java.util.Date stop = null;
2ca1f3991e17 issue1542: Make WQInfoObjects and server provide start and end date for mainvalues, display in table.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6371
diff changeset
214 if (!starttime.equals("")) {
2ca1f3991e17 issue1542: Make WQInfoObjects and server provide start and end date for mainvalues, display in table.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6371
diff changeset
215 cal.setTimeInMillis(Long.parseLong(starttime));
2ca1f3991e17 issue1542: Make WQInfoObjects and server provide start and end date for mainvalues, display in table.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6371
diff changeset
216 start = cal.getTime();
2ca1f3991e17 issue1542: Make WQInfoObjects and server provide start and end date for mainvalues, display in table.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6371
diff changeset
217 }
2ca1f3991e17 issue1542: Make WQInfoObjects and server provide start and end date for mainvalues, display in table.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6371
diff changeset
218 if (!stoptime.equals("")) {
2ca1f3991e17 issue1542: Make WQInfoObjects and server provide start and end date for mainvalues, display in table.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6371
diff changeset
219 cal.setTimeInMillis(Long.parseLong(stoptime));
2ca1f3991e17 issue1542: Make WQInfoObjects and server provide start and end date for mainvalues, display in table.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6371
diff changeset
220 stop = cal.getTime();
2ca1f3991e17 issue1542: Make WQInfoObjects and server provide start and end date for mainvalues, display in table.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6371
diff changeset
221 }
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
222 return new WQInfoObjectImpl(
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
223 name,
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
224 type,
6371
19459037b3c7 GWT client: Display official lines in helper panels.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
225 new Double(value),
7557
2ca1f3991e17 issue1542: Make WQInfoObjects and server provide start and end date for mainvalues, display in table.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6371
diff changeset
226 official != null && official.equalsIgnoreCase("true"),
2ca1f3991e17 issue1542: Make WQInfoObjects and server provide start and end date for mainvalues, display in table.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6371
diff changeset
227 start,
2ca1f3991e17 issue1542: Make WQInfoObjects and server provide start and end date for mainvalues, display in table.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6371
diff changeset
228 stop);
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
229 }
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
230 catch (NumberFormatException nfe) {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7557
diff changeset
231 log.warn(nfe.getLocalizedMessage());
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
232 }
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
233 }
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
234
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7557
diff changeset
235 log.warn("Invalid wq info object found.");
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
236
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
237 return null;
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
238 }
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
239 }
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
240 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org