Mercurial > dive4elements > gnv-client
comparison gnv-artifacts/src/main/java/de/intevation/gnv/chart/TimeSeriesChart.java @ 334:e37930705daa
Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
gnv-artifacts/trunk@400 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Mon, 07 Dec 2009 17:03:24 +0000 |
parents | 19571fd1d0e8 |
children | e964a3d8f7bc |
comparison
equal
deleted
inserted
replaced
333:19571fd1d0e8 | 334:e37930705daa |
---|---|
2 | 2 |
3 import java.text.DateFormat; | 3 import java.text.DateFormat; |
4 import java.text.SimpleDateFormat; | 4 import java.text.SimpleDateFormat; |
5 import java.util.Collection; | 5 import java.util.Collection; |
6 import java.util.Date; | 6 import java.util.Date; |
7 import java.util.HashMap; | |
7 import java.util.Iterator; | 8 import java.util.Iterator; |
8 import java.util.Locale; | 9 import java.util.Locale; |
9 | 10 |
10 import org.apache.log4j.Logger; | 11 import org.apache.log4j.Logger; |
11 | 12 |
20 import org.jfree.data.time.TimeSeries; | 21 import org.jfree.data.time.TimeSeries; |
21 import org.jfree.data.time.Minute; | 22 import org.jfree.data.time.Minute; |
22 import org.jfree.data.time.TimeSeriesCollection; | 23 import org.jfree.data.time.TimeSeriesCollection; |
23 | 24 |
24 import de.intevation.gnv.geobackend.base.Result; | 25 import de.intevation.gnv.geobackend.base.Result; |
26 import de.intevation.gnv.transition.describedata.KeyValueDescibeData; | |
25 import de.intevation.gnv.timeseries.gap.TimeGap; | 27 import de.intevation.gnv.timeseries.gap.TimeGap; |
26 | 28 |
27 | 29 |
28 /** | 30 /** |
29 * @author Ingo Weinzierl <ingo.weinzierl@intevation.de> | 31 * @author Ingo Weinzierl <ingo.weinzierl@intevation.de> |
60 this.timeGaps = timeGaps; | 62 this.timeGaps = timeGaps; |
61 this.locale = locale; | 63 this.locale = locale; |
62 this.PLOT_ORIENTATION = PlotOrientation.VERTICAL; | 64 this.PLOT_ORIENTATION = PlotOrientation.VERTICAL; |
63 this.linesVisible = linesVisible; | 65 this.linesVisible = linesVisible; |
64 this.shapesVisible = shapesVisible; | 66 this.shapesVisible = shapesVisible; |
67 this.datasets = new HashMap(); | |
65 } | 68 } |
66 | 69 |
67 | 70 |
68 protected void initChart() { | 71 protected void initChart() { |
69 chart = ChartFactory.createTimeSeriesChart( | 72 chart = ChartFactory.createTimeSeriesChart( |
112 if(series != null) { | 115 if(series != null) { |
113 // add gaps before adding series to chart | 116 // add gaps before adding series to chart |
114 startDate = results[startPos].getDate("XORDINATE"); | 117 startDate = results[startPos].getDate("XORDINATE"); |
115 endDate = results[endPos-1].getDate("XORDINATE"); | 118 endDate = results[endPos-1].getDate("XORDINATE"); |
116 addGaps(results,series,startDate,endDate,startPos,endPos); | 119 addGaps(results,series,startDate,endDate,startPos,endPos); |
117 addSeries(series, idx); | 120 addSeries(series, seriesName, idx); |
118 | 121 |
119 prepareAxis(((String)series.getKey()), idx); | |
120 adjustRenderer(idx++, linesVisible, shapesVisible); | |
121 startPos = endPos + 1; | 122 startPos = endPos + 1; |
122 } | 123 } |
123 | 124 |
124 // prepare variables for next plot | 125 // prepare variables for next plot |
125 breakPoint1 = row.getString("GROUP1"); | 126 breakPoint1 = row.getString("GROUP1"); |
132 breakPoint3 | 133 breakPoint3 |
133 ); | 134 ); |
134 | 135 |
135 log.debug("next dataset is '" + seriesName + "'"); | 136 log.debug("next dataset is '" + seriesName + "'"); |
136 series = new TimeSeries(seriesName, Minute.class); | 137 series = new TimeSeries(seriesName, Minute.class); |
137 | |
138 // set values of start date and start position in collection for | |
139 // next parameter | |
140 } | 138 } |
141 | 139 |
142 addValue(row, series); | 140 addValue(row, series); |
143 endPos++; | 141 endPos++; |
144 } | 142 } |
145 | 143 |
146 // add the last dataset if existing to plot and prepare its axis | 144 // add the last dataset if existing to plot and prepare its axis |
147 startDate = results[startPos].getDate("XORDINATE"); | 145 startDate = results[startPos].getDate("XORDINATE"); |
148 endDate = results[endPos-1].getDate("XORDINATE"); | 146 endDate = results[endPos-1].getDate("XORDINATE"); |
149 addGaps(results, series, startDate, endDate, startPos, endPos); | 147 addGaps(results, series, startDate, endDate, startPos, endPos); |
150 addSeries(series, idx); | 148 addSeries(series, seriesName, idx); |
151 | 149 |
152 if (series != null) { | 150 addDatasets(); |
153 prepareAxis(((String)series.getKey()), idx); | |
154 adjustRenderer(idx++, linesVisible, shapesVisible); | |
155 } | |
156 } | 151 } |
157 | 152 |
158 | 153 |
159 protected void addValue(Result row, Series series) { | 154 protected void addValue(Result row, Series series) { |
160 ((TimeSeries) series).addOrUpdate( | 155 ((TimeSeries) series).addOrUpdate( |
162 row.getDouble("YORDINATE") | 157 row.getDouble("YORDINATE") |
163 ); | 158 ); |
164 } | 159 } |
165 | 160 |
166 | 161 |
167 protected void addSeries(Series series, int idx) { | 162 protected void addSeries(Series series, String label, int idx) { |
168 log.debug("add series to timeseries chart"); | 163 log.debug("add series (" + label + ")to timeseries chart"); |
169 XYPlot plot = chart.getXYPlot(); | |
170 | 164 |
171 if (series == null) { | 165 if (series == null) { |
172 log.warn("no data to add"); | 166 log.warn("no data to add"); |
173 return; | 167 return; |
174 } | 168 } |
175 | 169 |
176 TimeSeriesCollection tsc = new TimeSeriesCollection((TimeSeries)series); | 170 TimeSeriesCollection tsc = null; |
177 plot.setDataset(idx, tsc); | 171 |
172 String parameter = findParameter(label); | |
173 if (datasets.containsKey(parameter)) | |
174 tsc = (TimeSeriesCollection) datasets.get(parameter); | |
175 else | |
176 tsc = new TimeSeriesCollection(); | |
177 | |
178 tsc.addSeries((TimeSeries) series); | |
179 datasets.put(parameter, tsc); | |
180 } | |
181 | |
182 | |
183 protected void addDatasets() { | |
184 Iterator iter = parameters.iterator(); | |
185 XYPlot plot = chart.getXYPlot(); | |
186 int idx = 0; | |
187 | |
188 TimeSeriesCollection tsc = null; | |
189 KeyValueDescibeData data = null; | |
190 String key = null; | |
191 while (iter.hasNext()) { | |
192 data = (KeyValueDescibeData) iter.next(); | |
193 key = data.getValue(); | |
194 | |
195 if (datasets.containsKey(key)) { | |
196 tsc = (TimeSeriesCollection)datasets.get(key); | |
197 plot.setDataset(idx, tsc ); | |
198 log.debug("Added " + key + " parameter to plot."); | |
199 prepareAxis(key, idx); | |
200 adjustRenderer( | |
201 idx++, | |
202 tsc.getSeriesCount(), | |
203 linesVisible, | |
204 shapesVisible | |
205 ); | |
206 } | |
207 } | |
178 } | 208 } |
179 | 209 |
180 | 210 |
181 protected void localizeDomainAxis(Axis axis, Locale locale) { | 211 protected void localizeDomainAxis(Axis axis, Locale locale) { |
182 if (locale == null) | 212 if (locale == null) |