package hudson.plugins.rubymetricfu.dataset; import hudson.plugins.rubymetricfu.*; import hudson.plugins.rubymetricfu.model.MetricFuResults; import hudson.util.DataSetBuilder; import hudson.util.ChartUtil.NumberOnlyBuildLabel; import hudson.util.ChartUtil; import org.jfree.data.category.CategoryDataset; /** * * @author josephwilk */ public abstract class AbstractMetricDataSetBuilder { public CategoryDataset buildDataSet(RubyMetricsBuildAction action) { DataSetBuilder<String, ChartUtil.NumberOnlyBuildLabel> dsb = new DataSetBuilder<String, ChartUtil.NumberOnlyBuildLabel>(); for (RubyMetricsBuildAction a = action; a != null; a = a.getPreviousResult()) { ChartUtil.NumberOnlyBuildLabel label = new ChartUtil.NumberOnlyBuildLabel(a.getOwner()); MetricFuResults results = a.getResults(); if (results != null){ String metricScoreString = extractMetric(results); if (metricScoreString != null){ Float metricScore = Float.parseFloat(metricScoreString); dsb.add(metricScore, legend(), label); } } } return dsb.build(); } protected abstract String extractMetric(MetricFuResults results); protected abstract String legend(); }