package hudson.plugins.rubyMetrics.flog; import hudson.model.AbstractBuild; import hudson.model.HealthReport; import hudson.plugins.rubyMetrics.AbstractRubyMetricsBuildAction; import hudson.plugins.rubyMetrics.flog.model.FlogBuildResults; import hudson.plugins.rubyMetrics.flog.model.FlogFileResults; import hudson.util.ChartUtil; import hudson.util.DataSetBuilder; import hudson.util.ChartUtil.NumberOnlyBuildLabel; import java.math.BigDecimal; import java.math.MathContext; import java.util.Map; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.plot.CategoryPlot; public class FlogBuildAction extends AbstractRubyMetricsBuildAction { private final FlogBuildResults results; public FlogBuildAction(AbstractBuild<?, ?> owner, FlogBuildResults results) { super(owner); this.results = results; } @Override protected DataSetBuilder<String, NumberOnlyBuildLabel> getDataSetBuilder() { DataSetBuilder<String, ChartUtil.NumberOnlyBuildLabel> dsb = new DataSetBuilder<String, ChartUtil.NumberOnlyBuildLabel>(); for (FlogBuildAction action = this; action != null; action = action.getPreviousResult()) { ChartUtil.NumberOnlyBuildLabel label = new ChartUtil.NumberOnlyBuildLabel(action.owner); dsb.add(results.getTotal(), "Total score", label); dsb.add(results.getAverage(), "Average score", label); } return dsb; } @Override protected NumberAxis getRangeAxis(CategoryPlot plot) { NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); rangeAxis.setUpperBound(new BigDecimal(results.getTotal()).round(MathContext.DECIMAL32).intValue() + 20); rangeAxis.setLowerBound(0); return rangeAxis; } public FlogBuildResults getResults() { return results; } public String getDisplayName() { return "Flog report"; } public String getUrlName() { return "flog"; } }