All Downloads are FREE. Search and download functionalities are using the official Maven repository.

hudson.search.SearchIndexBuilder Maven / Gradle / Ivy

The newest version!
/*******************************************************************************
 *
 * Copyright (c) 2004-2009 Oracle Corporation.
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 * 
 *    Kohsuke Kawaguchi
 *
 *
 *******************************************************************************/ 

package hudson.search;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Kohsuke Kawaguchi
 */
public final class SearchIndexBuilder {

    private final List items = new ArrayList();
    private final List indices = new ArrayList();

    /**
     * Adds all {@link QuickSilver}-annotated properties to the search index.
     */
    public SearchIndexBuilder addAllAnnotations(SearchableModelObject o) {
        ParsedQuickSilver.get(o.getClass()).addTo(this, o);
        return this;
    }

    /**
     * Short for {@code add(urlAsWellAsName,urlAsWellAsName)}
     */
    public SearchIndexBuilder add(String urlAsWellAsName) {
        return add(urlAsWellAsName, urlAsWellAsName);
    }

    /**
     * Adds a search index under the keyword 'name' to the given URL.
     *
     * @param url Relative URL from the source of the search index.
     */
    public SearchIndexBuilder add(String url, String name) {
        items.add(SearchItems.create(name, url));
        return this;
    }

    public SearchIndexBuilder add(String url, String... names) {
        for (String name : names) {
            add(url, name);
        }
        return this;
    }

    public SearchIndexBuilder add(SearchItem item) {
        items.add(item);
        return this;
    }

    public SearchIndexBuilder add(String url, SearchableModelObject searchable, String name) {
        items.add(SearchItems.create(name, url, searchable));
        return this;
    }

    public SearchIndexBuilder add(String url, SearchableModelObject searchable, String... names) {
        for (String name : names) {
            add(url, searchable, name);
        }
        return this;
    }

    public SearchIndexBuilder add(SearchIndex index) {
        this.indices.add(index);
        return this;
    }

    public SearchIndexBuilder add(SearchIndexBuilder index) {
        return add(index.make());
    }

    public SearchIndex make() {
        SearchIndex r = new FixedSet(items);
        for (SearchIndex index : indices) {
            r = new UnionSearchIndex(r, index);
        }
        return r;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy