Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/exports/XYChartGenerator.java @ 369:2ce7b473620e
Implemented the chart creation of a longitudinal section chart - W and Q facets.
flys-artifacts/trunk@1778 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Fri, 29 Apr 2011 10:13:24 +0000 |
parents | |
children | 60f63539d004 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/XYChartGenerator.java Fri Apr 29 10:13:24 2011 +0000 @@ -0,0 +1,98 @@ +package de.intevation.flys.exports; + +import java.awt.Color; + +import java.io.IOException; + +import org.apache.log4j.Logger; + +import org.jfree.chart.ChartFactory; +import org.jfree.chart.JFreeChart; +import org.jfree.chart.axis.NumberAxis; +import org.jfree.chart.plot.PlotOrientation; +import org.jfree.chart.plot.XYPlot; +import org.jfree.data.xy.XYDataset; + +import de.intevation.flys.exports.ChartExportHelper; + + +/** + * An abstract base class for creating XY charts. + * + * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> + */ +public abstract class XYChartGenerator extends ChartGenerator { + + /** The logger that is used in this generator.*/ + private static Logger logger = Logger.getLogger(ChartGenerator.class); + + + /** + * Returns the title of a chart. + * + * @return the title of a chart. + */ + protected abstract String getChartTitle(); + + /** + * Returns the X-Axis label of a chart. + * + * @return the X-Axis label of a chart. + */ + protected abstract String getXAxisLabel(); + + /** + * Returns the Y-Axis label of a chart. + * + * @return the Y-Axis label of a chart. + */ + protected abstract String getYAxisLabel(); + + /** + * Returns the XYDataset used to add curves to the chart. + * + * @return the XYDataset used to add curves to the chart. + */ + protected abstract XYDataset getXYDataset(); + + + public void generate() + throws IOException + { + logger.debug("XYChartGenerator.generate"); + + JFreeChart chart = ChartFactory.createXYLineChart( + getChartTitle(), + getXAxisLabel(), + getYAxisLabel(), + getXYDataset(), + PlotOrientation.VERTICAL, + true, + false, + false); + + chart.setBackgroundPaint(Color.WHITE); + chart.getPlot().setBackgroundPaint(Color.WHITE); + + adjustAxes((XYPlot) chart.getPlot()); + + ChartExportHelper.exportImage( + out, + chart, + "png", + 600, 400); + } + + + /** + * Adjusts the axes of a plot. + * + * @param plot The XYPlot of the chart. + */ + protected void adjustAxes(XYPlot plot) { + NumberAxis yAxis = (NumberAxis) plot.getRangeAxis(); + + yAxis.setAutoRangeIncludesZero(false); + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :