@SuppressWarnings("rawtypes")
  public List<ReportObject> getRedBuildList(String viewName) {
    View view = Jenkins.getInstance().getView(viewName);
    RunList builds = view.getBuilds();
    RunList failedBuilds = builds.failureOnly();
    Set<String> processedProjects = new HashSet<String>();
    List<ReportObject> objects = new LinkedList<ReportObject>();
    @SuppressWarnings("unchecked")
    Iterator<Run> failedBuildIterator = failedBuilds.iterator();
    while (failedBuildIterator.hasNext()) {
      Job parent = failedBuildIterator.next().getParent();
      if (!processedProjects.contains(parent.getFullName())) {
        Run lastBuildCompleted = parent.getLastBuild();
        if (lastBuildCompleted != null && lastBuildCompleted.isBuilding()) {
          lastBuildCompleted = lastBuildCompleted.getPreviousBuild();
        }
        if (parent.getLastFailedBuild() != null
            && lastBuildCompleted != null
            && lastBuildCompleted.getResult().isWorseThan(Result.SUCCESS)
            && (lastBuildCompleted.getAction(VolunteerAction.class) != null)) {
          objects.add(ReportObject.getInstance(parent, lastBuildCompleted));
          processedProjects.add(parent.getFullName());
        }
      } else {
        System.out.println("Already processed parent " + parent.getDisplayName());
      }
    }

    Collections.sort(
        objects,
        new Comparator<ReportObject>() {
          @Override
          public int compare(ReportObject o1, ReportObject o2) {
            return (o2.getFailedBuilds() - o1.getFailedBuilds()) * 10
                + o1.getLastFailedBuildname().compareTo(o2.getLastFailedBuildname());
          }
        });

    return objects;
  }