comparison gnv-artifacts/src/main/java/de/intevation/gnv/chart/AbstractXYLineChart.java @ 297:3f43392df3f6

Interface and abstract classes for chart creation implemented. gnv-artifacts/trunk@351 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Thu, 19 Nov 2009 15:24:45 +0000
parents
children 3ea030aafe65
comparison
equal deleted inserted replaced
296:da1499a464b9 297:3f43392df3f6
1 package de.intevation.gnv.chart;
2
3 import java.awt.Color;
4 import java.util.Collection;
5 import java.util.Iterator;
6 import java.util.Locale;
7
8 import org.apache.log4j.Logger;
9
10 import org.jfree.chart.JFreeChart;
11 import org.jfree.chart.ChartTheme;
12 import org.jfree.chart.ChartFactory;
13 import org.jfree.chart.axis.NumberAxis;
14 import org.jfree.chart.axis.NumberTickUnit;
15 import org.jfree.chart.axis.AxisLocation;
16 import org.jfree.chart.plot.PlotOrientation;
17 import org.jfree.chart.plot.XYPlot;
18 import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
19 import org.jfree.data.general.Series;
20 import org.jfree.data.time.TimeSeriesCollection;
21 import org.jfree.data.time.Minute;
22 import org.jfree.data.xy.XYDataset;
23
24 import de.intevation.gnv.geobackend.base.Result;
25 import de.intevation.gnv.transition.describedata.KeyValueDescibeData;
26
27 /**
28 * @author Ingo Weinzierl <ingo.weinzierl@intevation.de>
29 */
30 public abstract class AbstractXYLineChart
31 extends AbstractChart
32 {
33 private static Logger log = Logger.getLogger(AbstractXYLineChart.class);
34
35 protected static Color[] COLOR = {
36 Color.black, Color.red, Color.green, Color.blue
37 };
38
39 protected PlotOrientation PLOT_ORIENTATION = PlotOrientation.VERTICAL;
40
41 protected abstract void initData();
42 protected abstract void addValue(Result row, Series series);
43 protected abstract void addSeries(Series series, int idx);
44 protected abstract String createSeriesName(
45 String breakPoint1,
46 String breakPoint2,
47 String breakPoint3
48 );
49
50
51 public JFreeChart generateChart() {
52 log.debug("generate XYLineChart");
53
54 if (chart != null)
55 return chart;
56
57 chart = ChartFactory.createXYLineChart(
58 labels.getTitle(),
59 labels.getDomainAxisLabel(),
60 null,
61 null,
62 PLOT_ORIENTATION,
63 true,
64 false,
65 false
66 );
67
68 initData();
69 return chart;
70 }
71
72
73 protected void prepareAxis(String seriesKey, int idx) {
74 log.debug("prepare axis of xychart");
75 XYPlot plot = chart.getXYPlot();
76 NumberAxis axis = new NumberAxis(seriesKey);
77
78 if (seriesKey.contains("richtung")) {
79 axis.setTickUnit(new NumberTickUnit(30.0));
80 axis.setUpperBound(360.0);
81 axis.setLowerBound(0.0);
82 plot.setRangeAxis(idx, axis);
83 }
84 else {
85 axis.setFixedDimension(10.0);
86 axis.setAutoRangeIncludesZero(false);
87 plot.setRangeAxis(idx, axis);
88 axis.configure();
89 }
90
91 if (idx % 2 != 0)
92 plot.setRangeAxisLocation(idx, AxisLocation.BOTTOM_OR_RIGHT);
93 else
94 plot.setRangeAxisLocation(idx, AxisLocation.BOTTOM_OR_LEFT);
95 plot.mapDatasetToRangeAxis(idx, idx);
96
97 StandardXYItemRenderer renderer = new StandardXYItemRenderer();
98 renderer.setSeriesPaint(idx, COLOR[idx%COLOR.length]);
99 plot.setRenderer(idx, renderer);
100 }
101
102
103 protected String findValueTitle(Collection values, String id) {
104 log.debug("find description of dataset");
105
106 Iterator it = values.iterator();
107 while (it.hasNext()) {
108 KeyValueDescibeData data = (KeyValueDescibeData) it.next();
109
110 if (id.equals(data.getKey()))
111 return data.getValue();
112 }
113 return "";
114 }
115 }
116 // vim:set ts=4 sw=4 si et sta sts=4 fenc=latin1 :

http://dive4elements.wald.intevation.org