Mercurial > hg > thermostat-ng > agent
changeset 2481:bcf729e138c8
[Byteman] Refactor GraphDataset.
Reviewed-by: aazores
Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2016-October/021298.html
author | Severin Gehwolf <sgehwolf@redhat.com> |
---|---|
date | Mon, 17 Oct 2016 20:50:14 +0200 |
parents | e2e5b4797c2a |
children | e8cf2946b207 |
files | vm-byteman/client-swing/src/main/java/com/redhat/thermostat/vm/byteman/client/swing/internal/GraphDataset.java vm-byteman/client-swing/src/main/java/com/redhat/thermostat/vm/byteman/client/swing/internal/SwingVmBytemanView.java vm-byteman/client-swing/src/test/java/com/redhat/thermostat/vm/byteman/client/swing/internal/GraphDatasetTest.java |
diffstat | 3 files changed, 39 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/vm-byteman/client-swing/src/main/java/com/redhat/thermostat/vm/byteman/client/swing/internal/GraphDataset.java Tue Sep 20 19:07:51 2016 +0200 +++ b/vm-byteman/client-swing/src/main/java/com/redhat/thermostat/vm/byteman/client/swing/internal/GraphDataset.java Mon Oct 17 20:50:14 2016 +0200 @@ -98,10 +98,11 @@ String ykey; CoordinateType xtype; CoordinateType ytype; - private static CategoryDataset emptyCategoryDataset = new DefaultCategoryDataset(); - private static PieDataset emptyPieDataset = new DefaultPieDataset(); - private static XYDataset emptyXYDataset = new XYSeriesCollection(); - private static Number frequencyUnit = Long.valueOf(1); + private static final CategoryDataset emptyCategoryDataset = new DefaultCategoryDataset(); + private static final PieDataset emptyPieDataset = new DefaultPieDataset(); + private static final XYDataset emptyXYDataset = new XYSeriesCollection(); + private static final CategoryTimePlotData emptyCategoryTimePlotData = new CategoryTimePlotData(emptyXYDataset, new String[] {}); + private static final Number frequencyUnit = Long.valueOf(1); public GraphDataset(List<BytemanMetric> metrics, String xkey, String ykey, String filter, String value) { @@ -274,10 +275,10 @@ return pieDataset; } - public XYDataset getCategoryTimePlot(String[][] symbolsReturn) + public CategoryTimePlotData getCategoryTimePlot() { if (xtype != CoordinateType.TIME || ytype != CoordinateType.CATEGORY) { - return emptyXYDataset; + return emptyCategoryTimePlotData; } // we need to display changing category state over time @@ -308,12 +309,10 @@ symbols[value] = key; } - symbolsReturn[0] = symbols; - XYSeriesCollection xycollection = new XYSeriesCollection(); xycollection.addSeries(xyseries); - return xycollection; + return new CategoryTimePlotData(xycollection, symbols); } public String getXLabel() { @@ -398,4 +397,23 @@ } return value; } + + static class CategoryTimePlotData { + + private final XYDataset dataSet; + private final String[] symbols; + + private CategoryTimePlotData(XYDataset dataSet, String[] yLegend) { + this.dataSet = dataSet; + this.symbols = yLegend; + } + + XYDataset getXYDataSet() { + return dataSet; + } + + String[] getSymbols() { + return symbols; + } + } } \ No newline at end of file
--- a/vm-byteman/client-swing/src/main/java/com/redhat/thermostat/vm/byteman/client/swing/internal/SwingVmBytemanView.java Tue Sep 20 19:07:51 2016 +0200 +++ b/vm-byteman/client-swing/src/main/java/com/redhat/thermostat/vm/byteman/client/swing/internal/SwingVmBytemanView.java Mon Oct 17 20:50:14 2016 +0200 @@ -113,6 +113,7 @@ import com.redhat.thermostat.common.utils.LoggingUtils; import com.redhat.thermostat.shared.locale.LocalizedString; import com.redhat.thermostat.shared.locale.Translate; +import com.redhat.thermostat.vm.byteman.client.swing.internal.GraphDataset.CategoryTimePlotData; import com.redhat.thermostat.vm.byteman.client.swing.internal.GraphDataset.CoordinateType; import com.redhat.thermostat.vm.byteman.client.swing.internal.PredefinedKeysMapper.MapDirection; import com.redhat.thermostat.vm.byteman.common.BytemanMetric; @@ -957,14 +958,14 @@ // // we create a numeric time series plot with a mapping // from numeric values to symbolic keys - String[][] symbolsReturn = new String[1][]; - XYDataset xydataset = dataset.getCategoryTimePlot(symbolsReturn); + CategoryTimePlotData categoryData = dataset.getCategoryTimePlot(); + XYDataset xydataset = categoryData.getXYDataSet(); graph = ChartFactory.createXYStepChart(BYTEMAN_CHART_LABEL, xlabel, ylabel, xydataset, PlotOrientation.VERTICAL, true, true, false); // now we change the range axis of the xyplot to draw symbols in // place of numeric values - graph.getXYPlot().setRangeAxis(0, new SymbolAxis(ykey, symbolsReturn[0])); + graph.getXYPlot().setRangeAxis(0, new SymbolAxis(ykey, categoryData.getSymbols())); } else { // draw a graph of numeric value against time XYDataset xydataset = dataset.getXYDataset();
--- a/vm-byteman/client-swing/src/test/java/com/redhat/thermostat/vm/byteman/client/swing/internal/GraphDatasetTest.java Tue Sep 20 19:07:51 2016 +0200 +++ b/vm-byteman/client-swing/src/test/java/com/redhat/thermostat/vm/byteman/client/swing/internal/GraphDatasetTest.java Mon Oct 17 20:50:14 2016 +0200 @@ -48,6 +48,7 @@ import org.junit.Test; import com.redhat.thermostat.common.Pair; +import com.redhat.thermostat.vm.byteman.client.swing.internal.GraphDataset.CategoryTimePlotData; import com.redhat.thermostat.vm.byteman.client.swing.internal.GraphDataset.CoordinateType; import com.redhat.thermostat.vm.byteman.common.BytemanMetric; @@ -373,18 +374,17 @@ final List<BytemanMetric> empty = Collections.emptyList(); // x => marker GraphDataset dataset = new GraphDataset(empty, GraphDataset.MARKER_KEY, GraphDataset.TIMESTAMP_KEY, null, null); - XYDataset actualDataset = dataset.getCategoryTimePlot(new String[][] { {""} }); - assertEquals(0, actualDataset.getSeriesCount()); + CategoryTimePlotData actualDataset = dataset.getCategoryTimePlot(); + assertEquals(0, actualDataset.getXYDataSet().getSeriesCount()); // y => timestamp dataset = new GraphDataset(empty, GraphDataset.TIMESTAMP_KEY, GraphDataset.TIMESTAMP_KEY, null, null); - actualDataset = dataset.getCategoryTimePlot(new String[][] { {""} }); - assertEquals(0, actualDataset.getSeriesCount()); + actualDataset = dataset.getCategoryTimePlot(); + assertEquals(0, actualDataset.getXYDataSet().getSeriesCount()); } @Test public void testCategoryTimePlotBasic() { - final String[][] retvals = new String[][] { {""} }; final String evenMarker = "even_marker"; final String oddMarker = "odd_marker"; final int numMetrics = 5; @@ -413,7 +413,8 @@ }); GraphDataset dataset = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, GraphDataset.MARKER_KEY, null, null); - XYDataset actualDataset = dataset.getCategoryTimePlot(retvals); + CategoryTimePlotData actualData = dataset.getCategoryTimePlot(); + XYDataset actualDataset = actualData.getXYDataSet(); assertEquals("Expected one series, exactly", 1, actualDataset.getSeriesCount()); assertEquals(5, actualDataset.getItemCount(0)); for (int i = 0; i < numMetrics; i++) { @@ -434,7 +435,7 @@ } // verify correct return values have been set - List<String> retvalList = Arrays.asList(retvals[0]); + List<String> retvalList = Arrays.asList(actualData.getSymbols()); Collections.sort(retvalList); assertEquals(evenMarker, retvalList.get(0)); assertEquals(oddMarker, retvalList.get(1));