comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/GaugeDischargeCurveArtifact.java @ 3936:4e1b3b4ef132

Add new Artifacts and State for displaying discharge curves at a gauge flys-artifacts/trunk@5636 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Bjoern Ricks <bjoern.ricks@intevation.de>
date Fri, 28 Sep 2012 08:44:49 +0000
parents
children a4930c43b806
comparison
equal deleted inserted replaced
3935:6cdd994ee8a4 3936:4e1b3b4ef132
1 package de.intevation.flys.artifacts;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import org.apache.log4j.Logger;
7
8 import org.w3c.dom.Document;
9
10 import de.intevation.artifactdatabase.state.DefaultOutput;
11 import de.intevation.artifactdatabase.state.Facet;
12
13 import de.intevation.artifacts.ArtifactFactory;
14 import de.intevation.artifacts.CallMeta;
15
16 import de.intevation.artifacts.common.ArtifactNamespaceContext;
17 import de.intevation.artifacts.common.utils.XMLUtils;
18
19 import de.intevation.flys.artifacts.states.StaticState;
20 import de.intevation.flys.artifacts.StaticFLYSArtifact;
21 import de.intevation.flys.artifacts.model.GaugeDischargeCurveFacet;
22
23 import de.intevation.flys.model.Gauge;
24
25 import de.intevation.flys.utils.FLYSUtils;
26
27 /**
28 * Artifact to calculate a discharge curve from a gauge overview info
29 *
30 * @author <a href="mailto:bjoern.ricks@intevation.de">Björn Ricks</a>
31 */
32 public class GaugeDischargeCurveArtifact
33 extends AbstractStaticStateArtifact
34 {
35
36 private static final Logger logger =
37 Logger.getLogger(GaugeDischargeCurveArtifact.class);
38
39 public static final String XPATH_RIVER = "/art:action/art:river/@name";
40 public static final String XPATH_GAUGE = "/art:action/art:gauge/@reference";
41 public static final String NAME = "gaugedischargecurve";
42 public static final String STATIC_STATE_NAME = "state.gaugedischargecurve.static";
43
44 /**
45 * Setup initializes the data by extracting the river and gauge from
46 * the XML Document.
47 */
48 @Override
49 public void setup(
50 String identifier,
51 ArtifactFactory factory,
52 Object context,
53 CallMeta callmeta,
54 Document data)
55 {
56 logger.debug("GaugeDischargeCurveArtifact.setup");
57
58 if (logger.isDebugEnabled()) {
59 logger.debug("GaugeDischargeCurveState.setup" + XMLUtils.toString(data));
60 }
61 String gaugeref = XMLUtils.xpathString(data, XPATH_GAUGE,
62 ArtifactNamespaceContext.INSTANCE);
63 String rivername = XMLUtils.xpathString(data, XPATH_RIVER,
64 ArtifactNamespaceContext.INSTANCE);
65
66 addStringData("river", rivername);
67 addStringData("reference_gauge", gaugeref);
68
69 Gauge gauge = FLYSUtils.getReferenceGauge(this);
70
71 Facet gfacet = new GaugeDischargeCurveFacet(rivername, gauge);
72
73 List<Facet> fs = new ArrayList<Facet>(1);
74 fs.add(gfacet);
75
76 addFacets(STATIC_STATE_NAME, fs);
77
78 super.setup(identifier, factory, context, callmeta, data);
79 }
80
81 @Override
82 public String getName() {
83 return NAME;
84 }
85
86 @Override
87 protected void initStaticState() {
88 StaticState state = new StaticState(STATIC_STATE_NAME);
89 List<Facet> fs = facets.get(STATIC_STATE_NAME);
90 DefaultOutput output = new DefaultOutput(
91 "discharge_curve",
92 "output.discharge_curve", "image/png",
93 fs,
94 "chart");
95
96 state.addOutput(output);
97 setStaticState(state);
98 }
99 }

http://dive4elements.wald.intevation.org