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
+                );
+            }
+        }
     }
 
 

http://dive4elements.wald.intevation.org