Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/exports/XYChartGenerator.java @ 7034:557cb3a3d772 generator-refactoring
Combine AxisDataset implementations and remove / simplify handling code.
Tested with longitudinal section and hist. discharges should be
ok.
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Wed, 18 Sep 2013 10:12:47 +0200 |
parents | 1b35b2ddfc28 |
children | 06a9a241faac |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/exports/XYChartGenerator.java Tue Sep 17 16:49:37 2013 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/exports/XYChartGenerator.java Wed Sep 18 10:12:47 2013 +0200 @@ -46,6 +46,7 @@ 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.themes.ThemeDocument; @@ -66,115 +67,6 @@ */ public abstract class XYChartGenerator extends ChartGenerator { - public 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(); @@ -415,8 +307,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 +373,7 @@ return; } - XYAxisDataset axisDataset = (XYAxisDataset) getAxisDataset(index); + AxisDataset axisDataset = (AxisDataset) getAxisDataset(index); if (visible) { axisDataset.addArea(area); @@ -510,13 +402,7 @@ 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); - } + AxisDataset axisDataset = (AxisDataset) getAxisDataset(index); }