tim@113: /** tim@113: * tim@113: */ tim@113: package de.intevation.gnv.transition.profile.horizontal; tim@113: ingo@300: import java.awt.Dimension; 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; ingo@300: import java.util.Locale; ingo@300: ingo@300: import javax.imageio.ImageIO; tim@177: tim@177: import org.apache.log4j.Logger; tim@177: ingo@300: import org.jfree.chart.ChartTheme; ingo@300: 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: ingo@300: import de.intevation.gnv.chart.Chart; tim@113: import de.intevation.gnv.chart.ChartLabels; tim@113: import de.intevation.gnv.chart.ChartStyle; ingo@300: import de.intevation.gnv.chart.HorizontalProfileChart; 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: ingo@234: import de.intevation.gnv.exports.DefaultExport; ingo@235: import de.intevation.gnv.exports.ShapeDataCollector; ingo@234: import de.intevation.gnv.exports.DefaultProfile; ingo@234: import de.intevation.gnv.exports.Export.Profile; ingo@234: 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); ingo@234: ingo@234: public static final String [] TIMESERIES_CSV_PROFILE_NAMES = { ingo@234: "SHAPE", ingo@234: "YORDINATE", ingo@234: "GROUP1", ingo@234: "GROUP2", ingo@234: "GROUP3" ingo@234: }; ingo@234: ingo@234: public static final Profile TIMESERIES_CSV_PROFILE = ingo@234: new DefaultProfile( ingo@239: null, ingo@234: ',', ingo@234: '"', ingo@234: '"', ingo@234: "CSV", ingo@234: "ISO-8859-1"); ingo@234: tim@113: /** tim@113: * Constructor tim@113: */ tim@113: public HorizontalProfileOutputTransition() { tim@113: super(); tim@185: super.domainLable = "Distance [km]"; tim@113: } tim@113: ingo@300: protected Chart getChart( ingo@300: ChartLabels chartLables, ingo@300: ChartTheme chartTheme, ingo@300: Collection parameters, ingo@300: Collection measurements, ingo@300: Collection result, ingo@300: Collection dates, ingo@300: Locale locale, ingo@300: String uuid ingo@300: ) { ingo@300: Chart chart = null; ingo@300: ingo@300: if (CACHE_CHART) { ingo@300: log.info("Try to get horizontalprofile chart from cache."); ingo@300: chart = (Chart) getChartFromCache(uuid); ingo@300: } ingo@300: ingo@300: if (chart != null) ingo@300: return chart; ingo@300: ingo@300: log.info("Chart not in cache yet."); ingo@300: chart = new HorizontalProfileChart( ingo@300: chartLables, ingo@300: chartTheme, ingo@300: parameters, ingo@300: measurements, ingo@300: result, ingo@300: dates, ingo@300: locale ingo@300: ); ingo@300: chart.generateChart(); ingo@300: ingo@300: if (CACHE_CHART) { ingo@300: log.info("Put chart into cache."); ingo@300: purifyChart(chart, uuid); ingo@300: } ingo@300: ingo@300: return chart; tim@113: } tim@113: ingo@300: 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: ingo@234: log.debug("createCSV for HorizontalProfileOutputTransition."); ingo@234: DefaultExport export = new DefaultExport( ingo@235: new ShapeDataCollector(TIMESERIES_CSV_PROFILE_NAMES)); ingo@234: ingo@234: export.create(TIMESERIES_CSV_PROFILE, outputStream, chartResult); tim@177: } tim@113: }