Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/exports/fixings/FixDeltaWtGenerator.java @ 3212:abc2db630815
Work in generalized annotations for chart generators
flys-artifacts/trunk@4835 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Christian Lins <christian.lins@intevation.de> |
---|---|
date | Fri, 29 Jun 2012 12:35:06 +0000 |
parents | ae14f412ba10 |
children | 1aec30e75bcb |
comparison
equal
deleted
inserted
replaced
3211:a1a434c163a4 | 3212:abc2db630815 |
---|---|
14 | 14 |
15 import de.intevation.flys.artifacts.model.fixings.QWD; | 15 import de.intevation.flys.artifacts.model.fixings.QWD; |
16 | 16 |
17 import de.intevation.flys.exports.TimeseriesChartGenerator; | 17 import de.intevation.flys.exports.TimeseriesChartGenerator; |
18 | 18 |
19 import de.intevation.flys.jfree.CollisionFreeXYTextAnnotation; | |
20 import de.intevation.flys.jfree.FLYSAnnotation; | |
19 import de.intevation.flys.jfree.StyledTimeSeries; | 21 import de.intevation.flys.jfree.StyledTimeSeries; |
20 | 22 |
21 import de.intevation.flys.utils.FLYSUtils; | 23 import de.intevation.flys.utils.FLYSUtils; |
22 | 24 |
23 import java.awt.BasicStroke; | 25 import java.awt.BasicStroke; |
24 import java.awt.Color; | 26 import java.awt.Color; |
25 | 27 |
26 import java.io.OutputStream; | 28 import java.io.OutputStream; |
27 | 29 |
30 import java.util.ArrayList; | |
31 import java.util.HashMap; | |
32 import java.util.List; | |
33 import java.util.Map; | |
34 import java.util.Set; | |
35 | |
28 import javax.xml.xpath.XPathConstants; | 36 import javax.xml.xpath.XPathConstants; |
29 | 37 |
30 import org.apache.log4j.Logger; | 38 import org.apache.log4j.Logger; |
31 | 39 |
32 import org.jfree.chart.JFreeChart; | 40 import org.jfree.chart.JFreeChart; |
41 | |
42 import org.jfree.chart.annotations.XYTextAnnotation; | |
33 | 43 |
34 import org.jfree.chart.plot.IntervalMarker; | 44 import org.jfree.chart.plot.IntervalMarker; |
35 import org.jfree.chart.plot.ValueMarker; | 45 import org.jfree.chart.plot.ValueMarker; |
36 | 46 |
37 import org.jfree.chart.title.TextTitle; | 47 import org.jfree.chart.title.TextTitle; |
244 | 254 |
245 TimeSeries series = new StyledTimeSeries(desc, theme); | 255 TimeSeries series = new StyledTimeSeries(desc, theme); |
246 TimeSeries interpol = new StyledTimeSeries(desc + "interpol", theme); | 256 TimeSeries interpol = new StyledTimeSeries(desc + "interpol", theme); |
247 | 257 |
248 if (qwds == null) { | 258 if (qwds == null) { |
249 return; | 259 logger.debug("doAnalysisEventsOut: qwds == null"); |
250 } | 260 return; |
261 } | |
262 | |
263 if (qwds.length == 0) { | |
264 logger.debug("doAnalysisEventsOut: qwds.length == 0"); | |
265 return; | |
266 } | |
267 | |
268 Map<Integer, int[]> annoIdxMap = new HashMap<Integer, int[]>(); | |
269 | |
251 for (int i = 0; i < qwds.length; i++) { | 270 for (int i = 0; i < qwds.length; i++) { |
252 if (qwds[i] == null) { | 271 if (qwds[i] == null) { |
272 logger.debug("doAnalysisEventsOut: qwds[" + i + "] == null"); | |
253 continue; | 273 continue; |
254 } | 274 } |
255 RegularTimePeriod rtp = new Day(qwds[i].getDate()); | 275 RegularTimePeriod rtp = new Day(qwds[i].getDate()); |
256 double value = qwds[i].getDeltaW(); | 276 double value = qwds[i].getDeltaW(); |
257 boolean interpolate = qwds[i].getInterpolated(); | 277 boolean interpolate = qwds[i].getInterpolated(); |
258 if (interpolate) { | 278 if (interpolate) { |
259 interpol.add(rtp, value); | 279 interpol.add(rtp, value); |
260 } | 280 } |
261 else { | 281 else { |
282 annoIdxMap.put( | |
283 i, | |
284 new int[]{series.getItemCount(), tsc.getSeriesCount()}); | |
262 series.add(rtp, value); | 285 series.add(rtp, value); |
263 } | 286 } |
264 } | 287 } |
265 tsc.addSeries(series); | 288 tsc.addSeries(series); |
266 tsc.addSeries(interpol); | 289 tsc.addSeries(interpol); |
267 addAxisDataset(tsc, 0, visible); | 290 addAxisDataset(tsc, 0, visible); |
268 addAttribute(desc + "interpol", "interpolate"); | 291 addAttribute(desc + "interpol", "interpolate"); |
269 addAttribute(desc, "outline"); | 292 addAttribute(desc, "outline"); |
293 | |
294 doQWDTextAnnotations(annoIdxMap, tsc, qwds, theme, visible); | |
295 } | |
296 | |
297 | |
298 protected void doQWDTextAnnotations(Map<Integer, int[]> annoIdxMap, | |
299 TimeSeriesCollection tsc, QWD[] qwds, Document theme, boolean visible) { | |
300 List<XYTextAnnotation> textAnnos = new ArrayList<XYTextAnnotation>(); | |
301 Set<Map.Entry<Integer, int[]>> entries = annoIdxMap.entrySet(); | |
302 for(Map.Entry<Integer, int[]> entry : entries) { | |
303 QWD qwd = qwds[entry.getKey()]; | |
304 int[] idxs = entry.getValue(); | |
305 double x = tsc.getXValue(idxs[0], idxs[1]); | |
306 XYTextAnnotation anno = new CollisionFreeXYTextAnnotation( | |
307 qwd.getQ() + " m\u00B3/s", | |
308 x, | |
309 qwd.getDeltaW()); | |
310 textAnnos.add(anno); | |
311 logger.debug("annotation: " + x + "/" + qwd.getDeltaW()); | |
312 } | |
313 | |
314 FLYSAnnotation flysAnno = new FLYSAnnotation(null, null, null, theme); | |
315 flysAnno.setTextAnnotations(textAnnos); | |
316 addAnnotations(flysAnno, visible); | |
270 } | 317 } |
271 | 318 |
272 | 319 |
273 protected void doReferenceEventsOut( | 320 protected void doReferenceEventsOut( |
274 FLYSArtifact artifact, | 321 FLYSArtifact artifact, |
286 TimeSeries interpol = new StyledTimeSeries(desc + "interpol", theme); | 333 TimeSeries interpol = new StyledTimeSeries(desc + "interpol", theme); |
287 | 334 |
288 if (qwds == null) { | 335 if (qwds == null) { |
289 return; | 336 return; |
290 } | 337 } |
338 | |
339 Map<Integer, int[]> annoIdxMap = new HashMap<Integer, int[]>(); | |
340 | |
291 for (int i = 0; i < qwds.length; i++) { | 341 for (int i = 0; i < qwds.length; i++) { |
292 if (qwds[i] == null) { | 342 if (qwds[i] == null) { |
293 continue; | 343 continue; |
294 } | 344 } |
295 RegularTimePeriod rtp = new Day(qwds[i].getDate()); | 345 RegularTimePeriod rtp = new Day(qwds[i].getDate()); |
297 boolean interpolate = qwds[i].getInterpolated(); | 347 boolean interpolate = qwds[i].getInterpolated(); |
298 if (interpolate) { | 348 if (interpolate) { |
299 interpol.addOrUpdate(rtp, value); | 349 interpol.addOrUpdate(rtp, value); |
300 } | 350 } |
301 else { | 351 else { |
352 annoIdxMap.put( | |
353 i, | |
354 new int[]{series.getItemCount(), tsc.getSeriesCount()}); | |
302 series.addOrUpdate(rtp, value); | 355 series.addOrUpdate(rtp, value); |
303 } | 356 } |
357 | |
304 } | 358 } |
305 tsc.addSeries(series); | 359 tsc.addSeries(series); |
306 tsc.addSeries(interpol); | 360 tsc.addSeries(interpol); |
307 | 361 |
308 addAxisDataset(tsc, 0, visible); | 362 addAxisDataset(tsc, 0, visible); |
309 addAttribute(desc + "interpol", "interpolate"); | 363 addAttribute(desc + "interpol", "interpolate"); |
310 addAttribute(desc, "outline"); | 364 addAttribute(desc, "outline"); |
365 | |
366 //doQWDTextAnnotations(annoIdxMap, tsc, qwds, theme, visible); | |
311 } | 367 } |
312 | 368 |
313 | 369 |
314 protected void doDeviationOut( | 370 protected void doDeviationOut( |
315 FLYSArtifact artifact, | 371 FLYSArtifact artifact, |