Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java @ 300:9a0e1289bab6
The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
flys-artifacts/trunk@1649 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 06 Apr 2011 10:01:49 +0000 |
parents | fbbb22e1e206 |
children | f526f02e8ce2 |
comparison
equal
deleted
inserted
replaced
299:8940b0885865 | 300:9a0e1289bab6 |
---|---|
1 package de.intevation.flys.artifacts; | 1 package de.intevation.flys.artifacts; |
2 | 2 |
3 import java.awt.Color; | |
4 import java.io.IOException; | |
5 import java.io.OutputStream; | |
6 import java.util.ArrayList; | |
7 import java.util.List; | 3 import java.util.List; |
8 import java.util.Map; | |
9 import java.util.Vector; | 4 import java.util.Vector; |
10 | 5 |
11 import org.w3c.dom.Document; | 6 import org.w3c.dom.Document; |
12 import org.w3c.dom.Element; | 7 import org.w3c.dom.Element; |
13 import org.w3c.dom.Node; | 8 import org.w3c.dom.Node; |
14 | 9 |
15 import org.apache.log4j.Logger; | 10 import org.apache.log4j.Logger; |
16 | |
17 import org.jfree.data.xy.DefaultXYDataset; | |
18 | |
19 import org.jfree.chart.ChartFactory; | |
20 import org.jfree.chart.JFreeChart; | |
21 import org.jfree.chart.plot.PlotOrientation; | |
22 | 11 |
23 import de.intevation.artifacts.ArtifactNamespaceContext; | 12 import de.intevation.artifacts.ArtifactNamespaceContext; |
24 import de.intevation.artifacts.CallContext; | 13 import de.intevation.artifacts.CallContext; |
25 | 14 |
26 import de.intevation.artifactdatabase.ProtocolUtils; | 15 import de.intevation.artifactdatabase.ProtocolUtils; |
29 import de.intevation.artifactdatabase.state.StateEngine; | 18 import de.intevation.artifactdatabase.state.StateEngine; |
30 import de.intevation.artifactdatabase.transition.TransitionEngine; | 19 import de.intevation.artifactdatabase.transition.TransitionEngine; |
31 | 20 |
32 import de.intevation.artifacts.common.utils.XMLUtils; | 21 import de.intevation.artifacts.common.utils.XMLUtils; |
33 | 22 |
34 import de.intevation.flys.model.Gauge; | |
35 | |
36 import de.intevation.flys.artifacts.model.DischargeTables; | |
37 import de.intevation.flys.artifacts.model.GaugesFactory; | |
38 import de.intevation.flys.artifacts.states.DefaultState; | 23 import de.intevation.flys.artifacts.states.DefaultState; |
39 import de.intevation.flys.artifacts.context.FLYSContext; | 24 import de.intevation.flys.artifacts.context.FLYSContext; |
40 import de.intevation.flys.exports.ChartExportHelper; | |
41 | 25 |
42 | 26 |
43 /** | 27 /** |
44 * The default WINFO artifact. | 28 * The default WINFO artifact. |
45 * | 29 * |
134 | 118 |
135 root.appendChild(ui); | 119 root.appendChild(ui); |
136 root.appendChild(outs); | 120 root.appendChild(outs); |
137 | 121 |
138 return description; | 122 return description; |
139 } | |
140 | |
141 | |
142 @Override | |
143 public void out( | |
144 Document format, | |
145 OutputStream out, | |
146 CallContext context) | |
147 throws IOException | |
148 { | |
149 logger.info("WINFOArtifact.out"); | |
150 String river = (String) getData("river").getValue(); | |
151 String from = (String) getData("ld_from").getValue(); | |
152 String to = (String) getData("ld_to").getValue(); | |
153 | |
154 double f = Double.parseDouble(from); | |
155 double t = Double.parseDouble(to); | |
156 | |
157 List<double[]> ranges = new ArrayList<double[]>(); | |
158 ranges.add(new double [] { f, t }); | |
159 | |
160 List<Gauge> gauges = GaugesFactory.getGauges(river); | |
161 List<Gauge> filtered = GaugesFactory.filterRanges(gauges, ranges); | |
162 | |
163 if (logger.isDebugEnabled()) { | |
164 int numGauges = gauges != null ? gauges.size() : 0; | |
165 int numFiltered = filtered != null ? filtered.size() : 0; | |
166 | |
167 logger.debug("++++++++++++++++++++"); | |
168 logger.debug("Search gauges for river: " + river); | |
169 logger.debug("-> ... from range: " + from); | |
170 logger.debug("-> ... to range: " + to); | |
171 logger.debug("-> Found " + numGauges + " gauges in total."); | |
172 logger.debug("-> Found " + numFiltered + " gauges after filtering."); | |
173 logger.debug("++++++++++++++++++++"); | |
174 } | |
175 | |
176 String[] gaugeNames = new String[filtered.size()]; | |
177 int idx = 0; | |
178 for (Gauge gauge: filtered) { | |
179 gaugeNames[idx++] = gauge.getName(); | |
180 } | |
181 | |
182 DischargeTables dt = new DischargeTables(river, gaugeNames); | |
183 Map<String, double[][]> gaugeValues = dt.getValues(100d); | |
184 | |
185 DefaultXYDataset dataset = new DefaultXYDataset(); | |
186 | |
187 for (String gauge: gaugeNames) { | |
188 double[][] values = gaugeValues.get(gauge); | |
189 dataset.addSeries(gauge, values); | |
190 } | |
191 | |
192 JFreeChart chart = ChartFactory.createXYLineChart( | |
193 "Abflusskurven (" + river + ")", | |
194 "Q", "W", | |
195 dataset, | |
196 PlotOrientation.VERTICAL, | |
197 true, | |
198 false, | |
199 false); | |
200 | |
201 chart.setBackgroundPaint(Color.WHITE); | |
202 chart.getPlot().setBackgroundPaint(Color.WHITE); | |
203 | |
204 ChartExportHelper.exportImage( | |
205 out, | |
206 chart, | |
207 "png", | |
208 600, 400); | |
209 } | 123 } |
210 | 124 |
211 | 125 |
212 /** | 126 /** |
213 * Returns the name of the concrete artifact. | 127 * Returns the name of the concrete artifact. |