/******************************************************************************* * Copyright (c) 2000, 2009 IBM Corporation and others. * 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jdt.core.search; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jdt.core.IJavaElement; /** * A <code>IJavaSearchResultCollector</code> collects search results from a <code>search</code> * query to a <code>SearchEngine</code>. Clients must implement this interface and pass * an instance to the <code>search(...)</code> methods. When a search starts, the <code>aboutToStart()</code> * method is called, then 0 or more call to <code>accept(...)</code> are done, finally the * <code>done()</code> method is called. * <p> * Results provided to this collector may be accurate - in this case they have an <code>EXACT_MATCH</code> accuracy - * or they might be potential matches only - they have a <code>POTENTIAL_MATCH</code> accuracy. This last * case can occur when a problem prevented the <code>SearchEngine</code> from resolving the match. * </p> * <p> * The order of the results is unspecified. Clients must not rely on this order to display results, * but they should sort these results (for example, in syntactical order). * <p> * The <code>IJavaSearchResultCollector</code> is also used to provide a progress monitor to the * <code>SearchEngine</code>. * </p> * <p> * Clients may implement this interface. * </p> * * @see SearchEngine * @deprecated Since 3.0, the class * {@link org.eclipse.jdt.core.search.SearchRequestor} replaces this interface. */ public interface IJavaSearchResultCollector { /** * The search result corresponds exactly to the search pattern. * * @deprecated Use {@link SearchMatch#A_ACCURATE} instead. */ int EXACT_MATCH = 0; /** * The search result is potentially a match for the search pattern, * but a problem prevented the search engine from being more accurate * (typically because of the classpath was not correctly set). * * @deprecated Use {@link SearchMatch#A_INACCURATE} instead. */ int POTENTIAL_MATCH = 1; /** * Called before the actual search starts. * * @deprecated Replaced by {@link SearchRequestor#beginReporting()}. */ public void aboutToStart(); /** * Accepts the given search result. * * @param resource the resource in which the match has been found * @param start the start position of the match, -1 if it is unknown * @param end the end position of the match, -1 if it is unknown; * the ending offset is exclusive, meaning that the actual range of characters * covered is <code>[start, end]</code> * @param enclosingElement the Java element that contains the character range * <code>[start, end]</code>; the value can be <code>null</code> indicating that * no enclosing Java element has been found * @param accuracy the level of accuracy the search result has; either * <code>EXACT_MATCH</code> or <code>POTENTIAL_MATCH</code> * @exception CoreException if this collector had a problem accepting the search result * @deprecated Replaced by {@link SearchRequestor#acceptSearchMatch(SearchMatch)}. */ public void accept( IResource resource, int start, int end, IJavaElement enclosingElement, int accuracy) throws CoreException; /** * Called when the search has ended. * * @deprecated Replaced by {@link SearchRequestor#endReporting()}. */ public void done(); /** * Returns the progress monitor used to report progress. * * @return a progress monitor or null if no progress monitor is provided */ public IProgressMonitor getProgressMonitor(); }