Mercurial > dive4elements > gnv-client
view gnv-artifacts/src/main/java/de/intevation/gnv/jfreechart/PolygonDataset.java @ 799:feeaf5aec552
ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
gnv-artifacts/trunk@881 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Tim Englich <tim.englich@intevation.de> |
---|---|
date | Tue, 06 Apr 2010 11:56:53 +0000 |
parents | cdade5005cba |
children | feae2f9d6c6f |
line wrap: on
line source
package de.intevation.gnv.jfreechart; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.jfree.data.Range; import org.jfree.data.general.AbstractSeriesDataset; /** * An implementation of {@link org.jfree.data.xy.XYDataset} to create 2D charts. * This dataset contains several <code>PolygonSeries</code> and is used by * <code>PolygonRenderer</code> to draw its items into a 2D chart. * * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ public class PolygonDataset extends AbstractSeriesDataset { /** * PolygonSeries included in this Dataset */ private List data; /** * Constructor. */ public PolygonDataset() { data = new ArrayList(); } /** * Constructs a new PolygonDataset containing multiple PolygonSeries. * * @param series A collection containing some PolygonSeries. */ public PolygonDataset(Collection series) { data = new ArrayList(series); } /** * Constructs a PolygonDataset with a single PolygonSeries. * * @param series A PolygonSeries. */ public PolygonDataset(PolygonSeries series) { this(); if (series != null) { data.add(series); } } /** * * @param series */ public void addSeries(PolygonSeries series) { if (series == null) throw new IllegalArgumentException("Null 'series' argument."); data.add(series); } /** * * @param series */ public void addAllSeries(Collection<PolygonSeries> series) { data.addAll(series); } /** * Retrieves the x-axis range of all PolygonSeries in this dataset. * * @return range of the x-axis. */ public Range getDomainBounds() { double lower = Double.POSITIVE_INFINITY; double upper = Double.NEGATIVE_INFINITY; int seriesCount = getSeriesCount(); for (int s = 0; s < seriesCount; s++) { PolygonSeries series = getSeries(s); Range domainRange = series.getDomainBounds(); double minX = domainRange.getLowerBound(); if (!Double.isNaN(minX)) { lower = Math.min(lower, minX); } double maxX = domainRange.getUpperBound(); if (!Double.isNaN(maxX)) { upper = Math.max(upper, maxX); } } return new Range(lower, upper); } /** * Retrieves the y-axis range of all PolygonSeries in this dataset. * * @return the y-axis range. */ public Range getRangeBounds() { double lower = Double.POSITIVE_INFINITY; double upper = Double.NEGATIVE_INFINITY; int seriesCount = getSeriesCount(); for (int i = 0; i < seriesCount; i++) { PolygonSeries series = getSeries(i); Range range = series.getRangeBounds(); double minX = range.getLowerBound(); if (!Double.isNaN(minX)) { lower = Math.min(lower, minX); } double maxX = range.getUpperBound(); if (!Double.isNaN(maxX)) { upper = Math.max(upper, maxX); } } return new Range(lower, upper); } /** * Returns the number of series in this dataset. * * @return the number of series in this dataset. */ public int getSeriesCount() { return data.size(); } /** * Returns the key for a series. * * @param index Index of a specific series. * @return the series key of the series with the given index. */ public Comparable getSeriesKey(int index) { return ((PolygonSeries)data.get(index)).getKey(); } /** * * @param idx Index. * @return the series with the given index. */ public PolygonSeries getSeries(int idx) { return (PolygonSeries)data.get(idx); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :