Este articulo pertenece a Serie de tutoriales Eclipse JDT.
El motor de búsqueda JDT Java proporciona una función para buscar rápidamente proyectos Java en el espacio de trabajo para elementos Java, como referencias de métodos, declaraciones de campo, implementadores de una interfaz, etc.
Hay principalmente 4 pasos involucrados en una búsqueda:
- Crea un patrón de búsqueda
- Crea un alcance de búsqueda
- Definir recopilador de resultados
- Iniciar busqueda
El siguiente ejemplo sigue esos pasos. Hay más opciones para cada uno de esos pasos; consulte la referencia para conocer más flexibilidades.
public Object execute(ExecutionEvent event) throws ExecutionException { // step 1: Create a search pattern // search methods having "abcde" as name SearchPattern pattern = SearchPattern.createPattern("abcde", IJavaSearchConstants.METHOD, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_EXACT_MATCH); // step 2: Create search scope // IJavaSearchScope scope = SearchEngine.createJavaSearchScope(packages); IJavaSearchScope scope = SearchEngine.createWorkspaceScope(); // step3: define a result collector SearchRequestor requestor = new SearchRequestor() { public void acceptSearchMatch(SearchMatch match) { System.out.println(match.getElement()); } }; // step4: start searching SearchEngine searchEngine = new SearchEngine(); try { searchEngine.search(pattern, new SearchParticipant[] { SearchEngine .getDefaultSearchParticipant() }, scope, requestor, null); } catch (CoreException e) { e.printStackTrace(); } return null; } |
Resultado:
Puede crear un alcance de búsqueda utilizando el método createJavaSearchScope, luego necesita obtener los parámetros necesarios.
public Object execute2(ExecutionEvent event) throws ExecutionException { IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); IProject[] projects = root.getProjects(); for (IProject project : projects) { IJavaProject javaProject = JavaCore.create(project); IPackageFragment[] packages = null; try { packages = javaProject.getPackageFragments(); } catch (JavaModelException e) { e.printStackTrace(); } // step 1: Create a search pattern SearchPattern pattern = SearchPattern.createPattern("abcde", IJavaSearchConstants.METHOD, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_EXACT_MATCH); // step 2: Create search scope IJavaSearchScope scope = SearchEngine.createJavaSearchScope(packages); // step3: define a result collector SearchRequestor requestor = new SearchRequestor() { public void acceptSearchMatch(SearchMatch match) { System.out.println(match.getElement()); } }; // step4: start searching SearchEngine searchEngine = new SearchEngine(); try { searchEngine.search(pattern, new SearchParticipant[] { SearchEngine .getDefaultSearchParticipant() }, scope, requestor, null); } catch (CoreException e) { System.out.println("exception"); e.printStackTrace(); } } return null; } |
Referencias:
1. Doc para motor de búsqueda de Java
2. Tutorial de EclipseCon