package eu.choreos.vv.chart.creator;
import java.util.List;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import eu.choreos.vv.aggregations.Percentile;
import eu.choreos.vv.chart.LineChart;
import eu.choreos.vv.data.ExperimentReport;
import eu.choreos.vv.data.LineData;
import eu.choreos.vv.data.PlotData;
public class PercentileChartCreator implements ChartCreator {
Percentile function;
public PercentileChartCreator(int percentile) {
function = new Percentile(percentile);
}
@Override
public PlotData createPlotData(ExperimentReport report, int paramIdx) {
LineData aggregation = new LineData();
aggregation.setName(report.getName().toString());
for (Number index : report.keySet()) {
aggregation.put(report.get(index).getParameters().get(paramIdx).doubleValue(), // (Double)
// index,
function.aggregate(report.get(index).getMeasurements("responseTime")));
}
return aggregation;
}
@Override
public ChartPanel createChart(List<PlotData> plotData, String title, String xLabel, String yLabel) {
XYSeriesCollection dataset = new XYSeriesCollection();
for (PlotData report : plotData) {
createDataset(dataset, (LineData) report);
}
return LineChart.createChart(title, plotData, xLabel, yLabel, dataset, new XYLineAndShapeRenderer(true, true));
}
private static void createDataset(XYSeriesCollection dataset, LineData report) {
XYSeries series = new XYSeries(report.getName());
for (Double x : report.keySet()) {
series.add(x, report.get(x));
}
dataset.addSeries(series);
}
}