tim@113: /** tim@113: * tim@113: */ tim@113: package de.intevation.gnv.transition.profile.horizontal; tim@113: tim@113: import java.io.IOException; tim@113: import java.io.OutputStream; tim@177: import java.io.OutputStreamWriter; tim@177: import java.io.UnsupportedEncodingException; tim@113: import java.util.Collection; tim@177: import java.util.Iterator; tim@177: tim@177: import org.apache.log4j.Logger; tim@177: tim@177: import au.com.bytecode.opencsv.CSVWriter; tim@177: tim@177: import com.vividsolutions.jts.geom.Point; tim@177: import com.vividsolutions.jts.io.ParseException; tim@177: import com.vividsolutions.jts.io.WKTReader; tim@113: tim@113: import de.intevation.gnv.chart.ChartLabels; tim@113: import de.intevation.gnv.chart.ChartStyle; tim@113: import de.intevation.gnv.chart.HorizontalProfileChartFactory; tim@113: import de.intevation.gnv.chart.exception.TechnicalChartException; tim@177: import de.intevation.gnv.geobackend.base.Result; tim@113: import de.intevation.gnv.statistics.HorizontalProfileStatistics; tim@113: import de.intevation.gnv.statistics.Statistics; tim@113: import de.intevation.gnv.transition.describedata.KeyValueDescibeData; tim@177: import de.intevation.gnv.transition.exception.TransitionException; tim@113: import de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition; tim@113: tim@113: /** tim@113: * @author Tim Englich tim@171: * tim@113: */ tim@171: public class HorizontalProfileOutputTransition extends tim@171: TimeSeriesOutputTransition { tim@113: /** tim@113: * The UID of this class tim@113: */ tim@113: private static final long serialVersionUID = 4401516087492028840L; tim@113: tim@177: private static Logger log = Logger tim@177: .getLogger(HorizontalProfileOutputTransition.class); tim@113: /** tim@113: * Constructor tim@113: */ tim@113: public HorizontalProfileOutputTransition() { tim@113: super(); tim@185: super.domainLable = "Distance [km]"; tim@113: } tim@113: tim@113: /** tim@171: * @see de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition#createChart(java.io.OutputStream, tim@171: * java.util.Collection, java.util.Collection, java.lang.String, tim@171: * de.intevation.gnv.chart.ChartStyle, tim@171: * de.intevation.gnv.chart.ChartLabels) tim@113: */ tim@113: @Override tim@113: protected void createChart(OutputStream outputStream, tim@171: Collection parameters, tim@171: Collection measurements, tim@179: Collection dates, tim@171: ChartStyle chartStyle, ChartLabels chartLables, tim@171: String uuid) throws IOException, tim@171: TechnicalChartException { tim@113: HorizontalProfileChartFactory chartFactory = new HorizontalProfileChartFactory(); tim@171: chartFactory.createProfileChart(chartLables, chartStyle, parameters, tim@179: measurements,dates, outputStream, this.getChartResult(uuid)); tim@113: } tim@113: tim@113: /** tim@113: * @see de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition#getStatisticsGenerator() tim@113: */ tim@113: @Override tim@113: protected Statistics getStatisticsGenerator() { tim@171: return new HorizontalProfileStatistics(); tim@113: } tim@113: tim@177: @Override tim@177: protected void createCSV(OutputStream outputStream, tim@177: Collection chartResult) tim@177: throws UnsupportedEncodingException, tim@177: IOException, tim@177: TransitionException { tim@177: tim@177: if (chartResult != null) { tim@177: try { tim@177: CSVWriter writer = new CSVWriter(new OutputStreamWriter( tim@177: outputStream, "ISO-8859-1"), ','); tim@177: // USE THIS ENCODING BECAUSE OF tim@177: // PROBLEMS WITH EXCEL AND UTF-8 tim@177: Iterator it = chartResult.iterator(); tim@177: WKTReader wktReader = new WKTReader(); tim@177: while (it.hasNext()) { tim@177: Result result = it.next(); tim@177: int i = 0; tim@177: String[] entries = new String[6]; tim@177: Point p = (Point)wktReader.read(result.getString("SHAPE")); tim@177: entries[i++] = ""+p.getX(); tim@177: entries[i++] = ""+p.getY(); tim@177: entries[i++] = result.getString("YORDINATE"); tim@177: entries[i++] = result.getString("GROUP1"); tim@177: entries[i++] = result.getString("GROUP2"); tim@177: entries[i++] = result.getString("GROUP3"); tim@177: writer.writeNext(entries); tim@177: } tim@177: writer.close(); tim@177: } catch (ParseException e) { tim@177: log.error(e,e); tim@177: throw new TransitionException( tim@177: "Exception occured while parsing an Point from WKT."); tim@177: } tim@177: } else { tim@177: log.error("No Data given for generation an CSV-File."); tim@177: throw new TransitionException( tim@177: "No Data given for generation an CSV-File."); tim@177: } tim@177: } tim@177: tim@177: tim@177: tim@113: }