tim@64: /** tim@64: * tim@64: */ tim@64: package de.intevation.gnv.transition.timeseries; tim@64: tim@68: import java.awt.Color; tim@68: import java.awt.Dimension; tim@68: import java.io.ByteArrayOutputStream; tim@68: import java.io.IOException; tim@73: import java.io.OutputStream; tim@68: import java.util.Collection; tim@68: import java.util.Iterator; tim@68: tim@68: import org.apache.log4j.Logger; tim@68: tim@68: import de.intevation.gnv.chart.ChartFactory; tim@68: import de.intevation.gnv.chart.ChartLabels; tim@68: import de.intevation.gnv.chart.ChartStyle; tim@68: import de.intevation.gnv.chart.exception.TechnicalChartException; tim@68: import de.intevation.gnv.geobackend.base.Result; tim@64: import de.intevation.gnv.transition.OutputTransitionBase; tim@68: import de.intevation.gnv.transition.describedata.KeyValueDescibeData; tim@81: import de.intevation.gnv.transition.describedata.NamedCollection; tim@68: import de.intevation.gnv.transition.exception.TransitionException; tim@64: tim@64: /** tim@64: * @author Tim Englich tim@64: * tim@64: */ tim@64: public class TimeSeriesOutputTransition extends OutputTransitionBase{ tim@68: tim@68: protected Collection chartResult = null; tim@68: /** tim@68: * the logger, used to log exceptions and additonaly information tim@68: */ tim@68: private static Logger log = Logger.getLogger(TimeSeriesOutputTransition.class); tim@64: /** tim@64: * Constructor tim@64: */ tim@64: public TimeSeriesOutputTransition() { tim@64: super(); tim@64: } tim@64: tim@64: /** tim@64: * @see de.intevation.gnv.transition.Transition#validate() tim@64: */ tim@64: public boolean validate() { tim@64: return true; tim@64: } tim@64: tim@73: /** tim@73: * @see de.intevation.gnv.transition.OutputTransition#out(java.lang.String, java.io.OutputStream) tim@73: */ tim@73: public void out(String outputMode, OutputStream outputStream) throws TransitionException { tim@68: log.debug("TimeSeriesOutputTransition"); tim@68: try { tim@81: this.advance(); // TODO nur neu holen wenn hash auf chartResult sich ge�ndert hat tim@68: ChartFactory chartFactory = new ChartFactory(); tim@68: tim@68: Collection parameters = this.getParameters(); tim@68: Collection measurements = this.getMeasurements(); tim@68: String timeSeriesName = "BLA"; tim@68: ChartStyle chartStyle = this.creatStyle(600,400); tim@68: StringBuffer lDiagramTitle = new StringBuffer(); tim@68: lDiagramTitle.append(/*mSelectedFis.getTitle()*/ "FIS-TITLE").append(" - ").append(/*mSelectedFeatureId[0].getTitle()*/"FeatureTitle"); // TODO: FIXME tim@68: String domainLable = "BLA"; // TODO woher bekommen wir das tim@68: ChartLabels chartLables = new ChartLabels(lDiagramTitle.toString(),domainLable , /*mSelectedParams[0].getTitle()*/ "Selected Params Title"); tim@68: chartFactory.createSimpleTimeSeriesChart(chartLables, chartStyle, timeSeriesName, tim@68: parameters, measurements, tim@73: outputStream, this.chartResult); tim@68: } catch (IOException e) { tim@68: log.error(e,e); tim@68: throw new TransitionException(e); tim@68: } catch (TechnicalChartException e) { tim@68: log.error(e,e); tim@68: throw new TransitionException(e); tim@68: } tim@68: } tim@68: tim@68: /** tim@68: * @see de.intevation.gnv.transition.TransitionBase#purifyResult(java.util.Collection) tim@68: */ tim@68: @Override tim@68: protected void purifyResult(Collection result) { tim@68: this.chartResult = result; tim@68: } tim@68: tim@68: protected ChartStyle creatStyle(int witdh, int height){ tim@68: // TODO Konfigurierbar machen tim@68: de.intevation.gnv.chart.Insets lInsets = new de.intevation.gnv.chart.Insets(5d, 5d, 5d, 5d); tim@68: Dimension lChartSize = new Dimension(witdh, height); tim@68: return new ChartStyle(Color.white, new Color(230, 230, 230), Color.white, Color.white, true, true, lInsets, lChartSize); tim@68: } tim@68: tim@68: protected Collection getParameters(){ tim@68: Iterator it = this.descibeData.iterator(); tim@81: tim@68: while (it.hasNext()){ tim@68: tim@68: Object o = it.next(); tim@81: if (o instanceof NamedCollection){ tim@81: NamedCollection nc = (NamedCollection)o; tim@81: if (nc.getName().equals("parameterid")){ // TODO: konfigurierbar machen. tim@81: return nc; tim@81: } tim@68: } tim@68: } tim@64: return null; tim@64: } tim@68: tim@68: protected Collection getMeasurements(){ tim@68: Iterator it = this.descibeData.iterator(); tim@68: while (it.hasNext()){ tim@68: tim@68: Object o = it.next(); tim@81: if (o instanceof NamedCollection){ tim@81: NamedCollection nc = (NamedCollection)o; tim@81: if (nc.getName().equals("measurementid")){ // TODO: konfigurierbar machen. tim@81: return nc; tim@81: } tim@68: } tim@68: } tim@68: return null; tim@68: } tim@64: }