Mercurial > dive4elements > gnv-client
diff gnv-artifacts/src/main/java/de/intevation/gnv/chart/VerticalProfileChart.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 | 22a6493e8460 |
children | e964a3d8f7bc |
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/chart/VerticalProfileChart.java Mon Dec 07 10:33:31 2009 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/VerticalProfileChart.java Mon Dec 07 17:03:24 2009 +0000 @@ -1,6 +1,7 @@ package de.intevation.gnv.chart; import java.util.Collection; +import java.util.HashMap; import java.util.Iterator; import java.util.Locale; @@ -16,6 +17,7 @@ import org.jfree.data.xy.XYSeriesCollection; import de.intevation.gnv.geobackend.base.Result; +import de.intevation.gnv.transition.describedata.KeyValueDescibeData; /** @@ -50,6 +52,7 @@ this.PLOT_ORIENTATION = PlotOrientation.HORIZONTAL; this.linesVisible = linesVisible; this.shapesVisible = shapesVisible; + this.datasets = new HashMap(); } @@ -78,9 +81,7 @@ log.debug("prepare data/plot for next dataset"); if(series != null) { - addSeries(series, idx); - prepareAxis(((String)series.getKey()), idx); - adjustRenderer(idx++, linesVisible, shapesVisible); + addSeries(series, seriesName, idx); } // prepare variables for next plot @@ -101,12 +102,9 @@ addValue(row, series); } - addSeries(series, idx); + addSeries(series, seriesName, idx); - if (series != null) { - prepareAxis(((String)series.getKey()), idx); - adjustRenderer(idx++, linesVisible, shapesVisible); - } + addDatasets(); } @@ -119,17 +117,52 @@ } - protected void addSeries(Series series, int idx) { - log.debug("add series to verticalprofile chart"); - XYPlot plot = chart.getXYPlot(); + protected void addSeries(Series series, String label, int idx) { + log.debug("add series (" + label + ")to chart"); if (series == null) { log.warn("no data to add"); return; } - XYSeriesCollection xysc = new XYSeriesCollection((XYSeries)series); - plot.setDataset(idx, xysc); + XYSeriesCollection xysc = null; + String parameter = findParameter(label); + + if (datasets.containsKey(parameter)) + xysc = (XYSeriesCollection) datasets.get(parameter); + else + xysc = new XYSeriesCollection(); + + xysc.addSeries((XYSeries) series); + datasets.put(parameter, xysc); + } + + + protected void addDatasets() { + Iterator iter = parameters.iterator(); + XYPlot plot = chart.getXYPlot(); + int idx = 0; + + XYSeriesCollection xysc = null; + KeyValueDescibeData data = null; + String key = null; + while (iter.hasNext()) { + data = (KeyValueDescibeData) iter.next(); + key = data.getValue(); + + if (datasets.containsKey(key)) { + xysc = (XYSeriesCollection)datasets.get(key); + plot.setDataset(idx, xysc ); + log.debug("Added " + key + " parameter to plot."); + prepareAxis(key, idx); + adjustRenderer( + idx++, + xysc.getSeriesCount(), + linesVisible, + shapesVisible + ); + } + } }