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

http://dive4elements.wald.intevation.org