diff gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java @ 90:6bdef6e590d6

Added CSV-Support and do some performanceimprovments gnv-artifacts/trunk@132 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Thu, 24 Sep 2009 15:27:33 +0000
parents 5d4f5d26bb7a
children bd284d8306db
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java	Thu Sep 24 11:03:31 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java	Thu Sep 24 15:27:33 2009 +0000
@@ -7,11 +7,14 @@
 import java.awt.Dimension;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.io.OutputStreamWriter;
 import java.util.Collection;
 import java.util.Iterator;
 
 import org.apache.log4j.Logger;
 
+import au.com.bytecode.opencsv.CSVWriter;
+
 import de.intevation.gnv.chart.ChartFactory;
 import de.intevation.gnv.chart.ChartLabels;
 import de.intevation.gnv.chart.ChartStyle;
@@ -58,15 +61,39 @@
     * @see de.intevation.gnv.transition.OutputTransition#out(java.lang.String, java.io.OutputStream)
     */
     public void out(String outputMode, OutputStream outputStream) throws TransitionException {
-        log.debug("TimeSeriesOutputTransition");
+        log.debug("TimeSeriesOutputTransition.out");
         try {
-            this.advance(); 
-            Collection<KeyValueDescibeData> parameters = this.getParameters();
-            Collection<KeyValueDescibeData> measurements = this.getMeasurements();
-            ChartStyle chartStyle = this.creatStyle(600,400);
-            ChartLabels chartLables = new ChartLabels(this.getSelectedFeatureName(),this.domainLable);
-            this.createChart(outputStream, parameters, measurements,
-                    chartStyle, chartLables);
+            this.advance();
+            if (outputMode.equalsIgnoreCase("chart")){
+                log.debug("Chart will be generated.");
+                Collection<KeyValueDescibeData> parameters = this.getParameters();
+                Collection<KeyValueDescibeData> measurements = this.getMeasurements();
+                ChartStyle chartStyle = this.creatStyle(600,400);
+                ChartLabels chartLables = new ChartLabels(this.getSelectedFeatureName(),this.domainLable);
+                this.createChart(outputStream, parameters, measurements,
+                        chartStyle, chartLables);
+            }else if (outputMode.equalsIgnoreCase("csv")){
+                log.debug("CSV-File will be generated.");
+                if(this.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 = this.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.");
+                }
+            }
         } catch (IOException e) {
             log.error(e,e);
             throw new TransitionException(e);

http://dive4elements.wald.intevation.org