예제 #1
0
  /**
   * Handles the configuration submission.
   *
   * <p>Load view-specific properties here.
   */
  @Override
  protected void submit(StaplerRequest req) throws ServletException, FormException, IOException {
    jobNames.clear();
    for (TopLevelItem item : Hudson.getInstance().getItems()) {
      if (req.getParameter(item.getName()) != null) jobNames.add(item.getName());
    }

    if (req.getParameter("useincluderegex") != null) {
      includeRegex = Util.nullify(req.getParameter("includeRegex"));
      if (includeRegex == null) includePattern = null;
      else includePattern = Pattern.compile(includeRegex);
    } else {
      includeRegex = null;
      includePattern = null;
    }

    if (columns == null) {
      columns = new DescribableList<ListViewColumn, Descriptor<ListViewColumn>>(Saveable.NOOP);
    }
    columns.rebuildHetero(req, req.getSubmittedForm(), ListViewColumn.all(), "columns");

    if (jobFilters == null) {
      jobFilters = new DescribableList<ViewJobFilter, Descriptor<ViewJobFilter>>(Saveable.NOOP);
    }
    jobFilters.rebuildHetero(req, req.getSubmittedForm(), ViewJobFilter.all(), "jobFilters");

    String filter = Util.fixEmpty(req.getParameter("statusFilter"));
    statusFilter = filter != null ? "1".equals(filter) : null;
  }
예제 #2
0
  /**
   * Returns a read-only view of all {@link Job}s in this view.
   *
   * <p>This method returns a separate copy each time to avoid concurrent modification issue.
   */
  public synchronized List<TopLevelItem> getItems() {
    SortedSet<String> names = new TreeSet<String>(jobNames);

    if (includePattern != null) {
      for (TopLevelItem item : Hudson.getInstance().getItems()) {
        String itemName = item.getName();
        if (includePattern.matcher(itemName).matches()) {
          names.add(itemName);
        }
      }
    }

    List<TopLevelItem> items = new ArrayList<TopLevelItem>(names.size());
    for (String n : names) {
      TopLevelItem item = Hudson.getInstance().getItem(n);
      // Add if no status filter or filter matches enabled/disabled status:
      if (item != null
          && (statusFilter == null
              || !(item instanceof AbstractProject)
              || ((AbstractProject) item).isDisabled() ^ statusFilter)) items.add(item);
    }

    // check the filters
    Iterable<ViewJobFilter> jobFilters = getJobFilters();
    List<TopLevelItem> allItems = Hudson.getInstance().getItems();
    for (ViewJobFilter jobFilter : jobFilters) {
      items = jobFilter.filter(items, allItems, this);
    }

    return items;
  }
예제 #3
0
  static LazyTopLevelItem newLazyTopLevelItem(
      ItemGroup parent, File configFileDir, TopLevelItem item) {

    // Sanity check
    if (item instanceof LazyTopLevelItem) {
      throw new IllegalStateException("Attempting to wrap LazyTopLevelItem " + item.getName());
    }

    final XmlFile configFile = getConfigFile(configFileDir);

    return new LazyTopLevelItem(configFile, parent, configFileDir.getName(), item);
  }
예제 #4
0
 public boolean contains(TopLevelItem item) {
   return jobNames.contains(item.getName());
 }