view gnv-artifacts/src/main/java/de/intevation/gnv/jfreechart/PolygonDataset.java @ 593:b248531fa20b

Added experimental support for extrapolation in "Horizontalschnitte" gnv-artifacts/trunk@648 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Sun, 31 Jan 2010 21:50:15 +0000
parents 92b7ccbf6163
children b1f5f2a8840f
line wrap: on
line source
package de.intevation.gnv.jfreechart;

import java.util.List;
import java.util.Collection;
import java.util.ArrayList;

import org.jfree.data.Range;
import org.jfree.data.general.AbstractSeriesDataset;

/**
 * @author Ingo Weinzierl <ingo.weinzierl@intevation.de>
 */
public class PolygonDataset
extends      AbstractSeriesDataset
{
    /** PolygonSeries included in this Dataset */
    private List data;


    public PolygonDataset() {
        data = new ArrayList();
    }

    public PolygonDataset(Collection series) {
        data = new ArrayList(series);
    }

    public PolygonDataset(PolygonSeries series) {
        this();

        if (series != null) {
            data.add(series);
        }
    }


    public void addSeries(PolygonSeries series) {
        if (series == null)
            throw new IllegalArgumentException("Null 'series' argument.");

        data.add(series);
    }

    public void addAllSeries(Collection<PolygonSeries> series) {
        data.addAll(series);
    }

    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);
    }


    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);
    }


    public int getSeriesCount() {
        return data.size();
    }


    public Comparable getSeriesKey(int series) {
        return ((PolygonSeries)data.get(series)).getKey();
    }


    public PolygonSeries getSeries(int idx) {
        return (PolygonSeries)data.get(idx);
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org