Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/exports/XYChartGenerator.java @ 7116:3c7471b929d1
Merge branch generator-refectoring into default.
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Tue, 24 Sep 2013 12:29:44 +0200 |
parents | 1f38656b68c4 4f6b3ba542de |
children | 8ca2c711a632 |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/exports/XYChartGenerator.java Mon Sep 23 11:37:13 2013 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/exports/XYChartGenerator.java Tue Sep 24 12:29:44 2013 +0200 @@ -46,6 +46,8 @@ import org.dive4elements.river.jfree.RiverAnnotation; import org.dive4elements.river.jfree.StyledAreaSeriesCollection; import org.dive4elements.river.jfree.StyledXYSeries; +import org.dive4elements.river.jfree.AxisDataset; +import org.dive4elements.river.jfree.AnnotationHelper; import org.dive4elements.river.themes.ThemeDocument; @@ -66,115 +68,6 @@ */ public abstract class XYChartGenerator extends ChartGenerator { - public static class XYAxisDataset implements AxisDataset { - /** Symbolic integer, but also coding the priority (0 goes first). */ - protected int axisSymbol; - - /** List of assigned datasets (in order). */ - protected List<XYDataset> datasets; - - /** Range to use to include all given datasets. */ - protected Range range; - - /** Index of axis in plot. */ - protected int plotAxisIndex; - - /** Create AxisDataset. */ - public XYAxisDataset(int symb) { - this.axisSymbol = symb; - datasets = new ArrayList<XYDataset>(); - } - - /** Merge (or create given range with range so far (if any). */ - private void mergeRanges(Range subRange) { - // Avoid merging NaNs, as they take min/max place forever. - if (subRange == null || - Double.isNaN(subRange.getLowerBound()) || - Double.isNaN(subRange.getUpperBound())) { - return; - } - if (range == null) { - range = subRange; - return; - } - range = Range.combine(range, subRange); - } - - - /** Add a dataset to internal list for this axis. */ - @Override - public void addDataset(XYDataset dataset) { - datasets.add(dataset); - includeYRange(((XYSeriesCollection) dataset).getSeries(0)); - } - - /** Add a dataset, include its range. */ - public void addDataset(XYSeries series) { - addDataset(new XYSeriesCollection(series)); - } - - - /** Set Range for this axis. */ - @Override - public void setRange(Range range) { - this.range = range; - } - - - /** Get Range for this axis. */ - @Override - public Range getRange() { - return range; - } - - - /** Get Array of Datasets. */ - @Override - public XYDataset[] getDatasets() { - return datasets.toArray(new XYDataset[datasets.size()]); - } - - - /** Add a Dataset that describes an area. */ - public void addArea(StyledAreaSeriesCollection series) { - this.datasets.add(series); - List<?> allSeries = series.getSeries(); - /* We do not include the bounds/ranges, if the area includes - * points at "infinity"/BIG_DOUBLE_VALUE, the charts extents are - * expanded to include these very small/big value. - * This is especially used when showing "area above axis". */ - } - - /** True if to be rendered as area. */ - @Override - public boolean isArea(XYDataset series) { - return (series instanceof StyledAreaSeriesCollection); - } - - /** Adjust range to include given dataset. */ - public void includeYRange(XYSeries dataset) { - mergeRanges(new Range(dataset.getMinY(), dataset.getMaxY())); - } - - /** True if no datasets given. */ - @Override - public boolean isEmpty() { - return this.datasets.isEmpty(); - } - - /** Set the 'real' axis index that this axis is mapped to. */ - @Override - public void setPlotAxisIndex(int axisIndex) { - this.plotAxisIndex = axisIndex; - } - - /** Get the 'real' axis index that this axis is mapped to. */ - @Override - public int getPlotAxisIndex() { - return this.plotAxisIndex; - } - } // class AxisDataset - /** Enumerator over existing axes. */ @Override protected abstract YAxisWalker getYAxisWalker(); @@ -258,7 +151,8 @@ //debugAxis(plot); // These have to go after the autozoom. - addAnnotationsToRenderer(plot); + AnnotationHelper.addAnnotationsToRenderer(annotations, plot, + getChartSettings(), datasets); // Add a logo (maybe). addLogo(plot); @@ -415,8 +309,8 @@ @Override protected AxisDataset createAxisDataset(int idx) { - logger.debug("Create new XYAxisDataset for index: " + idx); - return new XYAxisDataset(idx); + logger.debug("Create new AxisDataset for index: " + idx); + return new AxisDataset(idx); } @@ -481,7 +375,7 @@ return; } - XYAxisDataset axisDataset = (XYAxisDataset) getAxisDataset(index); + AxisDataset axisDataset = (AxisDataset) getAxisDataset(index); if (visible) { axisDataset.addArea(area); @@ -510,13 +404,6 @@ addAxisDataset(new XYSeriesCollection(series), index, visible); - XYAxisDataset axisDataset = (XYAxisDataset) getAxisDataset(index); - - if (!visible) { - // Do this also when not visible to have axis scaled by default such - // that every data-point could be seen (except for annotations). - axisDataset.includeYRange(series); - } }