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

hudson.search.SuggestedItem 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;

/**
 * One item of a search result.
 *
 * @author Kohsuke Kawaguchi
 */
public class SuggestedItem {

    private final SuggestedItem parent;
    //TODO: review and check whether we can do it private
    public final SearchItem item;
    private String path;

    public SuggestedItem(SearchItem top) {
        this(null, top);
    }

    public SuggestedItem(SuggestedItem parent, SearchItem item) {
        this.parent = parent;
        this.item = item;
    }

    public SearchItem getItem() {
        return item;
    }

    public String getPath() {
        if (path != null) {
            return path;
        }
        if (parent == null) {
            return path = item.getSearchName();
        } else {
            StringBuilder buf = new StringBuilder();
            getPath(buf);
            return path = buf.toString();
        }
    }

    private void getPath(StringBuilder buf) {
        if (parent == null) {
            buf.append(item.getSearchName());
        } else {
            parent.getPath(buf);
            buf.append(' ').append(item.getSearchName());
        }
    }

    /**
     * Gets the URL to this item.
     *
     * @return URL that starts with '/' but doesn't end with '/'. The path is
     * the combined path from the {@link SearchIndex} where the search started
     * to the final item found. Thus to convert to the actual URL, the caller
     * would need to prepend the URL of the object where the search started.
     */
    public String getUrl() {
        StringBuilder buf = new StringBuilder();
        getUrl(buf);
        return buf.toString();
    }

    private void getUrl(StringBuilder buf) {
        if (parent != null) {
            parent.getUrl(buf);
        }
        String f = item.getSearchUrl();
        if (f.startsWith("/")) {
            buf.setLength(0);
            buf.append(f);
        } else {
            if (buf.length() == 0 || buf.charAt(buf.length() - 1) != '/') {
                buf.append('/');
            }
            buf.append(f);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy