comparison artifacts/src/main/java/org/dive4elements/river/exports/DischargeCurveGenerator.java @ 6887:5a1078fd53e1

issue1378: Also add ability to add text-annotations.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Wed, 21 Aug 2013 12:24:45 +0200
parents 3df41681f326
children 281190b96f4d
comparison
equal deleted inserted replaced
6885:b410729bdcdd 6887:5a1078fd53e1
6 * documentation coming with Dive4Elements River for details. 6 * documentation coming with Dive4Elements River for details.
7 */ 7 */
8 8
9 package org.dive4elements.river.exports; 9 package org.dive4elements.river.exports;
10 10
11 import java.util.ArrayList;
12 import java.util.List;
13
11 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; 14 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
12 import org.dive4elements.river.artifacts.D4EArtifact; 15 import org.dive4elements.river.artifacts.D4EArtifact;
13 import org.dive4elements.river.artifacts.model.FacetTypes; 16 import org.dive4elements.river.artifacts.model.FacetTypes;
14 import org.dive4elements.river.artifacts.model.WQKms; 17 import org.dive4elements.river.artifacts.model.WQKms;
18 import org.dive4elements.river.exports.process.DischargeProcessor;
19 import org.dive4elements.river.jfree.CollisionFreeXYTextAnnotation;
15 import org.dive4elements.river.jfree.Bounds; 20 import org.dive4elements.river.jfree.Bounds;
16 import org.dive4elements.river.jfree.RiverAnnotation; 21 import org.dive4elements.river.jfree.RiverAnnotation;
17 import org.dive4elements.river.jfree.StickyAxisAnnotation; 22 import org.dive4elements.river.jfree.StickyAxisAnnotation;
18 import org.dive4elements.river.jfree.StyledXYSeries; 23 import org.dive4elements.river.jfree.StyledXYSeries;
19 import org.dive4elements.river.model.Gauge; 24 import org.dive4elements.river.model.Gauge;
20 import org.dive4elements.river.model.River; 25 import org.dive4elements.river.model.River;
21 import org.dive4elements.river.utils.RiverUtils; 26 import org.dive4elements.river.utils.RiverUtils;
27 import org.dive4elements.river.utils.ThemeUtil;
22 28
23 import org.apache.log4j.Logger; 29 import org.apache.log4j.Logger;
24 import org.jfree.chart.annotations.XYTextAnnotation; 30 import org.jfree.chart.annotations.XYTextAnnotation;
25 import org.jfree.chart.axis.ValueAxis; 31 import org.jfree.chart.axis.ValueAxis;
26 import org.jfree.chart.plot.XYPlot; 32 import org.jfree.chart.plot.XYPlot;
277 StyledSeriesBuilder.addPointsQW(series, (WQKms) wqkms); 283 StyledSeriesBuilder.addPointsQW(series, (WQKms) wqkms);
278 284
279 addAxisSeries(series, YAXIS.W.idx, visible); 285 addAxisSeries(series, YAXIS.W.idx, visible);
280 } 286 }
281 287
288
289 /** Add a point annotation at given x and y coordinates. */
290 protected void addPointTextAnnotation(
291 String title,
292 double x,
293 double y,
294 Document theme
295 ) {
296 List<XYTextAnnotation> textAnnos =
297 new ArrayList<XYTextAnnotation>();
298 XYTextAnnotation anno = new CollisionFreeXYTextAnnotation(
299 title,
300 x,
301 y);
302 textAnnos.add(anno);
303 RiverAnnotation flysAnno = new RiverAnnotation(
304 null, null, null, theme);
305 flysAnno.setTextAnnotations(textAnnos);
306 addAnnotations(flysAnno);
307 }
308
309
282 /** 310 /**
283 * Add WQ Data to plot. 311 * Add WQ Data to plot.
284 * @param wq data as double[][] 312 * @param wq data as double[][]
285 */ 313 */
286 protected void doWQOut( 314 protected void doWQOut(
289 Document theme, 317 Document theme,
290 boolean visible 318 boolean visible
291 ) { 319 ) {
292 logger.debug("DischargeCurveGenerator: doWQOut"); 320 logger.debug("DischargeCurveGenerator: doWQOut");
293 double [][] data = (double [][]) wq; 321 double [][] data = (double [][]) wq;
294 322 String title = aaf.getFacetDescription();
295 XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), theme); 323
324 XYSeries series = new StyledXYSeries(title, theme);
296 325
297 double translate = getCurrentGaugeDatum(); 326 double translate = getCurrentGaugeDatum();
298 if (translate != 0d) { 327 if (translate != 0d) {
299 StyledSeriesBuilder.addPointsQW(series, data, -translate, 100d); 328 StyledSeriesBuilder.addPointsQW(series, data, -translate, 100d);
300 addAxisSeries(series, YAXIS.W.idx, visible); 329 addAxisSeries(series, YAXIS.W.idx, visible);
301 } 330 }
302 else { 331 else {
303 StyledSeriesBuilder.addPoints(series, data, true); 332 StyledSeriesBuilder.addPoints(series, data, true);
304 addAxisSeries(series, YAXIS.W.idx, visible); 333 addAxisSeries(series, YAXIS.W.idx, visible);
305 } 334 }
335
336 if(visible && ThemeUtil.parseShowPointLabel(theme)
337 && data != null && data.length != 0) {
338
339 double[] xs = data[0];
340 double[] ys = data[1];
341 for (int i = 0; i < xs.length; i++) {
342 double x = xs[i];
343 double y = ys[i];
344
345 if (translate != 0d) {
346 y = (y-translate)*100d;
347 }
348
349 addPointTextAnnotation(title, x, y, theme);
350 }
351 }
306 } 352 }
307 353
308 } 354 }
309 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 355 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org