changeset 855:e26935963871

Adjusted chart titles of different horizontalprofile charts. gnv-artifacts/trunk@973 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 23 Apr 2010 12:11:18 +0000
parents bb2175726c8a
children c9996913ff4b
files gnv-artifacts/ChangeLog gnv-artifacts/doc/conf/products/horizontalprofile/conf_mesh.xml gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontal/HorizontalProfileMeshOutputState.java gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontal/HorizontalProfileOutputState.java
diffstat 4 files changed, 111 insertions(+), 71 deletions(-) [+]
line wrap: on
line diff
--- a/gnv-artifacts/ChangeLog	Fri Apr 23 10:13:23 2010 +0000
+++ b/gnv-artifacts/ChangeLog	Fri Apr 23 12:11:18 2010 +0000
@@ -1,3 +1,15 @@
+2010-04-23  Ingo Weinzierl <ingo.weinzierl@intevation.de>
+
+	  Issue138
+
+	* doc/conf/products/horizontalprofile/conf_mesh.xml: Splitted the
+	  outputstates of horizontalprofiles into meshes and non-meshes to handle
+	  the chart subtitle creation.
+
+	* src/main/java/de/intevation/gnv/state/profile/horizontal/HorizontalProfileMeshOutputState.java,
+	  src/main/java/de/intevation/gnv/state/profile/horizontal/HorizontalProfileOutputState.java:
+	  Outputstates for horizontal profiles.
+
 2010-04-23  Tim Englich  <tim.englich@intevation.de>
 
 	* src/main/java/de/intevation/gnv/state/layer/LayerOutputState.java (getWMS): 
--- a/gnv-artifacts/doc/conf/products/horizontalprofile/conf_mesh.xml	Fri Apr 23 10:13:23 2010 +0000
+++ b/gnv-artifacts/doc/conf/products/horizontalprofile/conf_mesh.xml	Fri Apr 23 12:11:18 2010 +0000
@@ -274,7 +274,8 @@
            <to state="horizontalprofile_mesh_calculate_results"/>
        </transition>
        
-       <state id="horizontalprofile_mesh_calculate_results" description="horizontalprofile_mesh_calculate_results" state="de.intevation.gnv.state.profile.horizontal.HorizontalProfileOutputState">
+       <state id="horizontalprofile_mesh_calculate_results"
+       description="horizontalprofile_mesh_calculate_results" state="de.intevation.gnv.state.profile.horizontal.HorizontalProfileMeshOutputState">
            <queryID>horizontalprofile_mesh_chart_data</queryID>
            <queryID-odv>horizontalprofile_mesh_odv_data</queryID-odv>
            <inputvalues>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontal/HorizontalProfileMeshOutputState.java	Fri Apr 23 12:11:18 2010 +0000
@@ -0,0 +1,55 @@
+package de.intevation.gnv.state.profile.horizontal;
+
+import java.util.Locale;
+
+import org.apache.log4j.Logger;
+
+public class HorizontalProfileMeshOutputState
+extends      HorizontalProfileOutputState
+{
+    private static Logger logger =
+        Logger.getLogger(HorizontalProfileMeshOutputState.class);
+
+
+    public HorizontalProfileMeshOutputState() {
+        super();
+    }
+
+
+    /**
+     * Creates and returns the subtitle of a chart.
+     *
+     * @param locale The Locale used to adjust the language of the subtitle.
+     * @param uuid The UUID of the current artifact.
+     * @return the timeperiod of this chart and the start coordinate.
+     */
+    @Override
+    protected String createChartSubtitle(Locale locale, String uuid) {
+        logger.debug("create chart subtitle.");
+
+        StringBuilder sb = new StringBuilder();
+        String time      = getData(locale, "dateid");
+        if (time != null) {
+            sb.append(time);
+        }
+
+        String coordinate = getData(locale, "mesh_point");
+        if (coordinate != null) {
+            if (time != null)
+                sb.append("\n");
+
+            sb.append(coordinate);
+        }
+
+        String depth = getData(locale, "depthid");
+        if (depth != null) {
+            if (coordinate != null)
+                sb.append("\n");
+
+            sb.append(depth);
+        }
+
+        return sb.toString();
+    }
+}
+// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontal/HorizontalProfileOutputState.java	Fri Apr 23 10:13:23 2010 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontal/HorizontalProfileOutputState.java	Fri Apr 23 12:11:18 2010 +0000
@@ -14,6 +14,7 @@
 import org.jfree.chart.ChartTheme;
 
 import de.intevation.artifacts.CallContext;
+import de.intevation.gnv.artifacts.ressource.RessourceFactory;
 import de.intevation.gnv.chart.Chart;
 import de.intevation.gnv.chart.ChartLabels;
 import de.intevation.gnv.chart.HorizontalProfileChart;
