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