Mercurial > dive4elements > gnv-client
diff 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 |
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/chart/TimeSeriesChart.java Mon Dec 07 10:33:31 2009 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/TimeSeriesChart.java Mon Dec 07 17:03:24 2009 +0000 @@ -4,6 +4,7 @@ import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; +import java.util.HashMap; import java.util.Iterator; import java.util.Locale; @@ -22,6 +23,7 @@ import org.jfree.data.time.TimeSeriesCollection; import de.intevation.gnv.geobackend.base.Result; +import de.intevation.gnv.transition.describedata.KeyValueDescibeData; import de.intevation.gnv.timeseries.gap.TimeGap; @@ -62,6 +64,7 @@ this.PLOT_ORIENTATION = PlotOrientation.VERTICAL; this.linesVisible = linesVisible; this.shapesVisible = shapesVisible; + this.datasets = new HashMap(); } @@ -114,10 +117,8 @@ startDate = results[startPos].getDate("XORDINATE"); endDate = results[endPos-1].getDate("XORDINATE"); addGaps(results,series,startDate,endDate,startPos,endPos); - addSeries(series, idx); + addSeries(series, seriesName, idx); - prepareAxis(((String)series.getKey()), idx); - adjustRenderer(idx++, linesVisible, shapesVisible); startPos = endPos + 1; } @@ -134,9 +135,6 @@ log.debug("next dataset is '" + seriesName + "'"); series = new TimeSeries(seriesName, Minute.class); - - // set values of start date and start position in collection for - // next parameter } addValue(row, series); @@ -147,12 +145,9 @@ startDate = results[startPos].getDate("XORDINATE"); endDate = results[endPos-1].getDate("XORDINATE"); addGaps(results, series, startDate, endDate, startPos, endPos); - addSeries(series, idx); + addSeries(series, seriesName, idx); - if (series != null) { - prepareAxis(((String)series.getKey()), idx); - adjustRenderer(idx++, linesVisible, shapesVisible); - } + addDatasets(); } @@ -164,17 +159,52 @@ } - protected void addSeries(Series series, int idx) { - log.debug("add series to timeseries chart"); - XYPlot plot = chart.getXYPlot(); + protected void addSeries(Series series, String label, int idx) { + log.debug("add series (" + label + ")to timeseries chart"); if (series == null) { log.warn("no data to add"); return; } - TimeSeriesCollection tsc = new TimeSeriesCollection((TimeSeries)series); - plot.setDataset(idx, tsc); + TimeSeriesCollection tsc = null; + + String parameter = findParameter(label); + if (datasets.containsKey(parameter)) + tsc = (TimeSeriesCollection) datasets.get(parameter); + else + tsc = new TimeSeriesCollection(); + + tsc.addSeries((TimeSeries) series); + datasets.put(parameter, tsc); + } + + + protected void addDatasets() { + Iterator iter = parameters.iterator(); + XYPlot plot = chart.getXYPlot(); + int idx = 0; + + TimeSeriesCollection tsc = null; + KeyValueDescibeData data = null; + String key = null; + while (iter.hasNext()) { + data = (KeyValueDescibeData) iter.next(); + key = data.getValue(); + + if (datasets.containsKey(key)) { + tsc = (TimeSeriesCollection)datasets.get(key); + plot.setDataset(idx, tsc ); + log.debug("Added " + key + " parameter to plot."); + prepareAxis(key, idx); + adjustRenderer( + idx++, + tsc.getSeriesCount(), + linesVisible, + shapesVisible + ); + } + } }