diff gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/verticalcrosssection/VerticalCrossSectionOutputState.java @ 837:43f3c0cd60f2

First implementation of an odv export of a 'Profilschnitt' (issue217). gnv-artifacts/trunk@944 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 19 Apr 2010 10:55:25 +0000
parents 3ab5754e72e3
children b5f4b6073cde
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/verticalcrosssection/VerticalCrossSectionOutputState.java	Sun Apr 18 09:17:25 2010 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/verticalcrosssection/VerticalCrossSectionOutputState.java	Mon Apr 19 10:55:25 2010 +0000
@@ -1,5 +1,7 @@
 package de.intevation.gnv.state.profile.verticalcrosssection;
 
+import au.com.bytecode.opencsv.CSVWriter;
+
 import java.awt.Color;
 import java.awt.Dimension;
 import java.awt.Paint;
@@ -30,6 +32,9 @@
 import de.intevation.gnv.chart.Chart;
 import de.intevation.gnv.chart.ChartLabels;
 import de.intevation.gnv.chart.VerticalCrossSectionChart;
+import de.intevation.gnv.exports.DefaultProfile;
+import de.intevation.gnv.exports.Export;
+import de.intevation.gnv.exports.VerticalCrossODVExport;
 import de.intevation.gnv.geobackend.base.Result;
 import de.intevation.gnv.geobackend.base.ResultDescriptor;
 import de.intevation.gnv.geobackend.base.query.QueryExecutor;
@@ -668,13 +673,66 @@
     }
 
     @Override
-    protected void createODV(OutputStream outputStream, String uuid,
-                             CallContext callContext) throws IOException,
-                                                     StateException {
-        Object chartResult = this.getChartResult(uuid, callContext);
-        log.debug("Hier gehts weiter");
+    protected void createODV(
+        OutputStream outputStream,
+        String       uuid,
+        CallContext  callContext)
+    throws IOException, StateException
+    {
+        // 'Profilschnitte' contain one parameter only
+        Collection tmp            = getParameters(uuid);
+        KeyValueDescibeData param = (KeyValueDescibeData) tmp.toArray()[0];
+
+        String [] COLUMN_HEADER = {
+            "Cruise",
+            "Station",
+            "Type",
+            "yyyy-mm-dd hh:mm",
+            "Lon (°E)",
+            "Lat (°N)",
+            "Bot. Depth [m]",
+            "Depth [m]",
+            "QF",
+            param.getValue()
+        };
+
+        Export.Profile ODV_PROFILE = new DefaultProfile(
+            COLUMN_HEADER,
+            '\t',
+            CSVWriter.NO_QUOTE_CHARACTER,
+            CSVWriter.NO_ESCAPE_CHARACTER,
+            "ODV",
+            "ISO-8859-1");
+
+        Object chartResult = getChartResult(uuid, callContext);
+
+        if (chartResult == null) {
+            log.error("No data for export found.");
+            return;
+        }
+
+        List result = new ArrayList(1);
+        result.add(chartResult);
+
+        InputData data = inputData.get(dateValueName);
+        String    date = data.getDescription()[0];
+
+        Interpolation3D interpol = ((AttributedXYColumns)
+            chartResult).getInterpolation();
+
+        Coordinate[] coords = interpol.getCoordinates();
+        double[]     depth  = interpol.getDepths();
+        double[]     raster = interpol.getRaster();
+
+        Export export = new VerticalCrossODVExport(
+            interpol.getCoordinates(),
+            interpol.getCellHeight(),
+            interpol.getRaster(),
+            date,
+            interpol.getWidth(),
+            interpol.getHeight());
+
+        export.create(ODV_PROFILE, outputStream, null);
     }
-
-
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org