package hudson.plugins.view.dashboard.stats; import hudson.Extension; import hudson.model.BallColor; import hudson.model.Descriptor; import hudson.model.Hudson; import hudson.model.Job; import hudson.model.Run; import hudson.model.TopLevelItem; import hudson.plugins.view.dashboard.DashboardPortlet; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.SortedMap; import java.util.TreeMap; import org.kohsuke.stapler.DataBoundConstructor; /** * Build statistics - number of builds with given build status * * @author Vojtech Juranek */ public class StatBuilds extends DashboardPortlet{ @DataBoundConstructor public StatBuilds(String name) { super(name); } public Map<BallColor, Integer> getBuildStat(List<TopLevelItem> jobs) { int nBuilds = 0; SortedMap<BallColor, Integer> colStatBuilds = new TreeMap<BallColor, Integer>(); for (BallColor color : BallColor.values()) { colStatBuilds.put(color.noAnime(), 0); } //loop over jobs for (TopLevelItem job : jobs) { if (job instanceof Job) { // Build statistics List<Run> builds = ((Job) job).getBuilds(); if (builds.isEmpty()) { colStatBuilds.put(BallColor.GREY.noAnime(), colStatBuilds .get(BallColor.GREY) + 1); nBuilds++; } else { //loop over builds for (Run build : builds) { BallColor bColor = build.getIconColor(); if(bColor != null && bColor.noAnime() != null && colStatBuilds.get(bColor) != null){ colStatBuilds.put(bColor.noAnime(), colStatBuilds .get(bColor) + 1); nBuilds++; } } } } } return colStatBuilds; } @Extension public static class DescriptorImpl extends Descriptor<DashboardPortlet> { @Override public String getDisplayName() { return "Build statistics"; } } }