@@ -23,13 +24,12 @@
 import de.intevation.gnv.exports.Export.Profile;
 import de.intevation.gnv.geobackend.base.Result;
 import de.intevation.gnv.state.InputData;
+import de.intevation.gnv.state.State;
 import de.intevation.gnv.state.describedata.KeyValueDescibeData;
 import de.intevation.gnv.state.exception.StateException;
 import de.intevation.gnv.state.timeseries.TimeSeriesOutputState;
 import de.intevation.gnv.statistics.HorizontalProfileStatistics;
 import de.intevation.gnv.statistics.Statistics;
-import de.intevation.gnv.utils.InputValidator;
-import de.intevation.gnv.utils.WKTUtils;
 
 /**
  * This <code>OutputState</code> is used for 'Horizontalprofile' products.
@@ -254,86 +254,58 @@
     }
 
 
-    /**
-     * Creates and returns the subtitle of a chart.
-     *
-     * @param locale The Locale used to adjust the language of the subtitle.
-     * @param uuid The UUID of the current artifact.
-     * @return the timeperiod of this chart and the start coordinate.
-     */
     @Override
     protected String createChartSubtitle(Locale locale, String uuid) {
-        log.debug("create chart subtitle.");
-        String subtitle = createTimePeriod(locale, uuid);
+        log.debug("Create subtitle for horizontalprofile chart on meshes.");
 
-        // ODV results contain meta information about cruise, station and so on
-        Collection results = getODVResult(uuid);
-        if (results != null) {
-            Iterator iter   = results.iterator();
-            Result   result = iter.hasNext() ? (Result) iter.next() : null;
-
-            subtitle += subtitle.length() != 0 ? "\n" : "";
-            subtitle += createMetaChartSubtitle(locale, result);
+        StringBuilder sb  = new StringBuilder();
+        String ship       = getData(locale, "vehicleid");
+        if (ship != null) {
+            sb.append(ship);
         }
 
-        return subtitle;
+        String cruise = getData(locale, "cruiseid");
+        if (cruise != null) {
+            if (ship != null)
+                sb.append("\n");
+
+            sb.append(cruise);
+        }
+
+        String track = getData(locale, "trackid");
+        if (track != null) {
+            if (cruise != null)
+                sb.append("\n");
+
+            sb.append(track);
+        }
+
+        return sb.toString();
     }
 
 
-    /**
-     * Create meta information used in subtitles.
-     *
-     * @param locale The Locale used to adjust the language of the subtitle.
-     * @param result A data object.
-     * @return the start coordinate as human readable string.
-     */
-    protected String createMetaChartSubtitle(Locale locale, Result result) {
-        log.debug("Fetch meta information and put it into subtitle.");
-        if (result == null)
-            return "";
-
-        StringBuilder meta      = new StringBuilder();
-
-        for (int i = 0; i < CHART_TITLE_META.length; i++) {
-            String qry = CHART_TITLE_META[i];
+    protected String getData(Locale locale, String data) {
+        InputData input = null;
 
-            if (qry.equals("SHAPE")) {
-                try {
-                    InputData data  = getInputDataByName("mesh_coordinate");
-                    if (data == null) {
-                        continue;
-                    }
-                    String wktPoint = data.getValue();
-                    meta.append(getMessage(locale,"coordinate","coordinate"));
-                    meta.append(": ");
-                    meta.append(WKTUtils.toText(
-                        locale,
-                        InputValidator.getPointValue(wktPoint)));
-                }
-                catch (Exception e) {
-                    log.error(e, e);
-                }
-            }
-            else {
-                log.debug(
-                    "Add " + qry + " to meta information of subtitle: "
-                    + result.getString(qry)
-                );
-                meta.append(getMessage(
-                    locale,
-                    CHART_TITLE_META_RESSOURCES[i],
-                    CHART_TITLE_META_RESSOURCES[i]
-                ));
-                meta.append(": ");
-                meta.append(result.getString(qry));
-            }
+        State parent = this;
+        do {
+            input = inputData.get(data);
 
-            if (i != CHART_TITLE_META.length-1)
-                meta.append("\n");
+            if (input != null)
+                break;
+        }
+        while ((parent = parent.getParent()) != null);
+
+        if (input == null) {
+            log.warn("No data found for: " + data);
+           return null;
         }
 
-        log.debug("Meta title for chart: " + meta.toString());
-        return meta.toString();
+        String value = input.getDescription(input.getValue());
+        String title = RessourceFactory.getInstance().getRessource(
+            locale, data, data);
+
+        return (title + ": " + value);
     }
 
 

http://dive4elements.wald.intevation.org