tim@335: /** tim@335: * tim@335: */ tim@335: package de.intevation.gnv.state.profile.horizontalcrosssection; tim@335: tim@335: import java.io.IOException; tim@335: import java.io.OutputStream; tim@335: import java.io.OutputStreamWriter; tim@335: import java.io.UnsupportedEncodingException; tim@335: import java.util.Collection; tim@335: import java.util.Iterator; tim@335: import java.util.Locale; tim@335: tim@335: import org.apache.log4j.Logger; tim@335: tim@335: import au.com.bytecode.opencsv.CSVWriter; tim@335: import de.intevation.gnv.chart.Chart; tim@335: import de.intevation.gnv.chart.ChartLabels; tim@335: import de.intevation.gnv.geobackend.base.Result; tim@335: import de.intevation.gnv.state.exception.StateException; tim@335: import de.intevation.gnv.state.timeseries.TimeSeriesOutputState; tim@335: import de.intevation.gnv.statistics.Statistics; tim@335: tim@335: /** tim@335: * @author Tim Englich tim@335: * tim@335: */ tim@335: public class HorizontalCrossSectionMeshOutputState tim@335: extends TimeSeriesOutputState { tim@335: tim@335: private static Logger log = Logger tim@335: .getLogger(HorizontalCrossSectionMeshOutputState.class); tim@335: tim@335: /** tim@335: * The UID of this Class tim@335: */ tim@335: private static final long serialVersionUID = 3233620652465061860L; tim@335: tim@335: /** tim@335: * Constructor tim@335: */ tim@335: public HorizontalCrossSectionMeshOutputState() { tim@335: super(); tim@335: super.domainLable = "Latitude [m]"; tim@335: } tim@335: tim@335: @Override tim@335: protected Chart getChart( tim@335: ChartLabels chartLables, tim@335: Collection parameters, tim@335: Collection measurements, tim@335: Collection dates, tim@335: Collection result, tim@335: Locale locale, tim@335: String uuid, tim@335: boolean linesVisible, tim@335: boolean shapesVisible tim@335: ) { tim@335: Chart chart = null; tim@335: tim@335: if (CACHE_CHART) { tim@335: log.info("Try to get horizontalcrosssection chart from cache."); tim@335: chart = (Chart) getChartFromCache(uuid); tim@335: } tim@335: tim@335: if (chart != null) tim@335: return chart; tim@335: tim@335: log.info("Chart not in cache yet."); tim@335: tim@335: log.warn("This sort of chart is not implemented yet."); tim@335: /* TODO Implement a special chart for this sort of charts. tim@335: chart = new HorizontalProfileChart( tim@335: chartLables, tim@335: chartTheme, tim@335: parameters, tim@335: measurements, tim@335: result, tim@335: dates, tim@335: locale tim@335: ); tim@335: chart.generateChart(); tim@335: tim@335: if (CACHE_CHART) { tim@335: log.info("Put chart into cache."); tim@335: purifyChart(chart, uuid); tim@335: } tim@335: */ tim@335: tim@335: return chart; tim@335: } tim@335: tim@335: tim@335: /** tim@335: * @see de.intevation.gnv.state.timeseries.TimeSeriesOutputState#getStatisticsGenerator() tim@335: */ tim@335: @Override tim@335: protected Statistics getStatisticsGenerator() { tim@335: return null; //Statistiken werden nicht für diesen Out-Typ unterstützt. tim@335: } tim@335: tim@335: /** tim@335: * @see de.intevation.gnv.state.timeseries.TimeSeriesOutputState#createCSV(java.io.OutputStream, tim@335: * java.util.Collection) tim@335: */ tim@335: @Override tim@335: protected void createCSV(OutputStream outputStream, tim@335: Collection chartResult) tim@335: throws UnsupportedEncodingException, tim@335: IOException, tim@335: StateException { tim@335: if (chartResult != null) { tim@335: try { tim@335: CSVWriter writer = new CSVWriter(new OutputStreamWriter( tim@335: outputStream, "ISO-8859-1"), ','); tim@335: // USE THIS ENCODING BECAUSE OF tim@335: // PROBLEMS WITH EXCEL AND UTF-8 tim@335: Iterator it = chartResult.iterator(); tim@335: while (it.hasNext()) { tim@335: Result result = it.next(); tim@335: int i = 0; tim@335: String[] entries = new String[5]; tim@335: entries[i++] = result.getString("SHAPE"); tim@335: entries[i++] = result.getString("YORDINATE"); tim@335: entries[i++] = result.getString("IPOSITION"); tim@335: entries[i++] = result.getString("JPOSITION"); tim@335: entries[i++] = result.getString("KPOSITION"); tim@335: writer.writeNext(entries); tim@335: } tim@335: writer.close(); tim@335: } catch (Exception e) { tim@335: log.error(e,e); tim@335: throw new StateException( tim@335: "Exception occured while parsing an Point from WKT."); tim@335: } tim@335: } else { tim@335: log.error("No Data given for generating an CSV-File."); tim@335: throw new StateException( tim@335: "No Data given for generating an CSV-File."); tim@335: } tim@335: } tim@335: tim@335: }