Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/exports/TimeseriesChartGenerator.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 | ce1b8a59934e |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/exports/TimeseriesChartGenerator.java Tue Sep 17 16:49:37 2013 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/exports/TimeseriesChartGenerator.java Wed Sep 18 10:12:47 2013 +0200 @@ -16,6 +16,7 @@ import org.dive4elements.river.jfree.RiverAnnotation; import org.dive4elements.river.jfree.StyledTimeSeries; import org.dive4elements.river.jfree.TimeBounds; +import org.dive4elements.river.jfree.AxisDataset; import org.dive4elements.river.themes.ThemeDocument; import java.awt.Color; @@ -60,126 +61,6 @@ public abstract class TimeseriesChartGenerator extends ChartGenerator { - /** - * Inner class TimeseriesAxisDataset stores TimeSeriesCollection. - */ - public class TimeseriesAxisDataset implements AxisDataset { - - protected int axisSymbol; - - protected List<TimeSeriesCollection> datasets; - - protected Range range; - - protected int plotAxisIndex; - - public TimeseriesAxisDataset(int axisSymbol) { - this.axisSymbol = axisSymbol; - this.datasets = new ArrayList<TimeSeriesCollection>(); - } - - - @Override - public void addDataset(XYDataset dataset) { - if (!(dataset instanceof TimeSeriesCollection)) { - logger.warn("Skip non TimeSeriesCollection dataset."); - return; - } - - TimeSeriesCollection tsc = (TimeSeriesCollection) dataset; - - datasets.add(tsc); - mergeRanges(tsc); - } - - - @Override - public XYDataset[] getDatasets() { - return datasets.toArray(new XYDataset[datasets.size()]); - } - - - @Override - public boolean isEmpty() { - return datasets.isEmpty(); - } - - - @Override - public void setRange(Range range) { - this.range = range; - } - - - @Override - public Range getRange() { - return range; - } - - - @Override - public void setPlotAxisIndex(int plotAxisIndex) { - this.plotAxisIndex = plotAxisIndex; - } - - - @Override - public int getPlotAxisIndex() { - return plotAxisIndex; - } - - - @Override - public boolean isArea(XYDataset dataset) { - logger.warn("This AxisDataset doesn't support Areas yet!"); - return false; - } - - - protected void mergeRanges(TimeSeriesCollection dataset) { - logger.debug("Range before merging: " + range); - Range subRange = null; - - // Determine min/max of range axis. - for (int i = 0; i < dataset.getSeriesCount(); i++) { - if (dataset.getSeries(i).getItemCount() == 0) { - continue; - } - double min = Double.MAX_VALUE; - double max = -Double.MAX_VALUE; - TimeSeries series = dataset.getSeries(i); - for (int j = 0; j < series.getItemCount(); j++) { - double tmp = series.getValue(j).doubleValue(); - min = tmp < min ? tmp : min; - max = tmp > max ? tmp : max; - } - if (subRange != null) { - subRange = new Range( - min < subRange.getLowerBound() ? - min : subRange.getLowerBound(), - max > subRange.getUpperBound() ? - max : subRange.getUpperBound()); - } - else { - subRange = new Range(min, max); - } - } - - // 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); - } - - } // end of TimeseriesAxisDataset class - protected List<Marker> domainMarker; protected List<Marker> valueMarker; @@ -389,14 +270,14 @@ /** - * This method creates new instances of TimeseriesAxisDataset. + * This method creates new instances of AxisDataset. * - * @param idx The symbol for the new TimeseriesAxisDataset. + * @param idx The symbol for the new AxisDataset. */ @Override protected AxisDataset createAxisDataset(int idx) { logger.debug("Create a new AxisDataset for index: " + idx); - return new TimeseriesAxisDataset(idx); + return new AxisDataset(idx); }