Mercurial > dive4elements > river
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 :