comparison flys-artifacts/src/main/java/org/dive4elements/river/artifacts/GaugeDischargeCurveArtifact.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/GaugeDischargeCurveArtifact.java@526fd442e0e5
children
comparison
equal deleted inserted replaced
5830:160f53ee0870 5831:bd047b71ab37
1 package org.dive4elements.river.artifacts;
2
3 import java.math.BigDecimal;
4 import java.util.ArrayList;
5 import java.util.List;
6
7 import org.apache.log4j.Logger;
8
9 import org.w3c.dom.Document;
10
11 import org.dive4elements.artifactdatabase.state.DefaultOutput;
12 import org.dive4elements.artifactdatabase.state.Facet;
13 import org.dive4elements.artifactdatabase.data.DefaultStateData;
14
15 import org.dive4elements.artifacts.ArtifactFactory;
16 import org.dive4elements.artifacts.CallMeta;
17
18 import org.dive4elements.artifacts.common.ArtifactNamespaceContext;
19 import org.dive4elements.artifacts.common.utils.XMLUtils;
20
21 import org.dive4elements.river.artifacts.model.GaugeDischargeCurveFacet;
22 import org.dive4elements.river.artifacts.resources.Resources;
23 import org.dive4elements.river.artifacts.states.StaticState;
24
25 import org.dive4elements.river.model.Gauge;
26 import org.dive4elements.river.utils.FLYSUtils;
27
28
29 /**
30 * Artifact to calculate a discharge curve from a gauge overview info
31 *
32 * @author <a href="mailto:bjoern.ricks@intevation.de">Björn Ricks</a>
33 */
34 public class GaugeDischargeCurveArtifact
35 extends AbstractStaticStateArtifact
36 {
37
38 private static final Logger logger =
39 Logger.getLogger(GaugeDischargeCurveArtifact.class);
40
41 public static final String XPATH_RIVER = "/art:action/art:river/@art:name";
42 public static final String XPATH_GAUGE = "/art:action/art:gauge/@art:reference";
43 public static final String NAME = "gaugedischargecurve";
44 public static final String STATIC_STATE_NAME = "state.gaugedischargecurve.static";
45 public static final String UIPROVIDER = "gauge_discharge_curve";
46 public static final String GAUGE_DISCHARGE_CURVE_FACET =
47 "gauge_discharge_curve";
48 public static final String GAUGE_DISCHARGE_CURVE_AT_EXPORT_FACET =
49 "at";
50 public static final String GAUGE_DISCHARGE_CURVE_OUT =
51 "discharge_curve";
52 public static final String GAUGE_DISCHARGE_CURVE_AT_EXPORT_OUT =
53 "computed_dischargecurve_at_export";
54 public static final String GAUGE_DISCHARGE_CURVE_EXPORT_OUT =
55 "computed_dischargecurve_export";
56 public static final String GAUGE_DISCHARGE_CURVE_CSV_FACET =
57 "csv";
58 public static final String GAUGE_DISCHARGE_CURVE_PDF_FACET =
59 "pdf";
60
61 private Facet atexportfacet;
62 private Facet curvefacet;
63 private Facet csvfacet;
64 private Facet pdffacet;
65
66 /**
67 * Setup initializes the data by extracting the river and gauge from
68 * the XML Document.
69 */
70 @Override
71 public void setup(
72 String identifier,
73 ArtifactFactory factory,
74 Object context,
75 CallMeta callmeta,
76 Document data)
77 {
78 logger.debug("GaugeDischargeCurveArtifact.setup");
79
80 if (logger.isDebugEnabled()) {
81 logger.debug("GaugeDischargeCurveArtifact.setup" + XMLUtils.toString(data));
82 }
83 String gaugeref = XMLUtils.xpathString(data, XPATH_GAUGE,
84 ArtifactNamespaceContext.INSTANCE);
85 String rivername = XMLUtils.xpathString(data, XPATH_RIVER,
86 ArtifactNamespaceContext.INSTANCE);
87
88 addData("river", new DefaultStateData("river",
89 Resources.getMsg(callmeta,
90 "facet.gauge_discharge_curve.river",
91 "Name of the river"),
92 "String", rivername));
93 addData("reference_gauge", new DefaultStateData("reference_gauge",
94 Resources.getMsg(callmeta,
95 "facet.gauge_discharge_curve.reference_gauge",
96 "Gauge official number"),
97 "Long", gaugeref));
98
99 Gauge gauge = FLYSUtils.getReferenceGauge(this);
100 String gaugename = "";
101 Double gaugelocation = null;
102 if (gauge != null) {
103 gaugename = gauge.getName();
104 BigDecimal station = gauge.getStation();
105 if (station != null) {
106 gaugelocation = station.doubleValue();
107 }
108 }
109
110 addData("gauge_name", new DefaultStateData("gauge_name",
111 Resources.getMsg(callmeta,
112 "facet.gauge_discharge_curve.gauge_name",
113 "Name of the gauge"),
114 "String", gaugename));
115
116 if (gaugelocation != null) {
117 addData("ld_locations", new DefaultStateData("ld_locations",
118 Resources.getMsg(callmeta,
119 "facet.gauge_discharge_curve.gauge_location",
120 "Location of the gauge"),
121 "Double", gaugelocation.toString()));
122 }
123
124 String description = Resources.format(callmeta,
125 "facet.gauge_discharge_curve.description",
126 "Discharge curve on gauge",
127 rivername,
128 gaugename);
129
130 List<Facet> fs = new ArrayList<Facet>(4);
131 curvefacet = new GaugeDischargeCurveFacet(
132 GAUGE_DISCHARGE_CURVE_FACET, description);
133 fs.add(curvefacet);
134
135 description = Resources.format(callmeta,
136 "facet.gauge_discharge_curve_at_export.description",
137 "Discharge curve AT export on gauge",
138 rivername,
139 gaugename);
140 atexportfacet = new GaugeDischargeCurveFacet(
141 GAUGE_DISCHARGE_CURVE_AT_EXPORT_FACET, description);
142 fs.add(atexportfacet);
143
144 description = Resources.format(callmeta,
145 "facet.computed_dischargecurve_export.csv",
146 "Discharge curve CSV export on gauge",
147 rivername,
148 gaugename);
149 csvfacet = new GaugeDischargeCurveFacet(
150 GAUGE_DISCHARGE_CURVE_CSV_FACET, description);
151 fs.add(csvfacet);
152
153 description = Resources.format(callmeta,
154 "facet.computed_dischargecurve_export.pdf",
155 "Discharge curve PDF export on gauge",
156 rivername,
157 gaugename);
158 pdffacet = new GaugeDischargeCurveFacet(
159 GAUGE_DISCHARGE_CURVE_PDF_FACET, description);
160 fs.add(pdffacet);
161
162 addFacets(STATIC_STATE_NAME, fs);
163
164 super.setup(identifier, factory, context, callmeta, data);
165 }
166
167 @Override
168 public String getName() {
169 return NAME;
170 }
171
172 @Override
173 protected void initStaticState() {
174 StaticState state = new StaticState(STATIC_STATE_NAME);
175
176 List<Facet> fs = new ArrayList<Facet>(1);
177 fs.add(curvefacet);
178
179 DefaultOutput output = new DefaultOutput(
180 GAUGE_DISCHARGE_CURVE_OUT,
181 "output.discharge_curve",
182 "image/png",
183 fs,
184 "chart");
185 state.addOutput(output);
186
187 fs = new ArrayList<Facet>(1);
188 fs.add(atexportfacet);
189 output = new DefaultOutput(
190 GAUGE_DISCHARGE_CURVE_AT_EXPORT_OUT,
191 "output.computed_dischargecurve_at_export",
192 "text/plain",
193 fs,
194 "export");
195 state.addOutput(output);
196
197 fs = new ArrayList<Facet>(2);
198 fs.add(csvfacet);
199 fs.add(pdffacet);
200 output = new DefaultOutput(
201 GAUGE_DISCHARGE_CURVE_EXPORT_OUT,
202 "output.computed_dischargecurve_export",
203 "text/plain",
204 fs,
205 "export");
206 state.addOutput(output);
207
208 state.setUIProvider(UIPROVIDER);
209 setStaticState(state);
210 }
211 }

http://dive4elements.wald.intevation.org