Class TextSearchRequestor

    • Constructor Detail

      • TextSearchRequestor

        public TextSearchRequestor()
    • Method Detail

      • beginReporting

        public void beginReporting()
        Notification sent before starting the search action. Typically, this would tell a search requestor to clear previously recorded search results.

        The default implementation of this method does nothing. Subclasses may override.

      • endReporting

        public void endReporting()
        Notification sent after having completed the search action. Typically, this would tell a search requestor collector that no more results will be forthcoming in this search.

        The default implementation of this method does nothing. Subclasses may override.

      • acceptFile

        public boolean acceptFile​(IFile file)
                           throws CoreException
        Notification sent before search starts in the given file. This method is called for all files that are contained in the search scope. Implementors can decide if the file content should be searched for search matches or not.

        The default behaviour is to search the file for matches.

        If canRunInParallel() returns true, this method may be called in parallel by different threads, so any access or updates to collections of results or other shared state must be synchronized.

        Parameters:
        file - the file resource to be searched.
        Returns:
        If false, no pattern matches will be reported for the content of this file.
        Throws:
        CoreException - implementors can throw a CoreException if accessing the resource fails or another problem prevented the processing of the search match.
      • reportBinaryFile

        public boolean reportBinaryFile​(IFile file)
        Notification sent that a file might contain binary context. It is the choice of the search engine to report binary files and it is the heuristic of the search engine to decide that a file could be binary. Implementors can decide if the file content should be searched for search matches or not.

        This call is sent after calls {link acceptFile(IFile) that return true and before any matches reported for this file with acceptPatternMatch(TextSearchMatchAccess).

        If canRunInParallel() returns true, this method may be called in parallel by different threads, so any access or updates to collections of results or other shared state must be synchronized.

        The default behaviour is to skip binary files

        Parameters:
        file - the file that might be binary
        Returns:
        If false, no pattern matches will be reported for the content of this file.
      • acceptPatternMatch

        public boolean acceptPatternMatch​(TextSearchMatchAccess matchAccess)
                                   throws CoreException
        Accepts the given search match and decides if the search should continue for this file.

        If canRunInParallel() returns true, this method may be called in parallel by different threads, so any access or updates to collections of results or other shared state must be synchronized.

        Parameters:
        matchAccess - gives access to information of the match found. The matchAccess is not a value object. Its value might change after this method is finished, and the element might be reused.
        Returns:
        If false is returned no further matches will be reported for this file.
        Throws:
        CoreException - implementors can throw a CoreException if accessing the resource fails or another problem prevented the processing of the search match.
      • canRunInParallel

        public boolean canRunInParallel()
        Reports whether this TextSearchRequestor supports executing the text search algorithm in parallel.

        Subclasses should override this method and return true if they desire faster search results and their acceptFile(IFile), reportBinaryFile(IFile) and acceptPatternMatch(TextSearchMatchAccess) methods are thread-safe.

        The default behavior is to not use parallelism when running a text search.

        Returns:
        If true, the text search will be run in parallel.
        Since:
        3.10