Mercurial > dive4elements > river
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 } |