diff flys-artifacts/src/main/java/de/intevation/flys/exports/LongitudinalSectionGenerator.java @ 2104:bb0dede9294f

Implementation towards areas at other than first axis (flys/issue441). flys-artifacts/trunk@3661 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Thu, 12 Jan 2012 12:29:56 +0000
parents a026d005accd
children ce9b15673f3f
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/exports/LongitudinalSectionGenerator.java	Thu Jan 12 12:22:40 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/LongitudinalSectionGenerator.java	Thu Jan 12 12:29:56 2012 +0000
@@ -17,6 +17,7 @@
 
 import de.intevation.flys.artifacts.FLYSArtifact;
 
+import de.intevation.flys.artifacts.model.AreaFacet;
 import de.intevation.flys.artifacts.model.FacetTypes;
 import de.intevation.flys.artifacts.model.WKms;
 import de.intevation.flys.artifacts.model.WQKms;
@@ -282,7 +283,6 @@
      * @param xaxis The domain axis.
      */
     protected void invertXAxis(ValueAxis xaxis) {
-
         if (inverted) {
             logger.debug("X-Axis.setInverted(true)");
             xaxis.setInverted(true);
@@ -330,6 +330,12 @@
                 || name.equals(STATIC_WQKMS)) {
             doWOut((WKms) artifactAndFacet.getData(context), facet, attr, visible);
         }
+        else if (name.equals(STATIC_WQKMS_W)) {
+            doWOut((WQKms) artifactAndFacet.getData(context), facet, attr, visible);
+        }
+        else if (name.equals(STATIC_WQKMS_Q)) {
+            doQOut((WQKms) artifactAndFacet.getData(context), facet, attr, visible);
+        }
         else if (name.equals(W_DIFFERENCES)) {
             doWDifferencesOut(
                 (WKms) artifactAndFacet.getData(context),
@@ -493,6 +499,20 @@
     }
 
 
+    /** Look up the axis identifier for a given facet type. */
+    public int axisIdxForFacet(String facetName) {
+        if (FacetTypes.IS.W(facetName)) {
+            return YAXIS.W.idx;
+        }
+        else if (FacetTypes.IS.Q(facetName)) {
+            return YAXIS.Q.idx;
+        }
+        else {
+            logger.warn("Could not find axis for facet " + facetName);
+            return YAXIS.W.idx;
+        }
+    }
+
     /**
      * Do Area out.
      */
@@ -505,40 +525,49 @@
         logger.debug("LongitudinalSectionGenerator.doArea");
         StyledAreaSeriesCollection area = new StyledAreaSeriesCollection(theme);
 
-        // TODO make this more stable.
-        Object[] doubles = (Object[]) o;
+        AreaFacet.Data data = (AreaFacet.Data) o;
+
         XYSeries up   = null;
         XYSeries down = null;
 
-        if (doubles[1] != null) {
+        if (data.getUpperData() != null) {
             up = new StyledXYSeries(seriesName, false, theme);
-            if (doubles[1] instanceof WKms) {
-                StyledSeriesBuilder.addPoints(up, (WKms) doubles[1]);
+            if (data.getUpperData() instanceof WQKms) {
+                if (FacetTypes.IS.Q(data.getRootFacetName())) {
+                    StyledSeriesBuilder.addPointsKmQ(up, (WQKms) data.getUpperData());
+                }
+                else {
+                    StyledSeriesBuilder.addPoints(up, (WKms) data.getUpperData());
+                }
             }
-            else if (doubles[1] instanceof double[][]) {
-                StyledSeriesBuilder.addPoints(up, (double [][]) doubles[1]);
+            else if (data.getUpperData() instanceof double[][]) {
+                StyledSeriesBuilder.addPoints(up, (double [][]) data.getUpperData());
             }
             else {
                 logger.error("Do not know how to deal with (up) area info from: "
-                    + doubles[1]);
+                    + data.getUpperData());
             }
         }
 
-        if (doubles[0] != null) {
+        if (data.getLowerData() != null) {
             // TODO: Sort this out: when the two series have the same name,
             // the renderer (or anything in between) will not work correctly.
             down = new StyledXYSeries(seriesName + " ", false, theme);
-            if (doubles[0] instanceof WQKms) {
-                StyledSeriesBuilder.addPoints(down, (WKms) doubles[0]);
+            if (data.getLowerData() instanceof WQKms) {
+                if (FacetTypes.IS.Q(data.getRootFacetName())) {
+                    StyledSeriesBuilder.addPointsKmQ(down, (WQKms) data.getLowerData());
+                }
+                else {
+                    StyledSeriesBuilder.addPoints(down, (WQKms) data.getLowerData());
+                }
             }
-            else if (doubles[0] instanceof double[][]) {
-                StyledSeriesBuilder.addPoints(down, (double[][]) doubles[0]);
+            else if (data.getLowerData() instanceof double[][]) {
+                StyledSeriesBuilder.addPoints(down, (double[][]) data.getLowerData());
             }
             else {
                 logger.error("Do not know how to deal with (down) area info from: "
-                    + doubles[0]);
+                    + data.getLowerData());
             }
-
         }
 
         if (up == null && down != null) {
@@ -551,11 +580,17 @@
             area.addSeries(up);
         }
         else if (up != null && down != null) {
-            area.setMode(StyledAreaSeriesCollection.FILL_MODE.BETWEEN);
+            if (data.doPaintBetween()) {
+                area.setMode(StyledAreaSeriesCollection.FILL_MODE.BETWEEN);
+            }
+            else {
+                area.setMode(StyledAreaSeriesCollection.FILL_MODE.ABOVE);
+            }
             area.addSeries(up);
             area.addSeries(down);
         }
-        addAreaSeries(area, 0, visible);
+        // Add area to the respective axis.
+        addAreaSeries(area, axisIdxForFacet(data.getRootFacetName()), visible);
     }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org