Mercurial > dive4elements > gnv-client
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);