Mercurial > dive4elements > gnv-client
comparison gnv-artifacts/src/main/java/de/intevation/gnv/histogram/HistogramHelper.java @ 1081:846b2b70b2e0
Implemented histogram creation for vectorial timeseries.
gnv-artifacts/trunk@1183 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 09 Jun 2010 09:51:05 +0000 |
parents | 01e26528bb39 |
children | f953c9a559d8 |
comparison
equal
deleted
inserted
replaced
1080:01e26528bb39 | 1081:846b2b70b2e0 |
---|---|
1 package de.intevation.gnv.histogram; | 1 package de.intevation.gnv.histogram; |
2 | |
3 import de.intevation.artifacts.CallContext; | |
4 | |
5 import de.intevation.gnv.artifacts.ressource.RessourceFactory; | |
6 | |
7 import de.intevation.gnv.chart.ChartLabels; | |
2 | 8 |
3 import de.intevation.gnv.geobackend.base.Result; | 9 import de.intevation.gnv.geobackend.base.Result; |
4 import de.intevation.gnv.geobackend.base.ResultDescriptor; | 10 import de.intevation.gnv.geobackend.base.ResultDescriptor; |
5 | 11 |
6 import de.intevation.gnv.state.describedata.KeyValueDescibeData; | 12 import de.intevation.gnv.state.describedata.KeyValueDescibeData; |
7 | 13 |
8 import java.util.ArrayList; | 14 import java.util.ArrayList; |
9 import java.util.Collection; | 15 import java.util.Collection; |
10 import java.util.Iterator; | 16 import java.util.Iterator; |
11 import java.util.List; | 17 import java.util.List; |
18 import java.util.Locale; | |
12 | 19 |
13 import org.apache.log4j.Logger; | 20 import org.apache.log4j.Logger; |
14 | 21 |
15 /** | 22 /** |
16 * This class supports some helper methods for histogram charts. | 23 * This class supports some helper methods for histogram charts. |
234 (String) data[0], | 241 (String) data[0], |
235 "", | 242 "", |
236 "", | 243 "", |
237 fac.getRessource(locale, "histogram.axis.range.title", "")); | 244 fac.getRessource(locale, "histogram.axis.range.title", "")); |
238 } | 245 } |
246 | |
247 | |
248 public static Object[][] prepareVectorialHistogramData(Collection input) { | |
249 List names = new ArrayList<String>(); | |
250 List data = new ArrayList<Double[]>(); | |
251 | |
252 if (logger.isDebugEnabled()) { | |
253 logger.debug("######### prepare vectorial histogram data #######"); | |
254 logger.debug("Input data size: " + input.size()); | |
255 } | |
256 | |
257 if (input == null) { | |
258 return new Object[0][0]; | |
259 } | |
260 | |
261 int sIdx = -1; | |
262 int yIdx = -1; | |
263 | |
264 String series = null; | |
265 | |
266 try { | |
267 Iterator iter = input.iterator(); | |
268 | |
269 if (iter.hasNext()) { | |
270 Result row = (Result) iter.next(); | |
271 Result previousRow = row; | |
272 | |
273 if (sIdx == -1 || yIdx == -1) { | |
274 ResultDescriptor rd = row.getResultDescriptor(); | |
275 sIdx = rd.getColumnIndex("SERIES"); | |
276 yIdx = rd.getColumnIndex("YORDINATE"); | |
277 | |
278 if (sIdx == -1 || yIdx == -1) { | |
279 return new Object[0][0]; | |
280 } | |
281 } | |
282 | |
283 List values = new ArrayList<Double>(); | |
284 while (iter.hasNext()) { | |
285 row = (Result) iter.next(); | |
286 | |
287 // found new series | |
288 if (series != null && !series.equals(row.getString(sIdx))) { | |
289 | |
290 // add values and parameter name | |
291 data.add((Double[]) | |
292 values.toArray(new Double[values.size()])); | |
293 names.add(series); | |
294 | |
295 if (logger.isDebugEnabled()) { | |
296 logger.debug(" --- series name: " + series); | |
297 logger.debug(" --- series items: " + values.size()); | |
298 } | |
299 | |
300 values.clear(); | |
301 } | |
302 | |
303 Double value = row.getDouble(yIdx); | |
304 if (value != null) | |
305 values.add(value); | |
306 | |
307 series = row.getString(sIdx); | |
308 } | |
309 | |
310 if (logger.isDebugEnabled()) { | |
311 logger.debug(" --- series name: " + series); | |
312 logger.debug(" --- series items: " + values.size()); | |
313 } | |
314 | |
315 data.add((Double[]) values.toArray(new Double[values.size()])); | |
316 names.add(series); | |
317 } | |
318 } | |
319 catch (Exception e) { | |
320 logger.error(e.getMessage(), e); | |
321 } | |
322 | |
323 int count = data.size(); | |
324 logger.debug(" === Found total: " + count); | |
325 Object[][] obj = new Object[count][2]; | |
326 for (int i = 0; i < count; i++) { | |
327 obj[i][0] = names.get(i); | |
328 obj[i][1] = (Double[]) data.get(i); | |
329 } | |
330 | |
331 return obj; | |
332 } | |
239 } | 333 } |
240 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : | 334 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |