Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/RiverInfoService.java @ 4247:5da024c2af62
Refactor GaugeOverviewInfoService and MeasurementStationInfoService
Refactor RiverInfoService out of GaugeOverviewInfoService and
MeasurementStationInfoService to share common code of both classes in a base
class.
author | Björn Ricks <bjoern.ricks@intevation.de> |
---|---|
date | Wed, 24 Oct 2012 16:36:59 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
4246:cac0878b4a92 | 4247:5da024c2af62 |
---|---|
1 package de.intevation.flys.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 de.intevation.artifacts.CallMeta; | |
11 import de.intevation.artifacts.GlobalContext; | |
12 import de.intevation.artifacts.common.ArtifactNamespaceContext; | |
13 import de.intevation.artifacts.common.utils.XMLUtils; | |
14 | |
15 import de.intevation.flys.artifacts.model.RiverFactory; | |
16 import de.intevation.flys.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 } |