changeset 1953:590d9bc88ff5

Refactored LongitudinalSection- and WDiff-Generators, fixed minor issues. flys-artifacts/trunk@3349 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Mon, 05 Dec 2011 09:24:12 +0000
parents 8dafae465c91
children 2adfedaf4dd2
files flys-artifacts/ChangeLog flys-artifacts/src/main/java/de/intevation/flys/exports/LongitudinalSectionGenerator.java flys-artifacts/src/main/java/de/intevation/flys/exports/WDifferencesCurveGenerator.java
diffstat 3 files changed, 31 insertions(+), 184 deletions(-) [+]
line wrap: on
line diff
--- a/flys-artifacts/ChangeLog	Mon Dec 05 08:55:30 2011 +0000
+++ b/flys-artifacts/ChangeLog	Mon Dec 05 09:24:12 2011 +0000
@@ -1,3 +1,13 @@
+2011-12-05	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
+
+	Refactored Longitudinal*/WDiff-*Generator hierarchy and change axis
+	ordering, resolved label-i18n TODO.
+
+	* src/main/java/de/intevation/flys/exports/LongitudinalSectionGenerator.java,
+	  src/main/java/de/intevation/flys/exports/WDifferencesCurveGenerator.java:
+	  Merge, avoid duplicate code, fix axis ordering in w-diff diagram,
+	  label in ls-diagramm.
+
 2011-12-05  Ingo Weinzierl <ingo@intevation.de>
 
 	* src/main/resources/messages.properties,
--- a/flys-artifacts/src/main/java/de/intevation/flys/exports/LongitudinalSectionGenerator.java	Mon Dec 05 08:55:30 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/LongitudinalSectionGenerator.java	Mon Dec 05 09:24:12 2011 +0000
@@ -13,6 +13,7 @@
 
 import org.w3c.dom.Document;
 
+import de.intevation.artifactdatabase.state.ArtifactAndFacet;
 import de.intevation.artifactdatabase.state.Facet;
 
 import de.intevation.flys.artifacts.FLYSArtifact;
@@ -23,8 +24,6 @@
 
 import de.intevation.flys.jfree.FLYSAnnotation;
 
-import de.intevation.artifactdatabase.state.ArtifactAndFacet;
-
 import de.intevation.flys.utils.FLYSUtils;
 import de.intevation.flys.utils.DataUtil;
 
