Mercurial > dive4elements > gnv-client
view gnv-artifacts/src/main/java/de/intevation/gnv/chart/VerticalProfileChart.java @ 330:477c0c46605e
Cleaned up ChangeLog a bit.
gnv-artifacts/trunk@396 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 04 Dec 2009 09:04:10 +0000 |
parents | 22a6493e8460 |
children | e37930705daa |
line wrap: on
line source
package de.intevation.gnv.chart; import java.util.Collection; import java.util.Iterator; import java.util.Locale; import org.apache.log4j.Logger; import org.jfree.chart.ChartTheme; import org.jfree.chart.axis.Axis; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.xy.XYSeries; import org.jfree.data.general.Series; import org.jfree.data.xy.XYSeriesCollection; import de.intevation.gnv.geobackend.base.Result; /** * @author Ingo Weinzierl <ingo.weinzierl@intevation.de> */ public class VerticalProfileChart extends AbstractXYLineChart { private static Logger log = Logger.getLogger(VerticalProfileChart.class); public VerticalProfileChart( ChartLabels labels, ChartTheme theme, Collection parameters, Collection measurements, Collection dates, Collection result, Collection timeGaps, Locale locale, boolean linesVisible, boolean shapesVisible ) { this.labels = labels; this.theme = theme; this.parameters = parameters; this.measurements = measurements; this.dates = dates; this.resultSet = result; this.timeGaps = timeGaps; this.locale = locale; this.PLOT_ORIENTATION = PlotOrientation.HORIZONTAL; this.linesVisible = linesVisible; this.shapesVisible = shapesVisible; } protected void initData() { log.debug("init data for VerticalProfileChart"); String breakPoint1 = null; String breakPoint2 = null; String breakPoint3 = null; Iterator iter = resultSet.iterator(); Result row = null; String seriesName = null; XYSeries series = null; int idx = 0; while (iter.hasNext()) { row = (Result) iter.next(); // add current data to plot and prepare for next one if (!row.getString("GROUP1").equals(breakPoint1) || !row.getString("GROUP2").equals(breakPoint2) || !row.getString("GROUP3").equals(breakPoint3) ) { log.debug("prepare data/plot for next dataset"); if(series != null) { addSeries(series, idx); prepareAxis(((String)series.getKey()), idx); adjustRenderer(idx++, linesVisible, shapesVisible); } // prepare variables for next plot breakPoint1 = row.getString("GROUP1"); breakPoint2 = row.getString("GROUP2"); breakPoint3 = row.getString("GROUP3"); seriesName = createSeriesName( breakPoint1, breakPoint2, breakPoint3 ); log.debug("next dataset is '" + seriesName + "'"); series = new XYSeries(seriesName); } addValue(row, series); } addSeries(series, idx); if (series != null) { prepareAxis(((String)series.getKey()), idx); adjustRenderer(idx++, linesVisible, shapesVisible); } } protected void addValue(Result row, Series series) { // TODO look for gaps between two values ((XYSeries) series).add( row.getDouble("XORDINATE"), row.getDouble("YORDINATE") ); } protected void addSeries(Series series, int idx) { log.debug("add series to verticalprofile chart"); XYPlot plot = chart.getXYPlot(); if (series == null) { log.warn("no data to add"); return; } XYSeriesCollection xysc = new XYSeriesCollection((XYSeries)series); plot.setDataset(idx, xysc); } protected void localizeDomainAxis(Axis axis, Locale locale) { // call localizeRangeAxis from superclass which formats NumberAxis super.localizeRangeAxis(axis, locale); } protected String createSeriesName( String breakPoint1, String breakPoint2, String breakPoint3 ) { log.debug("create seriesname of verticalprofile chart"); return findValueTitle(parameters, breakPoint1) + " " + findValueTitle(measurements, breakPoint2) + "m"; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :