Mercurial > dive4elements > gnv-client
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 : |