diff flys-artifacts/src/main/java/de/intevation/flys/exports/WaterlevelExporter.java @ 2038:f73036b991e2

Bugfix: repaired broken named values in exports - the last solution had bad side effects. flys-artifacts/trunk@3515 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 21 Dec 2011 15:44:41 +0000
parents 3ebbe497d7f7
children d13be39cfd1d
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/exports/WaterlevelExporter.java	Wed Dec 21 11:56:08 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/WaterlevelExporter.java	Wed Dec 21 15:44:41 2011 +0000
@@ -14,11 +14,8 @@
 
 import au.com.bytecode.opencsv.CSVWriter;
 
-import de.intevation.artifacts.Artifact;
 import de.intevation.artifacts.CallContext;
 
-import de.intevation.artifactdatabase.state.ArtifactAndFacet;
-
 import de.intevation.flys.artifacts.WINFOArtifact;
 import de.intevation.flys.artifacts.model.CalculationResult;
 import de.intevation.flys.artifacts.model.WQCKms;
@@ -100,40 +97,6 @@
 
 
     /**
-     * This method is used to determine, if the name of the WQKms object
-     * <i>data</i> matches a named value. In such cases, the name of <i>data</i>
-     * is reset to this named value.
-     *
-     * @param aaf The wrapper for the Artifact and Facet.
-     * @param data Needs to be a CalculationResult that contains a WQKms[]
-     * objects, otherwise nothing is done.
-     */
-    @Override
-    protected void prepareData(ArtifactAndFacet aaf, Object data) {
-        logger.debug("WaterlevelExporter.prepareData");
-
-        Artifact artifact = aaf.getArtifact();
-
-        if (!(artifact instanceof WINFOArtifact)) {
-            logger.debug("Artifact is no WINFOArtifact. Cannot prepare data.");
-            return;
-        }
-
-        if (data instanceof CalculationResult) {
-            data = ((CalculationResult) data).getData();
-
-            if (data instanceof WQKms[]) {
-                WQKms[] wqkms = (WQKms[]) data;
-
-                for (WQKms item: wqkms) {
-                    prepareNamedValue((WINFOArtifact) artifact, item);
-                }
-            }
-        }
-    }
-
-
-    /**
      * This method is used to prepare the column titles of waterlevel exports.
      * Titles in this export include the Q value. If a Q value matches a named
      * main value (as HQ100 or MNQ) this named main value should be used as
@@ -143,13 +106,17 @@
      * @param winfo A WINFO Artifact.
      * @param wqkms A WQKms object that should be prepared.
      */
-    protected void prepareNamedValue(WINFOArtifact winfo, WQKms wqkms) {
+    protected String getColumnTitle(WINFOArtifact winfo, WQKms wqkms) {
         logger.debug("WaterlevelExporter.prepareNamedValue");
 
         String name = wqkms.getName();
 
         logger.debug("Name of WQKms = '" + name + "'");
 
+        if (name.indexOf("W=") >= 0) {
+            return name;
+        }
+
         Matcher m = NUMBERS_PATTERN.matcher(name);
 
         if (m.matches()) {
@@ -158,19 +125,21 @@
             try {
                 double v = Double.valueOf(raw);
 
-                String nmv = FLYSUtils.getNamedMainValue(winfo.getGauge(), v);
+                String nmv = FLYSUtils.getNamedMainValue(winfo, v);
 
                 if (nmv != null && nmv.length() > 0) {
                     nmv = FLYSUtils.stripNamedMainValue(nmv);
                     logger.debug("Set named main value '" + nmv + "'");
 
-                    wqkms.setName(nmv);
+                    return nmv;
                 }
             }
             catch (NumberFormatException nfe) {
                 // do nothing here
             }
         }
+
+        return name;
     }
 
 
@@ -269,8 +238,23 @@
     }
 
 
+    /**
+     * This method is used to register a new column at <i>writer</i>. The name /
+     * title of the column depends on the Q or W value of <i>wqkms</i>. If a Q
+     * was selected and the Q fits to a named main value, the title is set to
+     * the named main value. Otherwise, the name returned by
+     * <i>WQKms.getName()</i> is set.
+     *
+     * @param writer The WstWriter.
+     * @param wqkms The new WST column.
+     */
     protected void addWSTColumn(WstWriter writer, WQKms wqkms) {
-        writer.addColumn(wqkms.getName());
+        if (master instanceof WINFOArtifact) {
+            writer.addColumn(getColumnTitle((WINFOArtifact) master, wqkms));
+        }
+        else {
+            writer.addColumn(wqkms.getName());
+        }
     }
 
 

http://dive4elements.wald.intevation.org