Class TextMatcherEditor<E>

  • All Implemented Interfaces:
    MatcherEditor<E>
    Direct Known Subclasses:
    SearchEngineTextMatcherEditor, TextComponentMatcherEditor

    public class TextMatcherEditor<E>
    extends AbstractMatcherEditor<E>
    A matcher editor that matches Objects that contain a filter text string. This TextMatcherEditor is not coupled with any UI component that allows the user to edit the filter text. That job is left to subclasses. This matcher editor is fully concrete, and may be used directly by headless applications.

    The TextMatcherEditor requires that either a TextFilterator be specified in its constructor, or that every Object to be matched implements the TextFilterable interface. These are used to extract the searchable Strings for each Object.

    TextMatcherEditor is able to operate in one of three modes.

    • CONTAINS will produce Matcher objects that test if at least one searchable string for an Object contains one of the filter strings anywhere within itself.
    • STARTS_WITH will produce Matcher objects that test if at least one searchable string for an Object begins with at least one of the filter strings.
    • REGULAR_EXPRESSION will produce Matcher objects that test if at least one searchable string for an Object matches, using regular expression rules, at least one of the filter strings.

    TextMatcherEditor is able to operate with one of two strategies.

    • IDENTICAL_STRATEGY defines a text match as a precise character-for-character match between the filters and the text.
    • NORMALIZED_STRATEGY defines a text match more leniently for Latin-character based languages. Specifically, diacritics are stripped from all Latin characters before comparisons are made. Consequently, filters like "resume" match words like "r�sum�".
    Author:
    James Lemieux, Jesse Wilson
    • Field Detail

      • CONTAINS

        public static final int CONTAINS
        Matching mode where items are considered a match if at least one of the filter strings extracted from an object contains one of the given search strings.
        See Also:
        Constant Field Values
      • STARTS_WITH

        public static final int STARTS_WITH
        Matching mode where items are considered a match if at least one of the filter strings extracted from an object starts with one of the given search strings.
        See Also:
        Constant Field Values
      • REGULAR_EXPRESSION

        public static final int REGULAR_EXPRESSION
        Matching mode where items are considered a match using a Matcher produced by compiling a regular expression into Pattern.
        See Also:
        Constant Field Values
      • EXACT

        public static final int EXACT
        Matching mode where items are considered a match if they are an exact character for character match with at least one of the filter strings.
        See Also:
        Constant Field Values
      • IDENTICAL_STRATEGY

        public static final java.lang.Object IDENTICAL_STRATEGY
        Character comparison strategy that assumes all characters can be compared directly as though they are ASCII. This implies there is no fuzzy matching with this strategy - each character must be precisely matched.
      • NORMALIZED_STRATEGY

        public static final java.lang.Object NORMALIZED_STRATEGY
        Character comparison strategy that assumes all Latin characters should have their diacritical marks stripped in an effort to normalize words to their most basic form. This allows a degree of fuzziness within the matching algorithm, since words like "resume" will match similar words with diacritics like "r�sum�". This strategy is particularly useful when the text to be searched contains text like names in foreign languages, and your application would like search terms such as "Muller" to match the actual native spelling: "M�ller".
    • Constructor Detail

      • TextMatcherEditor

        public TextMatcherEditor​(TextFilterator<? super E> filterator)
        Creates a TextMatcherEditor that matches Objects using the specified TextFilterator to get the Strings to search.
        Parameters:
        filterator - the object that will extract filter Strings from each object in the source; null indicates the list elements implement TextFilterable
    • Method Detail

      • getFilterator

        public TextFilterator<? super E> getFilterator()
        Get the filterator used to extract Strings from the matched elements.
      • setFilterator

        public void setFilterator​(TextFilterator<? super E> filterator)
        Set the filterator used to extract Strings from the matched elements.
      • setStrategy

        public void setStrategy​(java.lang.Object strategy)
        Modify the character matching strategy of this TextMatcherEditor to one of the predefined strategies. See the documentation for each constant in order contrast the strategies.
        Parameters:
        strategy - either IDENTICAL_STRATEGY or NORMALIZED_STRATEGY
      • getCurrentTextMatcher

        protected ca.odell.glazedlists.impl.filter.TextMatcher<E> getCurrentTextMatcher()
        Return the current Matcher if it is a TextMatcher or null if no current Matcher exists or is something other than a TextMatcher.
      • setFilterText

        public void setFilterText​(java.lang.String[] newFilters)
        Adjusts the filters of this TextMatcherEditor and fires a change to the Matcher.
        Parameters:
        newFilters - the Strings representing all of the filter values
      • setTextMatcher

        protected void setTextMatcher​(ca.odell.glazedlists.impl.filter.TextMatcher<E> newMatcher)
        This method replaces the current Matcher in this TextMatcherEditor with the newMatcher if it is different. If the current Matcher is also a TextMatcher then many comparisons between the two in order to determine if the new Matcher is a strict constrainment or relaxation of the current TextMatcher.
        Parameters:
        newMatcher - new TextMatcher which defines the text filtering logic