From 7f59cf2c3f673f4b7e7eeef25a17d6fdfd2ae8c5 Mon Sep 17 00:00:00 2001 From: Tim Molter <tim.molter@gmail.com> Date: Mon, 6 Jan 2014 19:17:56 +0100 Subject: [PATCH] improved generics so you can pass series as list<Double> for example --- .../xchart/standalone/RealtimeAttempt.java | 14 +++++++------- .../main/java/com/xeiam/xchart/CSVExporter.java | 8 ++++---- .../src/main/java/com/xeiam/xchart/Chart.java | 4 ++-- .../src/main/java/com/xeiam/xchart/Series.java | 17 +++++++++-------- .../xchart/internal/chartpart/AxisPair.java | 2 +- .../internal/chartpart/PlotContentBarChart.java | 4 ++-- .../chartpart/PlotContentLineChart.java | 8 ++++---- 7 files changed, 29 insertions(+), 28 deletions(-) diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/standalone/RealtimeAttempt.java b/xchart-demo/src/main/java/com/xeiam/xchart/standalone/RealtimeAttempt.java index 884ec792..668fbdb6 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/standalone/RealtimeAttempt.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/standalone/RealtimeAttempt.java @@ -16,7 +16,7 @@ package com.xeiam.xchart.standalone; import java.util.ArrayList; -import java.util.Collection; +import java.util.List; import java.util.Timer; import java.util.TimerTask; @@ -77,7 +77,7 @@ public class RealtimeAttempt { public void buildPanel() { - Collection<Number> yData = getRandomData(5); + List<Double> yData = getRandomData(5); // Create Chart chart = new Chart(500, 400); @@ -93,13 +93,13 @@ public class RealtimeAttempt { public void updateData() { // Get some new data - Collection<Number> newData = getRandomData(1); + List<Double> newData = getRandomData(1); // Replace the existing - ArrayList<Number> replacementData = new ArrayList<Number>(); + List<Double> replacementData = new ArrayList<Double>(); Series oldSeries = (Series) chart.getSeriesMap().values().toArray()[0]; - Collection<Number> oldData = oldSeries.getYData(); + List<Double> oldData = (List<Double>) oldSeries.getYData(); replacementData.addAll(oldData); replacementData.addAll(newData); @@ -132,9 +132,9 @@ public class RealtimeAttempt { return chartPanel; } - private static Collection<Number> getRandomData(int numPoints) { + private static List<Double> getRandomData(int numPoints) { - ArrayList<Number> data = new ArrayList<Number>(); + List<Double> data = new ArrayList<Double>(); for (int i = 0; i < numPoints; i++) { data.add(Math.random() * 100); } diff --git a/xchart/src/main/java/com/xeiam/xchart/CSVExporter.java b/xchart/src/main/java/com/xeiam/xchart/CSVExporter.java index 6e9a366e..4d29b4e9 100644 --- a/xchart/src/main/java/com/xeiam/xchart/CSVExporter.java +++ b/xchart/src/main/java/com/xeiam/xchart/CSVExporter.java @@ -82,11 +82,11 @@ public class CSVExporter { out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(newFile), "UTF8")); Collection<?> xData = series.getXData(); - Collection<Number> yData = series.getYData(); - Collection<Number> errorBarData = series.getErrorBars(); + Collection<? extends Number> yData = series.getYData(); + Collection<? extends Number> errorBarData = series.getErrorBars(); Iterator<?> itrx = xData.iterator(); - Iterator<Number> itry = yData.iterator(); - Iterator<Number> itrErrorBar = null; + Iterator<? extends Number> itry = yData.iterator(); + Iterator<? extends Number> itrErrorBar = null; if (errorBarData != null) { itrErrorBar = errorBarData.iterator(); } diff --git a/xchart/src/main/java/com/xeiam/xchart/Chart.java b/xchart/src/main/java/com/xeiam/xchart/Chart.java index ebac129e..3b250946 100644 --- a/xchart/src/main/java/com/xeiam/xchart/Chart.java +++ b/xchart/src/main/java/com/xeiam/xchart/Chart.java @@ -151,7 +151,7 @@ public class Chart { * @param yData the Y-Axis data * @return A Series object that you can set properties on */ - public Series addSeries(String seriesName, Collection<Number> xData, Collection<Number> yData) { + public Series addSeries(String seriesName, Collection<? extends Number> xData, Collection<? extends Number> yData) { return chartPainter.getAxisPair().addSeries(seriesName, xData, yData, null); } @@ -165,7 +165,7 @@ public class Chart { * @param errorBars the error bar data * @return A Series object that you can set properties on */ - public Series addSeries(String seriesName, Collection<Number> xData, Collection<Number> yData, Collection<Number> errorBars) { + public Series addSeries(String seriesName, Collection<? extends Number> xData, Collection<? extends Number> yData, Collection<? extends Number> errorBars) { return chartPainter.getAxisPair().addSeries(seriesName, xData, yData, errorBars); } diff --git a/xchart/src/main/java/com/xeiam/xchart/Series.java b/xchart/src/main/java/com/xeiam/xchart/Series.java index 96b01b3c..5748e273 100644 --- a/xchart/src/main/java/com/xeiam/xchart/Series.java +++ b/xchart/src/main/java/com/xeiam/xchart/Series.java @@ -39,10 +39,10 @@ public class Series { private Collection<?> xData; private AxisType xAxisType; - private Collection<Number> yData; + private Collection<? extends Number> yData; private AxisType yAxisType; - private Collection<Number> errorBars; + private Collection<? extends Number> errorBars; /** the minimum value of axis range */ private BigDecimal xMin; @@ -79,7 +79,8 @@ public class Series { * @param errorBars * @param seriesColorMarkerLineStyle */ - public Series(String name, Collection<?> xData, AxisType xAxisType, Collection<Number> yData, AxisType yAxisType, Collection<Number> errorBars, SeriesColorMarkerLineStyle seriesColorMarkerLineStyle) { + public Series(String name, Collection<?> xData, AxisType xAxisType, Collection<? extends Number> yData, AxisType yAxisType, Collection<? extends Number> errorBars, + SeriesColorMarkerLineStyle seriesColorMarkerLineStyle) { if (name == null || name.length() < 1) { throw new IllegalArgumentException("Series name cannot be null or zero-length!!!"); @@ -147,13 +148,13 @@ public class Series { * @param data * @return */ - private BigDecimal[] findMinMaxWithErrorBars(Collection<Number> data, Collection<Number> errorBars) { + private BigDecimal[] findMinMaxWithErrorBars(Collection<? extends Number> data, Collection<? extends Number> errorBars) { BigDecimal min = null; BigDecimal max = null; - Iterator<Number> itr = data.iterator(); - Iterator<Number> ebItr = errorBars.iterator(); + Iterator<? extends Number> itr = data.iterator(); + Iterator<? extends Number> ebItr = errorBars.iterator(); while (itr.hasNext()) { BigDecimal bigDecimal = new BigDecimal(itr.next().doubleValue()); BigDecimal eb = new BigDecimal(ebItr.next().doubleValue()); @@ -249,12 +250,12 @@ public class Series { return xData; } - public Collection<Number> getYData() { + public Collection<? extends Number> getYData() { return yData; } - public Collection<Number> getErrorBars() { + public Collection<? extends Number> getErrorBars() { return errorBars; } diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java index f062b68c..99535e46 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java @@ -62,7 +62,7 @@ public class AxisPair implements ChartPart { * @param xData * @param yData */ - public <T> Series addSeries(String seriesName, Collection<T> xData, Collection<Number> yData, Collection<Number> errorBars) { + public <T> Series addSeries(String seriesName, Collection<T> xData, Collection<? extends Number> yData, Collection<? extends Number> errorBars) { // Sanity checks if (seriesName == null) { diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java index dd4961b2..acd946c2 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java @@ -74,7 +74,7 @@ public class PlotContentBarChart extends PlotContent { // data points Collection<?> xData = series.getXData(); - Collection<Number> yData = series.getYData(); + Collection<? extends Number> yData = series.getYData(); BigDecimal yMin = getChartPainter().getAxisPair().getyAxis().getMin(); BigDecimal yMax = getChartPainter().getAxisPair().getyAxis().getMax(); @@ -121,7 +121,7 @@ public class PlotContentBarChart extends PlotContent { // System.out.println(yMax); Iterator<?> categoryItr = categories.iterator(); - Iterator<Number> yItr = yData.iterator(); + Iterator<? extends Number> yItr = yData.iterator(); int barCounter = 0; while (categoryItr.hasNext()) { diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentLineChart.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentLineChart.java index 0f538856..33b41523 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentLineChart.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentLineChart.java @@ -65,7 +65,7 @@ public class PlotContentLineChart extends PlotContent { BigDecimal xMin = getChartPainter().getAxisPair().getxAxis().getMin(); BigDecimal xMax = getChartPainter().getAxisPair().getxAxis().getMax(); - Collection<Number> yData = series.getYData(); + Collection<? extends Number> yData = series.getYData(); BigDecimal yMin = getChartPainter().getAxisPair().getyAxis().getMin(); BigDecimal yMax = getChartPainter().getAxisPair().getyAxis().getMax(); @@ -92,14 +92,14 @@ public class PlotContentLineChart extends PlotContent { yMin = new BigDecimal(Math.log10(yMin.doubleValue())); yMax = new BigDecimal(Math.log10(yMax.doubleValue())); } - Collection<Number> errorBars = series.getErrorBars(); + Collection<? extends Number> errorBars = series.getErrorBars(); double previousX = Integer.MIN_VALUE; double previousY = Integer.MIN_VALUE; Iterator<?> xItr = xData.iterator(); - Iterator<Number> yItr = yData.iterator(); - Iterator<Number> ebItr = null; + Iterator<? extends Number> yItr = yData.iterator(); + Iterator<? extends Number> ebItr = null; if (errorBars != null) { ebItr = errorBars.iterator(); } -- GitLab