diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/charts/CrossSectionApp.java @ 1881:0e9c0b49b4ef

CrossSectionApp: draw ground with StableXYDifferenceRenderer flys-artifacts/trunk@3240 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Sat, 12 Nov 2011 12:05:37 +0000
parents 94871b7ce9e9
children eb671699fbc2
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/charts/CrossSectionApp.java	Fri Nov 11 12:07:06 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/charts/CrossSectionApp.java	Sat Nov 12 12:05:37 2011 +0000
@@ -10,6 +10,8 @@
 
 import de.intevation.flys.utils.Pair;
 
+import de.intevation.flys.jfree.StableXYDifferenceRenderer;
+
 import java.awt.BorderLayout;
 import java.awt.Dimension;
 import java.awt.FlowLayout;
@@ -60,6 +62,7 @@
 import org.jfree.chart.plot.PlotOrientation;
 import org.jfree.chart.plot.XYPlot;
 
+import org.jfree.data.xy.DefaultXYDataset;
 import org.jfree.data.xy.XYSeries;
 import org.jfree.data.xy.XYDataset;
 import org.jfree.data.xy.XYSeriesCollection;
@@ -402,11 +405,12 @@
         }
     }
 
-    public XYDataset generateWaterLevels(
-        List<Point2D>      points
+    public void generateWaterLevels(
+        List<Point2D>                         points,
+        List<Pair<XYDataset, XYItemRenderer>> datasets
     ) {
         if (points == null || points.isEmpty() || lastWaterLevel == null) {
-            return null;
+            return;
         }
 
         double [][] data = Lines.createWaterLines(points, lastWaterLevel);
@@ -419,15 +423,17 @@
             series.add(x[i], y[i], false);
         }
 
-        return new XYSeriesCollection(series);
+        datasets.add(new Pair<XYDataset, XYItemRenderer>(
+            new XYSeriesCollection(series), null));
     }
 
-    public XYDataset generateProfile(
-        List<Point2D>      points,
-        String             legend
+    public void generateProfile(
+        List<Point2D>                         points,
+        String                                legend,
+        List<Pair<XYDataset, XYItemRenderer>> datasets
     ) {
         if (points == null || points.isEmpty()) {
-            return null;
+            return;
         }
 
         double [][] values = CrossSectionLine.fetchCrossSectionProfile(points);
@@ -440,17 +446,32 @@
             series.add(x[i], y[i], false);
         }
 
-        return new XYSeriesCollection(series);
+        datasets.add(new Pair<XYDataset, XYItemRenderer>(
+            new XYSeriesCollection(series), null));;
+    }
+
+    public void generateGround(
+        List<Point2D>                         points,
+        String                                legend,
+        List<Pair<XYDataset, XYItemRenderer>> datasets
+    ) {
+        if (points == null || points.isEmpty()) {
+            return;
+        }
+
+        double [][] values = CrossSectionLine.fetchCrossSectionProfile(points);
+
+        DefaultXYDataset dataset = new DefaultXYDataset();
+        dataset.addSeries(legend, values);
+
+        StableXYDifferenceRenderer renderer =
+            new StableXYDifferenceRenderer();
+
+        datasets.add(new Pair<XYDataset, XYItemRenderer>(
+            dataset, renderer));
     }
 
     public List<Pair<XYDataset, XYItemRenderer>> generateDatasets() {
-        List<Pair<XYDataset, XYItemRenderer>> pairs =
-            new ArrayList<Pair<XYDataset, XYItemRenderer>>();
-
-        return pairs;
-    }
-
-    public List<Pair<XYDataset, XYItemRenderer>> generateDataset() {
 
         List<Pair<XYDataset, XYItemRenderer>> datasets =
             new ArrayList<Pair<XYDataset, XYItemRenderer>>();
@@ -460,41 +481,46 @@
 
         for (int i = 0; i < drawCrossSection.length; ++i) {
             List<Point2D> points = null;
+            CrossSection cs = crossSections.get(i);
 
             if (drawCrossSection[i]) {
-                CrossSection cs = crossSections.get(i);
                 for (Pair<CrossSection, CrossSectionLine> csl: csli.lines) {
                     if (csl.getA() == cs) {
                         points = csl.getB().fetchCrossSectionLinesPoints();
 
-                        XYDataset dataset = generateProfile(
-                            points, cs.getDescription());
-                        if (dataset != null) {
-                            datasets.add(new Pair<XYDataset, XYItemRenderer>(
-                                dataset, null));
-                        }
+                        generateProfile(
+                            points, cs.getDescription(), datasets);
                         break;
                     }
                 }
             }
 
             if (drawWaterLevel[i]) {
-                CrossSection cs = crossSections.get(i);
                 for (Pair<CrossSection, CrossSectionLine> csl: csli.lines) {
                     if (csl.getA() == cs) {
                         if (points != null) {
                             points = csl.getB().fetchCrossSectionLinesPoints();
                         }
-                        XYDataset dataset = generateWaterLevels(points);
-                        if (dataset != null) {
-                            datasets.add(new Pair<XYDataset, XYItemRenderer>(
-                                dataset, null));
-                        }
+                        generateWaterLevels(points, datasets);
                         break;
                     }
                 }
             }
 
+            if (drawGround[i]) {
+                for (Pair<CrossSection, CrossSectionLine> csl: csli.lines) {
+                    if (csl.getA() == cs) {
+                        if (points != null) {
+                            points = csl.getB().fetchCrossSectionLinesPoints();
+                        }
+                        generateGround(
+                            points,
+                            cs.getDescription() + "/Boden",
+                            datasets);
+                        break;
+                    }
+                }
+            }
         }
 
         return datasets;
@@ -527,7 +553,7 @@
             false);
 
         List<Pair<XYDataset, XYItemRenderer>> datasets =
-            generateDataset();
+            generateDatasets();
 
         XYPlot plot = chart.getXYPlot();
 

http://dive4elements.wald.intevation.org