@@ -38,7 +37,7 @@
 extends      XYChartGenerator
 implements   FacetTypes
 {
-    public static enum YAXIS {
+    public enum YAXIS {
         W(0),
         Q(1),
         D(2);
@@ -84,6 +83,11 @@
     public static final String I18N_YAXIS_LABEL_DEFAULT  = "W [NN + m]";
     public static final String I18N_2YAXIS_LABEL_DEFAULT = "Q [m\u00b3/s]";
 
+    public final static String I18N_WDIFF_YAXIS_LABEL =
+        "chart.w_differences.yaxis.label";
+
+    public final static String I18N_WDIFF_YAXIS_LABEL_DEFAULT = "m";
+
     /** Whether or not the plot is inverted (left-right). */
     protected boolean inverted;
 
@@ -154,10 +158,15 @@
     }
 
 
+    @Override
+    protected String getYAxisLabel() {
+        return getWAxisLabel();
+    }
+
     /**
      * Get internationalized label for the y axis.
      */
-    protected String getYAxisLabel() {
+    protected String getWAxisLabel() {
         FLYSArtifact flys = (FLYSArtifact) master;
 
         String unit = FLYSUtils.getRiver(flys).getWstUnit().getName();
@@ -178,14 +187,13 @@
         Font labelFont = new Font("Tahoma", Font.BOLD, 14);
         String label = "default";
         if (index == YAXIS.W.idx) {
-            label = getYAxisLabel();
+            label = getWAxisLabel();
         }
         else if (index == YAXIS.Q.idx) {
-            label = msg(get2YAxisLabelKey(), get2YAxisDefaultLabel());
+            label = msg(getQAxisLabelKey(), getQAxisDefaultLabel());
         }
         else if (index == YAXIS.D.idx) {
-            // TODO: diff label
-            label = "TODO: diff";
+            label = msg(I18N_WDIFF_YAXIS_LABEL, I18N_WDIFF_YAXIS_LABEL_DEFAULT);
         }
         NumberAxis axis = new NumberAxis(label);
         // "Q" Axis shall include 0.
@@ -203,7 +211,7 @@
      * Get default value for the second Y-Axis' label (if no translation was
      * found).
      */
-    protected String get2YAxisDefaultLabel() {
+    protected String getQAxisDefaultLabel() {
         return I18N_2YAXIS_LABEL_DEFAULT;
     }
 
@@ -211,7 +219,7 @@
     /**
      * Get key for internationalization of the second Y-Axis' label.
      */
-    protected String get2YAxisLabelKey() {
+    protected String getQAxisLabelKey() {
         return I18N_2YAXIS_LABEL;
     }
 
--- a/flys-artifacts/src/main/java/de/intevation/flys/exports/WDifferencesCurveGenerator.java	Mon Dec 05 08:55:30 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/WDifferencesCurveGenerator.java	Mon Dec 05 09:24:12 2011 +0000
@@ -6,21 +6,10 @@
 
 import org.jfree.chart.JFreeChart;
 import org.jfree.chart.plot.XYPlot;
-import org.jfree.data.xy.XYSeries;
 
-import org.w3c.dom.Document;
-
-import de.intevation.flys.artifacts.FLYSArtifact;
 import de.intevation.flys.artifacts.model.FacetTypes;
 import de.intevation.flys.artifacts.model.WKms;
 
-import de.intevation.artifactdatabase.state.ArtifactAndFacet;
-
-import de.intevation.flys.artifacts.model.WQKms;
-import de.intevation.flys.utils.DataUtil;
-import de.intevation.flys.utils.FLYSUtils;
-
-import de.intevation.flys.jfree.FLYSAnnotation;
 
 /**
  * An OutGenerator that generates w differences curves.
@@ -29,9 +18,9 @@
 extends      LongitudinalSectionGenerator
 implements   FacetTypes
 {
-    public static enum YAXIS {
-        D(0),
-        W(1),
+    public enum YAXIS {
+        W(0),
+        D(1),
         Q(2);
         protected int idx;
         private YAXIS(int c) {
@@ -49,21 +38,9 @@
     /** Default for internationalized title (when no translation found). */
     public final static String I18N_WDIFF_TITLE_DEFAULT = "Differences";
 
-    /** Key for internationalized title of WDiff charts. */
-    public final static String I18N_WDIFF_2YAXIS_LABEL =
-        "chart.w_differences.yaxis.second.label";
-
-    /** Default for label for second Y-Axis when no translation found. */
-    public final static String I18N_WDIFF_2YAXIS_LABEL_DEFAULT = "W [NN + m]";
-
     public final static String I18N_WDIFF_SUBTITLE =
         "chart.w_differences.subtitle";
 
-    public final static String I18N_WDIFF_YAXIS_LABEL =
-        "chart.w_differences.yaxis.label";
-
-    public final static String I18N_WDIFF_YAXIS_LABEL_DEFAULT = "m";
-
 
     /**
      * Get internationalized title for chart.
@@ -76,17 +53,6 @@
 
 
     /**
-     * Get default value for the second Y-Axis' label (if no translation was
-     * found).
-     * @return default value for second y-axis label.
-     */
-    @Override
-    protected String get2YAxisDefaultLabel() {
-        return I18N_WDIFF_2YAXIS_LABEL_DEFAULT;
-    }
-
-
-    /**
      * Gets key to look up internationalized String for the charts subtitle.
      * @return key to look up translated subtitle.
      */
@@ -97,108 +63,6 @@
 
 
     /**
-     * Get key for internationalization of the second Y-Axis' label.
-     * @return internationalized second y-axis.
-     */
-    @Override
-    protected String get2YAxisLabelKey() {
-        return I18N_WDIFF_2YAXIS_LABEL;
-    }
-
-
-    /**
-     * Get internationalized label for the y axis.
-     * @return internationalized label for y axos.
-     */
-    @Override
-    protected String getYAxisLabel() {
-        FLYSArtifact flys = (FLYSArtifact) master;
-
-        String unit = FLYSUtils.getRiver(flys).getWstUnit().getName();
-
-        return msg(
-            I18N_WDIFF_YAXIS_LABEL,
-            I18N_WDIFF_YAXIS_LABEL_DEFAULT,
-            new Object[] { unit });
-    }
-
-
-    /**
-     * Add (themed) data for chart generation.
-     */
-    @Override
-    public void doOut(
-        ArtifactAndFacet artifactAndFacet,
-        Document         attr,
-        boolean          visible
-    ) {
-        String name = artifactAndFacet.getFacetName();
-
-        logger.debug("WDifferencesCurveGenerator.doOut: " + name);
-
-        if (name == null) {
-            logger.error("No facet name for doOut(). No output generated!");
-            return;
-        }
-
-        if (name.equals(W_DIFFERENCES)) {
-            doWDifferencesOut(
-                (WKms) artifactAndFacet.getData(context),
-                artifactAndFacet.getFacetDescription(),
-                attr,
-                visible);
-        }
-        else if (name.equals(LONGITUDINAL_W)) {
-            doWOut((WQKms) artifactAndFacet.getData(context),
-                artifactAndFacet.getFacetDescription(), attr, visible);
-        }
-        else if (name.equals(STATIC_WKMS) || name.equals(HEIGHTMARKS_POINTS)) {
-            doWOut((WKms) artifactAndFacet.getData(context),
-                artifactAndFacet.getFacetDescription(), attr, visible);
-        }
-        else if (name.equals(LONGITUDINAL_ANNOTATION)) {
-            doAnnotations((FLYSAnnotation) artifactAndFacet.getData(context),
-                 artifactAndFacet.getFacet(), attr, visible);
-        }
-        else {
-            logger.warn("Unknown facet name: " + name);
-            return;
-        }
-    }
-
-
-    /**
-     * Add the waterlevel-curves (the "absolutes" from which
-     * differences were calculated).
-     *
-     * @param wqkms The wqkms to add to the diagram.
-     * @param theme The theme that contains styling information.
-     */
-    protected void doWOut(
-        WKms     wkms,
-        String   description,
-        Document theme,
-        boolean  visible
-    ) {
-        logger.debug("WDifferencesCurveGenerator.doWOut");
-
-        XYSeries series = new StyledXYSeries(description, theme);
-
-        StyledSeriesBuilder.addPoints(series, wkms);
-
-        // Note: the only difference in the super-implementation
-        //  (in LongitudinalSectionGenerator) is here (adds with
-        //  addFirstAxisSeries() .
-        addAxisSeries(series, YAXIS.W.idx, visible);
-
-        if (wkms instanceof WQKms) {
-            if (needInvertAxis((WQKms) wkms)) {
-                setInverted(true);
-            }
-        }
-    }
-
-    /**
      * Add (internationalized) subtitle to chart.
      * Overridden to avoid trying to access the range of masterartifact.
      * @see getChartSubtitleKey
@@ -218,41 +82,6 @@
 
 
     /**
-     * Add items to dataseries which describes the differences.
-     */
-    protected void doWDifferencesOut(
-        WKms     wkms,
-        String   description,
-        Document theme,
-        boolean  visible
-    ) {
-        logger.debug("WDifferencesCurveGenerator.doWDifferencesOut");
-        if (wkms == null) {
-            logger.warn("No data to add to WDifferencesChart.");
-            return;
-         }
-
-        XYSeries series = new StyledXYSeries(description, theme);
-
-        if (logger.isDebugEnabled()) {
-            if (wkms.size() > 0) {
-                logger.debug("Generate series: " + series.getKey());
-                logger.debug("Start km: " + wkms.getKm(0));
-                logger.debug("End   km: " + wkms.getKm(wkms.size()-1));
-                logger.debug("Values  : " + wkms.size());
-            }
-        }
-
-        StyledSeriesBuilder.addPoints(series, wkms);
-
-        addAxisSeries(series, YAXIS.D.idx, visible);
-        if (DataUtil.guessWaterIncreasing(wkms.allWs())) {
-            setInverted(true);
-        }
-    }
-
-
-    /**
      * 
      */
     @Override

http://dive4elements.wald.intevation.org