[PATCH 2 of 2] Add LTR inversion code to diagram generator
Wald Commits
scm-commit at wald.intevation.org
Fri Sep 20 16:33:49 CEST 2013
# HG changeset patch
# User Andre Heinecke <aheinecke at intevation.de>
# Date 1379687602 -7200
# Branch generator-refactoring
# Node ID 7f600001c8079c18eb9629c84effaa4cdde0a568
# Parent 253d80af5b7f85ffdb15720b0a92acd3d400f6c4
Add LTR inversion code to diagram generator.
This code is used in serveral diagrams and as it modifies a
whole diagram it should be central. (This should also make
maintenance easier). This function can be called by processors
to make sure that their data is plotted with an LTR waterflow.
diff -r 253d80af5b7f -r 7f600001c807 artifacts/src/main/java/org/dive4elements/river/exports/DiagramGenerator.java
--- a/artifacts/src/main/java/org/dive4elements/river/exports/DiagramGenerator.java Fri Sep 20 16:25:43 2013 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/DiagramGenerator.java Fri Sep 20 16:33:22 2013 +0200
@@ -42,6 +42,7 @@
import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
import org.dive4elements.artifactdatabase.state.Facet;
import org.dive4elements.river.artifacts.D4EArtifact;
+import org.dive4elements.river.artifacts.model.WKms;
import org.dive4elements.river.exports.process.Processor;
import org.dive4elements.river.jfree.AxisDataset;
import org.dive4elements.river.jfree.AnnotationHelper;
@@ -52,6 +53,7 @@
import org.dive4elements.river.jfree.StyledAreaSeriesCollection;
import org.dive4elements.river.jfree.StyledXYSeries;
import org.dive4elements.river.themes.ThemeDocument;
+import org.dive4elements.river.utils.DataUtil;
import org.w3c.dom.Element;
@@ -1081,6 +1083,37 @@
return diagramAttributes.getAxisName(index);
}
+ /** Guess if the axis should be inverted to ensure ltr diagram water flow.
+ *
+ * A processor should decide if it is appropiate to activate this
+ * handling in a diagram by calling this function.
+ *
+ * Merke: In Deutschland fliesst Wasser in Diagrammen immer von
+ * links nach rechts!!!
+ */
+ public void handleLTRWaterFlowInversion(WKms wkms)
+ {
+ boolean wsUp = wkms.guessWaterIncreasing();
+ boolean kmUp = DataUtil.guessWaterIncreasing(wkms.allKms());
+ int size = wkms.size();
+ boolean inv = ((wsUp && kmUp) || (!wsUp && !kmUp)) && size > 1;
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("handleLTRWaterFlowInversion: (Wkms)Values : " + size);
+ if (size > 0) {
+ logger.debug("Start km: " + wkms.getKm(0));
+ logger.debug("End km: " + wkms.getKm(size-1));
+ }
+ logger.debug("wsUp: " + wsUp);
+ logger.debug("kmUp: " + kmUp);
+ if (size == 1) {
+ logger.debug("Not inverting because we have just one km");
+ }
+ logger.debug("inv: " + inv);
+ }
+ setInverted(inv);
+ }
+
/** Add the acutal data to the diagram according to the processors.
* For every outable facets, this function is
* called and handles the data accordingly. */
More information about the Dive4elements-commits
mailing list