annotate gwt-client/src/main/java/org/dive4elements/river/client/server/WQInfoServiceImpl.java @ 8791:22169da49f9b

Remove unused imports. Found with mvn checkstyle:checkstyle.
author Tom Gottfried <tom@intevation.de>
date Thu, 10 Dec 2015 14:40:03 +0100
parents 238fc722f87a
children 5e38e2924c07
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
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
54 public static final String XPATH_WQS = "art:service/art:mainvalues/art:mainvalue";
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
55
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 public WQInfoObject[] getWQInfo(
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
58 String locale,
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
59 String river,
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
60 double from,
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
61 double to)
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
62 throws ServerException
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
63 {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7557
diff changeset
64 log.info("WQInfoServiceImpl.getWQInfo");
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
65
1425
bc06a671ef60 Removed the URL parameter from service calls. The service
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1367
diff changeset
66 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
67
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
68 Document doc = XMLUtils.newDocument();
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
69
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
70 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator(
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
71 doc,
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
72 ArtifactNamespaceContext.NAMESPACE_URI,
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
73 ArtifactNamespaceContext.NAMESPACE_PREFIX);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
74
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
75 Element mainvalues = ec.create("mainvalues");
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
76 Element riverEl = ec.create("river");
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
77 Element startEl = ec.create("start");
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
78 Element endEl = ec.create("end");
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
79
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
80 riverEl.setTextContent(river);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
81 startEl.setTextContent(Double.valueOf(from).toString());
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
82 endEl.setTextContent(Double.valueOf(to).toString());
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
83
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
84 mainvalues.appendChild(riverEl);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
85 mainvalues.appendChild(startEl);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
86 mainvalues.appendChild(endEl);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
87
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
88 doc.appendChild(mainvalues);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
89
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
90 HttpClient client = new HttpClientImpl(url, locale);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
91
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
92 try {
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
93 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
94
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7557
diff changeset
95 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
96 WQInfoObject[] objects = extractWQInfoObjects(result);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
97
5567
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
98 if (objects.length > 0) {
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
99 return objects;
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
100 }
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 catch (ConnectionException ce) {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7557
diff changeset
103 log.error(ce, ce);
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
104 }
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 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
107 }
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 * 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
112 *
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
113 * @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
114 *
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
115 * @return a list of WQInfoObjects.
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
116 */
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
117 protected WQInfoObject[] extractWQInfoObjects(Document result)
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
118 throws ServerException
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
119 {
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
120 NodeList list = (NodeList) XMLUtils.xpath(
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
121 result,
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
122 XPATH_WQS,
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
123 XPathConstants.NODESET,
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
124 ArtifactNamespaceContext.INSTANCE);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
125
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
126 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
127 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
128
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
129 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
130 }
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
131
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7557
diff changeset
132 boolean debug = log.isDebugEnabled();
5567
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
133
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
134 int num = list.getLength();
5567
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
135 if (debug) {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7557
diff changeset
136 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
137 }
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
138
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
139 List<WQInfoObject> objects =
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
140 new ArrayList<WQInfoObject>(num);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
141
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
142 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
143 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
144
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
145 if (obj != null) {
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
146 objects.add(obj);
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
147 }
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
5567
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
150 if (debug) {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7557
diff changeset
151 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
152 }
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
153
5567
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
154 WQInfoObject [] array = (WQInfoObject[])
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
155 objects.toArray(new WQInfoObject[objects.size()]);
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
156
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
157 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
158
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
159 return array;
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
160 }
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
161
5567
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
162 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
163 new Comparator<WQInfoObject>() {
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
164 @Override
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
165 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
166
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
167 // Descending by type: Qs before Ds
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
168 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
169 if (cmp < 0) return +1;
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
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
172 // Ascending by value
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
173 double diff = a.getValue() - b.getValue();
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
174 if (diff < 0d) return -1;
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 return 0;
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
177 }
42692d6868e6 Order Qs before Ds and values ascending
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4980
diff changeset
178 };
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
179
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 * 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
182 * WQInfoObject with them.
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
183 *
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
184 * @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
185 *
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
186 * @return a valid WQInfoObject.
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
187 */
5596
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
188 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
189
5596
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
190 String name = XMLUtils.xpathString(
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
191 node, "@name", ArtifactNamespaceContext.INSTANCE);
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
192
5596
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
193 String type = XMLUtils.xpathString(
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
194 node, "@type", ArtifactNamespaceContext.INSTANCE);
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
195
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
196 String value = XMLUtils.xpathString(
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
197 node, "@value", ArtifactNamespaceContext.INSTANCE);
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
198
6371
19459037b3c7 GWT client: Display official lines in helper panels.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
199 String official = XMLUtils.xpathString(
19459037b3c7 GWT client: Display official lines in helper panels.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
200 node, "@official", ArtifactNamespaceContext.INSTANCE);
19459037b3c7 GWT client: Display official lines in helper panels.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
201
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
202 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
203 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
204
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 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
206 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
207
5596
8fce35702908 Rolled XPath replacement back for main values.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5586
diff changeset
208 if (name != null && type != null) {
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
209 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
210 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
211 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
212 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
213 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
214 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
215 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
216 }
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 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
218 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
219 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
220 }
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
221 return new WQInfoObjectImpl(
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
222 name,
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
223 type,
6371
19459037b3c7 GWT client: Display official lines in helper panels.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5993
diff changeset
224 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
225 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
226 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
227 stop);
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
228 }
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
229 catch (NumberFormatException nfe) {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7557
diff changeset
230 log.warn(nfe.getLocalizedMessage());
245
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
231 }
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
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7557
diff changeset
234 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
235
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
236 return null;
1e73d5a4859c Added new WQ info service and data structures.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
237 }
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 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org