package hudson.plugins.view.dashboard.core;
import hudson.Extension;
import hudson.model.Descriptor;
import hudson.model.Job;
import hudson.model.Result;
import hudson.model.Run;
import hudson.plugins.view.dashboard.DashboardPortlet;
import hudson.views.JobColumn;
import hudson.views.ListViewColumn;
import hudson.views.StatusColumn;
import hudson.views.WeatherColumn;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import org.kohsuke.stapler.DataBoundConstructor;
/**
* Portlet display a list of unstable (or worse) jobs in a simple
* tabular format.
*
* @author Peter Hayes
*/
public class UnstableJobsPortlet extends DashboardPortlet {
private static final Collection<ListViewColumn> COLUMNS =
Arrays.asList(new StatusColumn(), new WeatherColumn(), new JobColumn());
@DataBoundConstructor
public UnstableJobsPortlet(String name) {
super(name);
}
/**
* Given a list of all jobs, return just those that are unstable or worse.
*/
public Collection<Job> getUnstableJobs(Collection<Job> allJobs) {
ArrayList<Job> unstableJobs = new ArrayList<Job>();
for (Job job : allJobs) {
Run run = job.getLastCompletedBuild();
if (run != null && Result.UNSTABLE.isBetterOrEqualTo(run.getResult())) {
unstableJobs.add(job);
}
}
return unstableJobs;
}
public Collection<ListViewColumn> getColumns() {
return COLUMNS;
}
@Extension
public static class DescriptorImpl extends Descriptor<DashboardPortlet> {
@Override
public String getDisplayName() {
return "Unstable Jobs";
}
}
}