diff flys-artifacts/src/main/java/de/intevation/flys/exports/XYChartGenerator.java @ 3811:1558ef7b0e7b

Picked rev3357, rev3359 and rev3360 from trunk. flys-artifacts/tags/pre2.6-2011-12-05@3362 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 07 Dec 2011 13:36:36 +0000
parents 65f9d707caff
children b7b8e625ec82
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/exports/XYChartGenerator.java	Mon Dec 05 10:51:15 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/XYChartGenerator.java	Wed Dec 07 13:36:36 2011 +0000
@@ -78,6 +78,12 @@
 
         /** Merge (or create given range with range so far (if any). */
         private void mergeRanges(Range subRange) {
+            // Avoid merging NaNs, as they take min/max place forever.
+            if (subRange == null ||
+                Double.isNaN(subRange.getLowerBound()) ||
+                Double.isNaN(subRange.getUpperBound())) {
+                return;
+            }
             if (range == null) {
                 range = subRange;
                 return;
@@ -88,11 +94,11 @@
         /** Add a dataset, include its range. */
         public void addDataset(XYSeries dataset) {
             this.datasets.add(new XYSeriesCollection(dataset));
-            includeRange(dataset);
+            includeYRange(dataset);
         }
 
         /** Adjust range to include given dataset. */
-        public void includeRange(XYSeries dataset) {
+        public void includeYRange(XYSeries dataset) {
             mergeRanges(new Range(dataset.getMinY(), dataset.getMaxY()));
         }
 
@@ -258,6 +264,11 @@
                 continue;
             }
             logger.debug("Dataset #" + i + ":" + plot.getDataset(i));
+            XYSeriesCollection series = (XYSeriesCollection) plot.getDataset(i);
+            logger.debug("X-Extend of Dataset: " + series.getSeries(0).getMinX()
+                    + " " + series.getSeries(0).getMaxX());
+            logger.debug("Y-Extend of Dataset: " + series.getSeries(0).getMinY()
+                    + " " + series.getSeries(0).getMaxY());
         }
     }
 
@@ -335,13 +346,16 @@
             datasets.put(index, axisDataset);
         }
 
+        logger.debug("Series-extent x " + series.getMinX() + " : " + series.getMaxX()
+            + " extend y " + series.getMinY() + " : " + series.getMaxY());
+
         if (visible) {
             axisDataset.addDataset(series);
         }
         else {
             // Do this also when not visible to have axis scaled by default such
             // that every data-point could be seen (except for annotations).
-            axisDataset.includeRange(series);
+            axisDataset.includeYRange(series);
         }
 
         combineXRanges(new Range(series.getMinX(), series.getMaxX()), 0);
@@ -355,6 +369,12 @@
      */
     private void combineXRanges(Range range, int index) {
 
+        if (range == null
+            || Double.isNaN(range.getLowerBound())
+            || Double.isNaN(range.getUpperBound())) {
+            return;
+        }
+
         Range old = xRanges.get(index);
 
         if (old != null) {
@@ -491,10 +511,10 @@
     /**
      * Zooms the x axis to the range specified in the attribute document.
      *
-     * @param plot The XYPlot.
-     * @param axis The axis the shoud be modified.
+     * @param plot  The XYPlot.
+     * @param axis  The axis the shoud be modified.
      * @param range The whole range specified by a dataset.
-     * @param x A user defined range (null permitted).
+     * @param x     A user defined range (null permitted).
      *
      * @return true, if a zoom range was specified, otherwise false.
      */

http://dive4elements.wald.intevation.org