diff options
Diffstat (limited to 'qpid/java/perftests/visualisation-jfc/src/main')
7 files changed, 127 insertions, 13 deletions
diff --git a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/ChartType.java b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/ChartType.java index 8bddfd1379..ed09f4a77e 100644 --- a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/ChartType.java +++ b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/ChartType.java @@ -21,5 +21,5 @@ package org.apache.qpid.disttest.charting; public enum ChartType { - LINE, LINE3D, BAR, BAR3D, XYLINE + LINE, LINE3D, BAR, BAR3D, XYLINE, STATISTICAL_BAR } diff --git a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/CategoryDataSetBasedChartBuilder.java b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/CategoryDataSetBasedChartBuilder.java index ad33da8311..5617b9c330 100644 --- a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/CategoryDataSetBasedChartBuilder.java +++ b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/CategoryDataSetBasedChartBuilder.java @@ -19,6 +19,7 @@ */ package org.apache.qpid.disttest.charting.chartbuilder; + import org.apache.qpid.disttest.charting.definition.ChartingDefinition; import org.apache.qpid.disttest.charting.definition.SeriesDefinition; import org.apache.qpid.disttest.charting.seriesbuilder.SeriesBuilderCallback; @@ -47,11 +48,10 @@ public abstract class CategoryDataSetBasedChartBuilder extends BaseChartBuilder _seriesBuilder.setSeriesBuilderCallback(new SeriesBuilderCallback() { @Override - public void addDataPointToSeries(SeriesDefinition seriesDefinition, - Object xValue, Object yValue) + public void addDataPointToSeries(SeriesDefinition seriesDefinition, Object[] row) { - String x = String.valueOf(xValue); - double y = Double.parseDouble(yValue.toString()); + String x = String.valueOf(row[0]); + double y = Double.parseDouble(row[1].toString()); dataset.addValue( y, seriesDefinition.getSeriesLegend(), x); } @@ -66,6 +66,7 @@ public abstract class CategoryDataSetBasedChartBuilder extends BaseChartBuilder { // unused } + }); _seriesBuilder.build(chartingDefinition.getSeries()); diff --git a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/ChartBuilderFactory.java b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/ChartBuilderFactory.java index f9d5a5a0df..f4e11a2c4d 100644 --- a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/ChartBuilderFactory.java +++ b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/ChartBuilderFactory.java @@ -39,6 +39,8 @@ public class ChartBuilderFactory return new BarChart3DBuilder(seriesBuilder); case XYLINE: return new XYLineChartBuilder(seriesBuilder); + case STATISTICAL_BAR: + return new StatisticalBarCharBuilder(seriesBuilder); default: throw new IllegalArgumentException("Unknown chart type " + chartType); } diff --git a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/StatisticalBarCharBuilder.java b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/StatisticalBarCharBuilder.java new file mode 100644 index 0000000000..843b57939f --- /dev/null +++ b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/StatisticalBarCharBuilder.java @@ -0,0 +1,108 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.qpid.disttest.charting.chartbuilder; + +import java.awt.Font; + +import org.apache.qpid.disttest.charting.definition.ChartingDefinition; +import org.apache.qpid.disttest.charting.definition.SeriesDefinition; +import org.apache.qpid.disttest.charting.seriesbuilder.SeriesBuilder; +import org.apache.qpid.disttest.charting.seriesbuilder.SeriesBuilderCallback; +import org.jfree.chart.JFreeChart; +import org.jfree.chart.axis.CategoryAxis; +import org.jfree.chart.axis.NumberAxis; +import org.jfree.chart.axis.ValueAxis; +import org.jfree.chart.plot.CategoryPlot; +import org.jfree.chart.plot.PlotOrientation; +import org.jfree.chart.renderer.category.CategoryItemRenderer; +import org.jfree.chart.renderer.category.StatisticalBarRenderer; +import org.jfree.data.general.Dataset; +import org.jfree.data.statistics.DefaultStatisticalCategoryDataset; +import org.jfree.data.statistics.StatisticalCategoryDataset; + +public class StatisticalBarCharBuilder extends BaseChartBuilder +{ + private final SeriesBuilder _seriesBuilder; + + public StatisticalBarCharBuilder(SeriesBuilder seriesBuilder) + { + _seriesBuilder = seriesBuilder; + } + + @Override + public JFreeChart buildChart(ChartingDefinition chartingDefinition) + { + String title = chartingDefinition.getChartTitle(); + String xAxisTitle = chartingDefinition.getXAxisTitle(); + String yAxisTitle = chartingDefinition.getYAxisTitle(); + + final DefaultStatisticalCategoryDataset dataset = new DefaultStatisticalCategoryDataset(); + + _seriesBuilder.setSeriesBuilderCallback(new SeriesBuilderCallback() + { + @Override + public void addDataPointToSeries(SeriesDefinition seriesDefinition, Object[] row) + { + String x = String.valueOf(row[0]); + double mean = Double.parseDouble(row[1].toString()); + double stdDev = Double.parseDouble(row[2].toString()); + dataset.add(mean, stdDev, seriesDefinition.getSeriesLegend(), x); + } + + @Override + public void beginSeries(SeriesDefinition seriesDefinition) + { + // unused + } + + @Override + public void endSeries(SeriesDefinition seriesDefinition) + { + // unused + } + + }); + + _seriesBuilder.build(chartingDefinition.getSeries()); + + JFreeChart chart = createChartImpl(title, xAxisTitle, yAxisTitle, dataset, PLOT_ORIENTATION, SHOW_LEGEND, + SHOW_TOOL_TIPS, SHOW_URLS); + + addCommonChartAttributes(chart, chartingDefinition); + + return chart; + } + + @Override + public JFreeChart createChartImpl(String title, String xAxisTitle, String yAxisTitle, final Dataset dataset, + PlotOrientation plotOrientation, boolean showLegend, boolean showToolTips, boolean showUrls) + { + CategoryAxis xAxis = new CategoryAxis(xAxisTitle); + ValueAxis yAxis = new NumberAxis(yAxisTitle); + CategoryItemRenderer renderer = new StatisticalBarRenderer(); + + CategoryPlot plot = new CategoryPlot((StatisticalCategoryDataset) dataset, xAxis, yAxis, renderer); + + JFreeChart chart = new JFreeChart(title, new Font("Arial", Font.PLAIN, 10), plot, true); + return chart; + } + +} diff --git a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/XYDataSetBasedChartBuilder.java b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/XYDataSetBasedChartBuilder.java index 6814272b8e..8d5332c126 100644 --- a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/XYDataSetBasedChartBuilder.java +++ b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/XYDataSetBasedChartBuilder.java @@ -60,10 +60,10 @@ public abstract class XYDataSetBasedChartBuilder extends BaseChartBuilder @Override public void addDataPointToSeries(SeriesDefinition seriesDefinition, - Object xValue, Object yValue) + Object[] row) { - double x = Double.parseDouble(xValue.toString()); - double y = Double.parseDouble(yValue.toString()); + double x = Double.parseDouble(row[0].toString()); + double y = Double.parseDouble(row[1].toString()); _xyPairs.add(new Double[] {x, y}); } diff --git a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcCsvSeriesBuilder.java b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcCsvSeriesBuilder.java index 8b4c2ab382..a9adce0afc 100644 --- a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcCsvSeriesBuilder.java +++ b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcCsvSeriesBuilder.java @@ -71,14 +71,17 @@ public class JdbcCsvSeriesBuilder implements SeriesBuilder stmt = conn.createStatement(); ResultSet results = stmt.executeQuery(seriesStatement); - + int columnCount = results.getMetaData().getColumnCount(); _callback.beginSeries(seriesDefinition); while (results.next()) { - Object xValue = results.getObject(1); - Object yValue = results.getObject(2); + Object[] row = new Object[columnCount]; + for (int i = 0; i < row.length; i++) + { + row[i] = results.getObject(i+1); + } - _callback.addDataPointToSeries(seriesDefinition, xValue, yValue); + _callback.addDataPointToSeries(seriesDefinition, row); } _callback.endSeries(seriesDefinition); } diff --git a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/SeriesBuilderCallback.java b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/SeriesBuilderCallback.java index 22c99deca0..7e23953fdb 100644 --- a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/SeriesBuilderCallback.java +++ b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/SeriesBuilderCallback.java @@ -24,7 +24,7 @@ import org.apache.qpid.disttest.charting.definition.SeriesDefinition; public interface SeriesBuilderCallback { public void beginSeries(SeriesDefinition seriesDefinition); - public void addDataPointToSeries(SeriesDefinition seriesDefinition, Object xValue, Object yValue); + public void addDataPointToSeries(SeriesDefinition seriesDefinition, Object[] row); public void endSeries(SeriesDefinition seriesDefinition); } |
