diff gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java @ 230:f68ffbe974a0

Implemented an exporter for odv and csv exports. gnv-artifacts/trunk@298 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 06 Nov 2009 10:56:18 +0000
parents ee2d4134d0b3
children 3d6d89bcbf42
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java	Fri Nov 06 10:23:55 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java	Fri Nov 06 10:56:18 2009 +0000
@@ -8,6 +8,7 @@
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
 import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -50,8 +51,14 @@
 import de.intevation.gnv.transition.describedata.KeyValueDescibeData;
 import de.intevation.gnv.transition.describedata.NamedCollection;
 import de.intevation.gnv.transition.exception.TransitionException;
+
+import de.intevation.gnv.exports.DefaultExport;
+import de.intevation.gnv.exports.DefaultProfile;
+import de.intevation.gnv.exports.Export.Profile;
+
 import de.intevation.gnv.utils.ArtifactXMLUtilities;
 
+
 /**
  * @author Tim Englich <tim.englich@intevation.de>
  * 
@@ -78,6 +85,39 @@
     protected String parameterValuesName = "parameterid";
     protected String measuremenValueName = "measurementid";
     protected String dateValueName = "dateid";
+    
+    public static final String [] TIMESERIES_CSV_PROFILE_NAMES = {
+        "XORDINATE",
+        "YORDINATE",
+        "GROUP1",
+        "GROUP2",
+        "GROUP3"
+    };
+
+    /**
+     * Profile for exporting data to cvs
+     */
+    public static final Profile TIMESERIES_CSV_PROFILE =
+        new DefaultProfile(
+            TIMESERIES_CSV_PROFILE_NAMES,
+            ',',
+            '"',
+            '"',
+            "CSV",
+            "ISO-8859-1");
+
+    /**
+     * Profile for exporting data to odv
+     * TODO Change TIMESERIES_PROFILE_NAMES, which belong to CSV exports
+     */
+    public static final Profile TIMESERIES_ODV_PROFILE =
+        new DefaultProfile(
+            TIMESERIES_CSV_PROFILE_NAMES,
+            '\t',
+            CSVWriter.NO_QUOTE_CHARACTER,
+            CSVWriter.NO_ESCAPE_CHARACTER,
+            "ODV",
+            "ISO-8859-1");
 
     /**
      * Constructor
@@ -138,6 +178,10 @@
                         .calculateStatistics(chartResult);
                 Document doc = this.writeStatistics2XML(statistics);
                 this.writeDocument2OutputStream(doc, outputStream);
+            } else if (outputMode.equalsIgnoreCase("odv")) {
+                //TimeSeriesExport export = new TimeSeriesExport();
+                //export.createODV(outputStream, chartResult);
+                createODV(outputStream, chartResult);
             }
         } catch (IOException e) {
             log.error(e, e);
@@ -151,6 +195,7 @@
         }
     }
 
+    
     /**
      * @param outputStream
      * @param chartResult
@@ -163,29 +208,20 @@
                                                           throws UnsupportedEncodingException,
                                                           IOException,
                                                           TransitionException {
-        if (chartResult != null) {
-            CSVWriter writer = new CSVWriter(new OutputStreamWriter(
-                    outputStream, "ISO-8859-1"), ','); 
-            // USE THIS ENCODING BECAUSE OF
-            // PROBLEMS WITH EXCEL AND UTF-8
-            Iterator<Result> it = chartResult.iterator();
-            while (it.hasNext()) {
-                Result result = it.next();
-                int i = 0;
-                String[] entries = new String[5];
-                entries[i++] = result.getString("XORDINATE");
-                entries[i++] = result.getString("YORDINATE");
-                entries[i++] = result.getString("GROUP1");
-                entries[i++] = result.getString("GROUP2");
-                entries[i++] = result.getString("GROUP3");
-                writer.writeNext(entries);
-            }
-            writer.close();
-        } else {
-            log.error("No Data given for generation an CSV-File.");
-            throw new TransitionException(
-                    "No Data given for generation an CSV-File.");
-        }
+        DefaultExport export = new DefaultExport();
+
+        export.create(TIMESERIES_CSV_PROFILE, outputStream, chartResult);
+    }
+
+    /**
+     * TODO Result is not used at the moment. Change result with correct data.
+     */
+    protected void createODV(OutputStream outputStream, Collection result)
+    throws IOException, TransitionException {
+
+        DefaultExport export = new DefaultExport();
+
+        export.create(TIMESERIES_ODV_PROFILE, outputStream, result);
     }
 
     /**

http://dive4elements.wald.intevation.org