Mercurial > dive4elements > gnv-client
view gnv-artifacts/src/main/java/de/intevation/gnv/chart/AbstractXYLineChart.java @ 324:e6e172a4915e
Removed needless imports.
gnv-artifacts/trunk@387 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Mon, 30 Nov 2009 15:08:47 +0000 |
parents | 63f8b3fb7d9a |
children | 22a6493e8460 |
line wrap: on
line source
package de.intevation.gnv.chart; import java.awt.Color; import java.text.NumberFormat; import java.util.Collection; import java.util.Iterator; import java.util.Locale; import org.apache.log4j.Logger; import org.jfree.chart.JFreeChart; import org.jfree.chart.ChartFactory; import org.jfree.chart.axis.Axis; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.axis.NumberTickUnit; import org.jfree.chart.axis.AxisLocation; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.xy.StandardXYItemRenderer; import org.jfree.data.general.Series; import de.intevation.gnv.geobackend.base.Result; import de.intevation.gnv.transition.describedata.KeyValueDescibeData; /** * @author Ingo Weinzierl <ingo.weinzierl@intevation.de> */ public abstract class AbstractXYLineChart extends AbstractChart { private static Logger log = Logger.getLogger(AbstractXYLineChart.class); protected static Color[] COLOR = { Color.black, Color.red, Color.green, Color.blue }; protected PlotOrientation PLOT_ORIENTATION = PlotOrientation.VERTICAL; protected abstract void initData(); protected abstract void addValue(Result row, Series series); protected abstract void addSeries(Series series, int idx); protected abstract void localizeDomainAxis(Axis axis, Locale locale); protected abstract String createSeriesName( String breakPoint1, String breakPoint2, String breakPoint3 ); public JFreeChart generateChart() { log.debug("generate XYLineChart"); if (chart != null) return chart; chart = ChartFactory.createXYLineChart( labels.getTitle(), labels.getDomainAxisLabel(), null, null, PLOT_ORIENTATION, true, false, false ); theme.apply(chart); initData(); return chart; } protected void prepareAxis(String seriesKey, int idx) { log.debug("prepare axis of xychart"); XYPlot plot = chart.getXYPlot(); Axis xAxis = plot.getDomainAxis(); NumberAxis yAxis = new NumberAxis(seriesKey); localizeDomainAxis(xAxis, locale); localizeRangeAxis(yAxis, locale); if (seriesKey.contains("richtung")) { yAxis.setTickUnit(new NumberTickUnit(30.0)); yAxis.setUpperBound(360.0); yAxis.setLowerBound(0.0); plot.setRangeAxis(idx, yAxis); } else { yAxis.setFixedDimension(10.0); yAxis.setAutoRangeIncludesZero(false); plot.setRangeAxis(idx, yAxis); yAxis.configure(); } if (idx % 2 != 0) plot.setRangeAxisLocation(idx, AxisLocation.BOTTOM_OR_RIGHT); else plot.setRangeAxisLocation(idx, AxisLocation.BOTTOM_OR_LEFT); plot.mapDatasetToRangeAxis(idx, idx); StandardXYItemRenderer renderer = new StandardXYItemRenderer(); renderer.setSeriesPaint(idx, COLOR[idx%COLOR.length]); plot.setRenderer(idx, renderer); } protected void localizeRangeAxis(Axis axis, Locale locale) { if (locale == null) return; log.debug( "Set language of axis [" + axis.getLabel() + "] " + "to " + locale.toString() ); NumberFormat format = NumberFormat.getInstance(locale); ((NumberAxis) axis).setNumberFormatOverride(format); } protected String findValueTitle(Collection values, String id) { log.debug("find description of dataset"); if (values != null){ Iterator it = values.iterator(); while (it.hasNext()) { KeyValueDescibeData data = (KeyValueDescibeData) it.next(); if (id.equals(data.getKey())) return data.getValue(); } } return ""; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :