Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/exports/TimeseriesChartGenerator.java @ 2238:23c7c51df772
Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
flys-artifacts/trunk@3885 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Thu, 02 Feb 2012 15:44:13 +0000 |
parents | c2b15d9c0f43 |
children | 7e8e1d5384c0 |
comparison
equal
deleted
inserted
replaced
2237:60615235e951 | 2238:23c7c51df772 |
---|---|
1 package de.intevation.flys.exports; | 1 package de.intevation.flys.exports; |
2 | 2 |
3 import java.awt.Color; | |
4 | |
5 import java.util.ArrayList; | |
6 import java.util.HashMap; | |
7 import java.util.List; | |
8 import java.util.Map; | |
3 | 9 |
4 import org.apache.log4j.Logger; | 10 import org.apache.log4j.Logger; |
5 | 11 |
12 import org.jfree.chart.ChartFactory; | |
6 import org.jfree.chart.JFreeChart; | 13 import org.jfree.chart.JFreeChart; |
7 import org.jfree.chart.axis.NumberAxis; | 14 import org.jfree.chart.axis.NumberAxis; |
15 import org.jfree.chart.plot.XYPlot; | |
16 | |
17 import org.jfree.data.Range; | |
18 import org.jfree.data.time.TimeSeriesCollection; | |
19 import org.jfree.data.xy.XYDataset; | |
8 | 20 |
9 | 21 |
10 /** | 22 /** |
11 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> | 23 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
12 */ | 24 */ |
13 public abstract class TimeseriesChartGenerator extends ChartGenerator { | 25 public abstract class TimeseriesChartGenerator extends ChartGenerator { |
14 | 26 |
27 | |
28 /** | |
29 * Inner class TimeseriesAxisDataset stores TimeSeriesCollection. | |
30 */ | |
31 public class TimeseriesAxisDataset implements AxisDataset { | |
32 | |
33 protected int axisSymbol; | |
34 | |
35 protected List<TimeSeriesCollection> datasets; | |
36 | |
37 protected Range range; | |
38 | |
39 protected int plotAxisIndex; | |
40 | |
41 | |
42 public TimeseriesAxisDataset(int axisSymbol) { | |
43 this.axisSymbol = axisSymbol; | |
44 this.datasets = new ArrayList<TimeSeriesCollection>(); | |
45 } | |
46 | |
47 | |
48 @Override | |
49 public void addDataset(XYDataset dataset) { | |
50 if (!(dataset instanceof TimeSeriesCollection)) { | |
51 logger.warn("Skip non TimeSeriesCollection dataset."); | |
52 return; | |
53 } | |
54 | |
55 TimeSeriesCollection tsc = (TimeSeriesCollection) dataset; | |
56 | |
57 datasets.add(tsc); | |
58 mergeRanges(tsc); | |
59 } | |
60 | |
61 | |
62 @Override | |
63 public boolean isEmpty() { | |
64 return datasets.isEmpty(); | |
65 } | |
66 | |
67 | |
68 protected void mergeRanges(TimeSeriesCollection dataset) { | |
69 logger.debug("Range after merging: " + range); | |
70 | |
71 Range[] xyRanges = ChartHelper.getRanges(dataset); | |
72 range = Range.combine(range, xyRanges[1]); | |
73 | |
74 logger.debug("Range after merging: " + range); | |
75 } | |
76 | |
77 } // end of TimeseriesAxisDataset class | |
78 | |
79 | |
80 | |
15 private static final Logger logger = | 81 private static final Logger logger = |
16 Logger.getLogger(TimeseriesChartGenerator.class); | 82 Logger.getLogger(TimeseriesChartGenerator.class); |
17 | 83 |
18 | 84 |
19 protected abstract NumberAxis createYAxis(int index); | 85 protected Map<Integer, Range> xRanges; |
86 | |
87 | |
88 | |
89 /** | |
90 * The default constructor that initializes internal datastructures. | |
91 */ | |
92 public TimeseriesChartGenerator() { | |
93 super(); | |
94 | |
95 xRanges = new HashMap<Integer, Range>(); | |
96 } | |
97 | |
20 | 98 |
21 | 99 |
22 @Override | 100 @Override |
23 public JFreeChart generateChart() { | 101 public JFreeChart generateChart() { |
24 logger.info("Generate Timeseries Chart."); | 102 logger.info("Generate Timeseries Chart."); |
25 | 103 |
104 JFreeChart chart = ChartFactory.createTimeSeriesChart( | |
105 getChartTitle(), | |
106 getXAxisLabel(), | |
107 getYAxisLabel(0), | |
108 null, | |
109 true, | |
110 false, | |
111 false); | |
112 | |
26 logger.warn("TODO: IMPLEMENT ME!"); | 113 logger.warn("TODO: IMPLEMENT ME!"); |
27 | 114 |
28 return null; | 115 XYPlot plot = (XYPlot) chart.getPlot(); |
116 | |
117 chart.setBackgroundPaint(Color.WHITE); | |
118 plot.setBackgroundPaint(Color.WHITE); | |
119 | |
120 addSubtitles(chart); | |
121 addDatasets(plot); | |
122 | |
123 return chart; | |
124 } | |
125 | |
126 | |
127 /** | |
128 * This method creates new instances of TimeseriesAxisDataset. | |
129 * | |
130 * @param idx The symbol for the new TimeseriesAxisDataset. | |
131 */ | |
132 @Override | |
133 protected AxisDataset createAxisDataset(int idx) { | |
134 logger.debug("Create a new AxisDataset for index: " + idx); | |
135 return new TimeseriesAxisDataset(idx); | |
136 } | |
137 | |
138 | |
139 /** | |
140 * Effect: extend range of x axis to include given limits. | |
141 * @param range the given ("minimal") range. | |
142 * @param index index of axis to be merged. | |
143 */ | |
144 @Override | |
145 protected void combineXRanges(Range range, int index) { | |
146 if (range != null) { | |
147 Range old = xRanges.get(index); | |
148 | |
149 if (old != null) { | |
150 range = Range.combine(old, range); | |
151 } | |
152 | |
153 xRanges.put(index, range); | |
154 } | |
155 } | |
156 | |
157 | |
158 protected void addDatasets(XYPlot plot) { | |
159 logger.warn("TODO: IMPLEMENT ME!"); | |
29 } | 160 } |
30 } | 161 } |
31 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 162 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |