comparison flys-artifacts/src/main/java/org/dive4elements/river/artifacts/services/RiverInfoService.java @ 5831:bd047b71ab37

Repaired internal references
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 12:06:39 +0200
parents flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/RiverInfoService.java@5da024c2af62
children
comparison
equal deleted inserted replaced
5830:160f53ee0870 5831:bd047b71ab37
1 package org.dive4elements.river.artifacts.services;
2
3 import java.math.BigDecimal;
4
5 import org.apache.log4j.Logger;
6
7 import org.w3c.dom.Document;
8 import org.w3c.dom.Element;
9
10 import org.dive4elements.artifacts.CallMeta;
11 import org.dive4elements.artifacts.GlobalContext;
12 import org.dive4elements.artifacts.common.ArtifactNamespaceContext;
13 import org.dive4elements.artifacts.common.utils.XMLUtils;
14
15 import org.dive4elements.river.artifacts.model.RiverFactory;
16 import org.dive4elements.river.model.River;
17
18 /**
19 * @author <a href="mailto:bjoern.ricks@intevation.de">Björn Ricks</a>
20 */
21 public class RiverInfoService extends FLYSService {
22
23 private static final Logger logger = Logger.getLogger(
24 RiverInfoService.class);
25
26 protected static final String RIVER_XPATH = "/art:river/text()";
27
28 protected XMLUtils.ElementCreator ec;
29 protected River river;
30 protected Element riverele;
31
32 protected Document doProcess(
33 Document data,
34 GlobalContext globalContext,
35 CallMeta callMeta
36 ) {
37 String rivername = XMLUtils.xpathString(
38 data, RIVER_XPATH, ArtifactNamespaceContext.INSTANCE);
39
40 river = RiverFactory.getRiver(rivername);
41
42 Document result = XMLUtils.newDocument();
43
44 if (river == null) {
45 logger.warn("No river with name " + rivername + " found.");
46 return null;
47 }
48
49 ec = new XMLUtils.ElementCreator(
50 result,
51 ArtifactNamespaceContext.NAMESPACE_URI,
52 ArtifactNamespaceContext.NAMESPACE_PREFIX);
53
54 riverele = ec.create("river-info");
55
56 double[] minmax = river.determineMinMaxDistance();
57 double[] minmaxq = river.determineMinMaxQ();
58
59 Element r = ec.create("river");
60 ec.addAttr(r, "name", river.getName(), true);
61 ec.addAttr(r, "start", Double.toString(minmax[0]), true);
62 ec.addAttr(r, "end", Double.toString(minmax[1]), true);
63 ec.addAttr(r, "wstunit", river.getWstUnit().getName(), true);
64 ec.addAttr(r, "kmup", Boolean.toString(river.getKmUp()), true);
65 ec.addAttr(r, "minq", Double.toString(minmaxq[0]), true);
66 ec.addAttr(r, "maxq", Double.toString(minmaxq[1]), true);
67 ec.addAttr(r, "official", Long.toString(river.getOfficialNumber()),
68 true);
69
70 riverele.appendChild(r);
71 result.appendChild(riverele);
72
73 return result;
74 }
75
76 /**
77 * Returns a Double as String from a BigDecimal value.
78 *
79 * If value is null an empty String is returned.
80 */
81 protected static String getStringValue(BigDecimal value) {
82 return value != null
83 ? Double.toString(value.doubleValue()) : "";
84 }
85 }

http://dive4elements.wald.intevation.org