Mercurial > dive4elements > gnv-client
diff gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java @ 68:d117fd4b82e5
Chartrendering integrated in Timeseries Transition
gnv-artifacts/trunk@53 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Tim Englich <tim.englich@intevation.de> |
---|---|
date | Wed, 09 Sep 2009 15:28:18 +0000 |
parents | 5db77e0a8594 |
children | 504570de21fd |
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java Wed Sep 09 13:14:12 2009 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java Wed Sep 09 15:28:18 2009 +0000 @@ -3,14 +3,35 @@ */ package de.intevation.gnv.transition.timeseries; +import java.awt.Color; +import java.awt.Dimension; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Collection; +import java.util.Iterator; + +import org.apache.log4j.Logger; + +import de.intevation.gnv.chart.ChartFactory; +import de.intevation.gnv.chart.ChartLabels; +import de.intevation.gnv.chart.ChartStyle; +import de.intevation.gnv.chart.exception.TechnicalChartException; +import de.intevation.gnv.geobackend.base.Result; import de.intevation.gnv.transition.OutputTransitionBase; +import de.intevation.gnv.transition.describedata.KeyValueDescibeData; +import de.intevation.gnv.transition.exception.TransitionException; /** * @author Tim Englich <tim.englich@intevation.de> * */ public class TimeSeriesOutputTransition extends OutputTransitionBase{ - + + protected Collection<Result> chartResult = null; + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(TimeSeriesOutputTransition.class); /** * Constructor */ @@ -28,8 +49,74 @@ /** * @see de.intevation.gnv.transition.OutputTransition#out(java.lang.String) */ - public byte[] out(String outputMode) { + public byte[] out(String outputMode) throws TransitionException { + log.debug("TimeSeriesOutputTransition"); + try { + this.advance(); // TODO nur neu holen wenn hash auf chartResult sich geändert hat + ByteArrayOutputStream os = new ByteArrayOutputStream(); + ChartFactory chartFactory = new ChartFactory(); + + Collection<KeyValueDescibeData> parameters = this.getParameters(); + Collection<KeyValueDescibeData> measurements = this.getMeasurements(); + String timeSeriesName = "BLA"; + ChartStyle chartStyle = this.creatStyle(600,400); + StringBuffer lDiagramTitle = new StringBuffer(); + lDiagramTitle.append(/*mSelectedFis.getTitle()*/ "FIS-TITLE").append(" - ").append(/*mSelectedFeatureId[0].getTitle()*/"FeatureTitle"); // TODO: FIXME + String domainLable = "BLA"; // TODO woher bekommen wir das + ChartLabels chartLables = new ChartLabels(lDiagramTitle.toString(),domainLable , /*mSelectedParams[0].getTitle()*/ "Selected Params Title"); + chartFactory.createSimpleTimeSeriesChart(chartLables, chartStyle, timeSeriesName, + parameters, measurements, + os, this.chartResult); + return os.toByteArray(); + } catch (IOException e) { + log.error(e,e); + throw new TransitionException(e); + } catch (TechnicalChartException e) { + log.error(e,e); + throw new TransitionException(e); + } + } + + /** + * @see de.intevation.gnv.transition.TransitionBase#purifyResult(java.util.Collection) + */ + @Override + protected void purifyResult(Collection<Result> result) { + this.chartResult = result; + } + + protected ChartStyle creatStyle(int witdh, int height){ + // TODO Konfigurierbar machen + de.intevation.gnv.chart.Insets lInsets = new de.intevation.gnv.chart.Insets(5d, 5d, 5d, 5d); + Dimension lChartSize = new Dimension(witdh, height); + return new ChartStyle(Color.white, new Color(230, 230, 230), Color.white, Color.white, true, true, lInsets, lChartSize); + } + + protected Collection<KeyValueDescibeData> getParameters(){ + Iterator<Object> it = this.descibeData.iterator(); + int i = 0; + while (it.hasNext()){ + + Object o = it.next(); + if (i == 1){ // TODO über Identifier arbeiten This is just a hack + return (Collection)o; + } + i++; + } return null; } - + + protected Collection<KeyValueDescibeData> getMeasurements(){ + Iterator<Object> it = this.descibeData.iterator(); + int i = 0; + while (it.hasNext()){ + + Object o = it.next(); + if (i == 2){ // TODO über Identifier arbeiten This is just a hack + return (Collection)o; + } + i++; + } + return null; + } }