annotate artifacts/src/main/java/org/dive4elements/river/artifacts/services/MainValuesService.java @ 7639:11bc2d6a2059

Removed obsolete imports.
author Sascha L. Teichmann <teichmann@intevation.de>
date Tue, 03 Dec 2013 16:11:54 +0100
parents 368d419ae4d1
children e4606eae8ea5
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5868
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5868
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3734
diff changeset
9 package org.dive4elements.river.artifacts.services;
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import java.util.List;
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13 import org.apache.log4j.Logger;
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 import org.w3c.dom.Document;
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16 import org.w3c.dom.Element;
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3734
diff changeset
18 import org.dive4elements.artifacts.CallMeta;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3734
diff changeset
19 import org.dive4elements.artifacts.GlobalContext;
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3734
diff changeset
21 import org.dive4elements.artifacts.common.ArtifactNamespaceContext;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3734
diff changeset
22 import org.dive4elements.artifacts.common.utils.XMLUtils;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3734
diff changeset
23 import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator;
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3734
diff changeset
25 import org.dive4elements.river.model.Gauge;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3734
diff changeset
26 import org.dive4elements.river.model.MainValue;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3734
diff changeset
27 import org.dive4elements.river.model.MainValueType;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3734
diff changeset
28 import org.dive4elements.river.model.NamedMainValue;
6356
4c791a458305 Artifacts: Scan the official lines associated with a main value if it applies for the current river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6107
diff changeset
29 import org.dive4elements.river.model.OfficialLine;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3734
diff changeset
30 import org.dive4elements.river.model.Range;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3734
diff changeset
31 import org.dive4elements.river.model.River;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3734
diff changeset
32
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3734
diff changeset
33 import org.dive4elements.river.artifacts.model.RiverFactory;
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 /**
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 * This service returns the main values of a river's gauge based on the start
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38 * and end point of the river.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 *
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 */
5868
35b2d86c3fb5 River artifacts: Renamed FLYSService to D4EService.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
42 public class MainValuesService extends D4EService {
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 /** The logger that is used by this service.*/
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 private static Logger logger = Logger.getLogger(MainValuesService.class);
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 /** The XPath that points to the river definition of the incoming request.*/
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 public static final String XPATH_RIVER = "/art:mainvalues/art:river/text()";
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 /** The XPath that points to the start definition of the incoming request.*/
444
932a5e3c7fa1 ISSUE-72 Repaired broken XPath expression in MainValuesService to extract start and end kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 331
diff changeset
51 public static final String XPATH_START = "/art:mainvalues/art:start/text()";
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53 /** The XPath that points to the end definition of the incoming request.*/
444
932a5e3c7fa1 ISSUE-72 Repaired broken XPath expression in MainValuesService to extract start and end kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 331
diff changeset
54 public static final String XPATH_END = "/art:mainvalues/art:end/text()";
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55
7555
74e9768098a0 issue1542: Let MainValues have localized dates.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7553
diff changeset
56 protected CallMeta callMeta;
74e9768098a0 issue1542: Let MainValues have localized dates.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7553
diff changeset
57
74e9768098a0 issue1542: Let MainValues have localized dates.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7553
diff changeset
58
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 /**
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 * The default constructor.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 */
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62 public MainValuesService() {
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63 }
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64
3728
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
65 private static final Document error(String msg) {
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
66 logger.debug(msg);
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
67 return XMLUtils.newDocument();
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
68 }
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
69
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70
966
a63d79107289 Adjusted services to implement changed signature.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 444
diff changeset
71 @Override
1631
26e19cdaed5e Improved database session handling in services and artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 966
diff changeset
72 public Document doProcess(
966
a63d79107289 Adjusted services to implement changed signature.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 444
diff changeset
73 Document data,
a63d79107289 Adjusted services to implement changed signature.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 444
diff changeset
74 GlobalContext context,
a63d79107289 Adjusted services to implement changed signature.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 444
diff changeset
75 CallMeta callMeta
a63d79107289 Adjusted services to implement changed signature.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 444
diff changeset
76 ) {
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77 logger.debug("MainValuesService.process");
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78
7555
74e9768098a0 issue1542: Let MainValues have localized dates.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7553
diff changeset
79 this.callMeta = callMeta;
74e9768098a0 issue1542: Let MainValues have localized dates.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7553
diff changeset
80
3728
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
81 River river = getRequestedRiver(data);
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
82 if (river == null) {
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
83 return error("no river found.");
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
84 }
1659
ad54896ec369 Write gauge determined in MainValuesService to log.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1631
diff changeset
85
3728
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
86 double[] minmax = getRequestedStartEnd(data, river);
6107
e296c05a0c5b Revert 6081 now that determineGauge handles bordering river sections
Andre Heinecke <aheinecke@intevation.de>
parents: 6061
diff changeset
87 Gauge gauge = river.determineGauge(minmax[0], minmax[1]);
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88
3728
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
89 if (gauge == null) {
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
90 return error("no gauge found.");
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
91 }
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
92
3728
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
93 List<MainValue> mainValues = getMainValues(river, gauge);
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
94
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
95 return buildDocument(river, gauge, mainValues, context);
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
96 }
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
97
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
98
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
99 /**
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
100 * This method extracts the river from the incoming request. If no river
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
101 * string was found or no river is found in the database based on this
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
102 * string a NullPointerException is thrown.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
103 *
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
104 * @param data The incoming request data.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
105 *
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
106 * @return the River object.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
107 */
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
108 protected River getRequestedRiver(Document data)
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
109 throws NullPointerException
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
110 {
7552
81d5939ec064 Doc, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6482
diff changeset
111 logger.debug("MainValuesService.getRequestedRiver");
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
112
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
113 String riverStr = XMLUtils.xpathString(
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
114 data, XPATH_RIVER, ArtifactNamespaceContext.INSTANCE);
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
115
3728
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
116 return riverStr != null && (riverStr = riverStr.trim()).length() > 0
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
117 ? RiverFactory.getRiver(riverStr)
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
118 : null;
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
119 }
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
120
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
121
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
122 /**
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
123 * This method extracts the start and end point from incoming request
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
124 * document and returns both values in an array. If no start and end strings
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
125 * are found in the document, the min/max values of the <i>river</i> are
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
126 * returned.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
127 *
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
128 * @param data The incoming request data.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
129 * @param river The river of the request.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
130 *
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
131 * @return the start and end point.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
132 */
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
133 protected double[] getRequestedStartEnd(Document data, River river) {
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
134 logger.debug("MainValuesService.getStartEnd");
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
135
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
136 String startStr = XMLUtils.xpathString(
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
137 data, XPATH_START, ArtifactNamespaceContext.INSTANCE);
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
138
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
139 String endStr = XMLUtils.xpathString(
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
140 data, XPATH_END, ArtifactNamespaceContext.INSTANCE);
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
141
3728
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
142 if (startStr == null || endStr == null) {
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
143 return river.determineMinMaxDistance();
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
144 }
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
145
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
146 try {
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
147 double start = Double.parseDouble(startStr);
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
148 double end = Double.parseDouble(endStr);
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
149
3728
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
150 if (logger.isDebugEnabled()) {
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
151 logger.debug("Found start: " + start);
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
152 logger.debug("Found end: " + end);
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
153 }
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
154
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
155 return new double[] { start, end };
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
156 }
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
157 catch (NumberFormatException nfe) {
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
158 logger.warn(nfe, nfe);
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
159 return river.determineMinMaxDistance();
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
160 }
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
161 }
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
162
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
163
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
164 /**
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
165 * This method creates the result document that includes the main values of
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
166 * the specified <i>gauge</i>.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
167 *
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
168 * @param river The river.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
169 * @param gauge The gauge.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
170 *
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
171 * @return a document that includes the main values of the specified river
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
172 * at the specified gauge.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
173 */
3728
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
174 protected List<MainValue> getMainValues(River river, Gauge gauge) {
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
175
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
176 if (logger.isDebugEnabled()) {
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
177 logger.debug("MainValuesService.buildMainValues");
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
178 logger.debug("River: " + river.getName());
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
179 logger.debug("Gauge: " + gauge.getName());
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
180 }
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
181
3734
0c217de0d84b Modify every second theme to differ from default theme (#835)
Christian Lins <christian.lins@intevation.de>
parents: 3728
diff changeset
182 List<MainValue> mainValues = gauge.getMainValues();
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
183
3728
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
184 if (logger.isDebugEnabled()) {
d03e65378b9f Removed obsolete code. Removed NPE as regular flow control.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1659
diff changeset
185 logger.debug(mainValues.size() + " main values found.");
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
186 }
1631
26e19cdaed5e Improved database session handling in services and artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 966
diff changeset
187
26e19cdaed5e Improved database session handling in services and artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 966
diff changeset
188 return mainValues;
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
189 }
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
190
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
191
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
192 protected Document buildDocument(
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
193 River river,
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
194 Gauge gauge,
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
195 List<MainValue> mainValues,
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
196 Object context)
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
197 {
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
198 logger.debug("MainValuesService.buildDocument");
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
199
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
200 Document doc = XMLUtils.newDocument();
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
201
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
202 ElementCreator cr = new ElementCreator(
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
203 doc,
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
204 ArtifactNamespaceContext.NAMESPACE_URI,
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
205 ArtifactNamespaceContext.NAMESPACE_PREFIX);
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
206
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
207 Element rootEl = cr.create("service");
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
208 cr.addAttr(rootEl, "name", "mainvalues");
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
209
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
210 doc.appendChild(rootEl);
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
211
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
212 appendMetaInformation(doc, rootEl, river, gauge, context);
6482
b07cfc319781 Official lines: Use river id instead of river name to be more precise when finding out which main values has a official line.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6356
diff changeset
213 appendMainValues(doc, rootEl, mainValues, river.getId(), context);
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
214
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
215 return doc;
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
216 }
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
217
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
218
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
219 /**
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
220 * This method appends some meta information to the result document.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
221 * Currently, the river's and gauge's names and the gauge's range are
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
222 * appended.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
223 *
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
224 * @param root The root element of the result document.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
225 * @param river The river.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
226 * @param gauge The gauge.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
227 * @param context The context object.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
228 */
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
229 protected void appendMetaInformation(
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
230 Document doc,
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
231 Element root,
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
232 River river,
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
233 Gauge gauge,
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
234 Object context)
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
235 {
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
236 logger.debug("MainValuesService.appendMetaInformation");
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
237
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
238 ElementCreator cr = new ElementCreator(
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
239 doc,
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
240 ArtifactNamespaceContext.NAMESPACE_URI,
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
241 ArtifactNamespaceContext.NAMESPACE_PREFIX);
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
242
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
243 Range range = gauge.getRange();
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
244
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
245 Element riverEl = cr.create("river");
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
246 cr.addAttr(riverEl, "name", river.getName());
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
247
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
248 Element gaugeEl = cr.create("gauge");
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
249 cr.addAttr(gaugeEl, "name", gauge.getName());
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
250 cr.addAttr(gaugeEl, "from", range.getA().toString());
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
251 cr.addAttr(gaugeEl, "to", range.getB().toString());
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
252
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
253 root.appendChild(riverEl);
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
254 root.appendChild(gaugeEl);
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
255 }
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
256
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
257
6356
4c791a458305 Artifacts: Scan the official lines associated with a main value if it applies for the current river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6107
diff changeset
258 /** Checks i a main value has an official associated, */
6482
b07cfc319781 Official lines: Use river id instead of river name to be more precise when finding out which main values has a official line.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6356
diff changeset
259 protected static boolean hasOfficialLine(NamedMainValue nmv, Integer riverId) {
6356
4c791a458305 Artifacts: Scan the official lines associated with a main value if it applies for the current river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6107
diff changeset
260 for (OfficialLine ol: nmv.getOfficialLines()) {
6482
b07cfc319781 Official lines: Use river id instead of river name to be more precise when finding out which main values has a official line.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6356
diff changeset
261 if (ol.getWstColumn().getWst().getRiver().getId().equals(riverId)) {
6356
4c791a458305 Artifacts: Scan the official lines associated with a main value if it applies for the current river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6107
diff changeset
262 return true;
4c791a458305 Artifacts: Scan the official lines associated with a main value if it applies for the current river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6107
diff changeset
263 }
4c791a458305 Artifacts: Scan the official lines associated with a main value if it applies for the current river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6107
diff changeset
264 }
4c791a458305 Artifacts: Scan the official lines associated with a main value if it applies for the current river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6107
diff changeset
265 return false;
4c791a458305 Artifacts: Scan the official lines associated with a main value if it applies for the current river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6107
diff changeset
266 }
4c791a458305 Artifacts: Scan the official lines associated with a main value if it applies for the current river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6107
diff changeset
267
4c791a458305 Artifacts: Scan the official lines associated with a main value if it applies for the current river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6107
diff changeset
268
7552
81d5939ec064 Doc, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6482
diff changeset
269 /** Append xml representation of main values to document. */
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
270 protected void appendMainValues(
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
271 Document doc,
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
272 Element root,
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
273 List<MainValue> mainValues,
6482
b07cfc319781 Official lines: Use river id instead of river name to be more precise when finding out which main values has a official line.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6356
diff changeset
274 Integer riverId,
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
275 Object context)
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
276 {
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
277 logger.debug("MainValuesService.appendMainValues");
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
278
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
279 ElementCreator cr = new ElementCreator(
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
280 doc,
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
281 ArtifactNamespaceContext.NAMESPACE_URI,
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
282 ArtifactNamespaceContext.NAMESPACE_PREFIX);
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
283
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
284 Element list = cr.create("mainvalues");
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
285
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
286 for (MainValue mainValue: mainValues) {
6482
b07cfc319781 Official lines: Use river id instead of river name to be more precise when finding out which main values has a official line.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6356
diff changeset
287 Element newEl = buildMainValueElement(doc, mainValue, riverId, context);
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
288
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
289 if (newEl != null) {
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
290 list.appendChild(newEl);
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
291 }
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
292 }
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
293
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
294 root.appendChild(list);
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
295 }
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
296
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
297
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
298 /**
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
299 * This method builds a concrete mainvalue element. This element consists of
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
300 * three attributes: the value, its name and its type.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
301 *
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
302 * @param doc The owner document.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
303 * @param mainValue The mainvalue.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
304 * @param context The context object.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
305 *
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
306 * @return a mainvalue element.
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
307 */
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
308 protected Element buildMainValueElement(
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
309 Document doc,
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
310 MainValue mainValue,
6482
b07cfc319781 Official lines: Use river id instead of river name to be more precise when finding out which main values has a official line.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6356
diff changeset
311 Integer riverId,
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
312 Object context)
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
313 {
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
314 ElementCreator cr = new ElementCreator(
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
315 doc,
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
316 ArtifactNamespaceContext.NAMESPACE_URI,
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
317 ArtifactNamespaceContext.NAMESPACE_PREFIX);
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
318
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
319 NamedMainValue namedMainValue = mainValue.getMainValue();
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
320 MainValueType mainValueType = namedMainValue.getType();
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
321
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
322 Element el = cr.create("mainvalue");
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
323
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
324 cr.addAttr(el, "value", mainValue.getValue().toString());
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
325 cr.addAttr(el, "name", namedMainValue.getName());
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
326 cr.addAttr(el, "type", mainValueType.getName());
7553
4e999b1d7acd issue1542: Add timeinterval-data to mainvalues made available via service.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7552
diff changeset
327 if (mainValue.getTimeInterval() != null) {
4e999b1d7acd issue1542: Add timeinterval-data to mainvalues made available via service.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7552
diff changeset
328 if (mainValue.getTimeInterval().getStartTime() != null) {
7555
74e9768098a0 issue1542: Let MainValues have localized dates.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7553
diff changeset
329 cr.addAttr(el, "starttime",
7561
368d419ae4d1 issue1542: Let client to i18n and formatting of dates.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7555
diff changeset
330 Long.toString(mainValue.getTimeInterval().getStartTime().getTime()));
7553
4e999b1d7acd issue1542: Add timeinterval-data to mainvalues made available via service.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7552
diff changeset
331 }
4e999b1d7acd issue1542: Add timeinterval-data to mainvalues made available via service.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7552
diff changeset
332 if (mainValue.getTimeInterval().getStopTime() != null) {
7555
74e9768098a0 issue1542: Let MainValues have localized dates.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7553
diff changeset
333 cr.addAttr(el, "stoptime",
7561
368d419ae4d1 issue1542: Let client to i18n and formatting of dates.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7555
diff changeset
334 Long.toString(mainValue.getTimeInterval().getStopTime().getTime()));
7553
4e999b1d7acd issue1542: Add timeinterval-data to mainvalues made available via service.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7552
diff changeset
335 }
4e999b1d7acd issue1542: Add timeinterval-data to mainvalues made available via service.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7552
diff changeset
336 }
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
337
6482
b07cfc319781 Official lines: Use river id instead of river name to be more precise when finding out which main values has a official line.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6356
diff changeset
338 if (hasOfficialLine(namedMainValue, riverId)) {
6356
4c791a458305 Artifacts: Scan the official lines associated with a main value if it applies for the current river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6107
diff changeset
339 cr.addAttr(el, "official", "true");
4c791a458305 Artifacts: Scan the official lines associated with a main value if it applies for the current river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6107
diff changeset
340 }
4c791a458305 Artifacts: Scan the official lines associated with a main value if it applies for the current river.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6107
diff changeset
341
331
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
342 return el;
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
343 }
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
344 }
5a2df8677b3e Added a service that returns the MainValues of a Gauge based on a river name and a stationing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
345 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org