Class SelectorUtils


  • public final class SelectorUtils
    extends java.lang.Object

    This is a utility class used by selectors and DirectoryScanner. The functionality more properly belongs just to selectors, but unfortunately DirectoryScanner exposed these as protected methods. Thus we have to support any subclasses of DirectoryScanner that may access these methods.

    This is a Singleton.

    Since:
    1.5
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String DEEP_TREE_MATCH
      The pattern that matches an arbitrary number of directories.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static SelectorUtils getInstance()
      Retrieves the instance of the Singleton.
      static boolean hasWildcards​(java.lang.String input)
      Tests if a string contains stars or question marks
      static boolean isOutOfDate​(java.io.File src, java.io.File target, int granularity)
      Returns dependency information on these two files.
      static boolean isOutOfDate​(Resource src, Resource target, int granularity)
      Returns dependency information on these two resources.
      static boolean isOutOfDate​(Resource src, Resource target, long granularity)
      Returns dependency information on these two resources.
      static boolean match​(java.lang.String pattern, java.lang.String str)
      Tests whether or not a string matches against a pattern.
      static boolean match​(java.lang.String pattern, java.lang.String str, boolean caseSensitive)
      Tests whether or not a string matches against a pattern.
      static boolean matchPath​(java.lang.String pattern, java.lang.String str)
      Tests whether or not a given path matches a given pattern.
      static boolean matchPath​(java.lang.String pattern, java.lang.String str, boolean isCaseSensitive)
      Tests whether or not a given path matches a given pattern.
      static boolean matchPatternStart​(java.lang.String pattern, java.lang.String str)
      Tests whether or not a given path matches the start of a given pattern up to the first "**".
      static boolean matchPatternStart​(java.lang.String pattern, java.lang.String str, boolean isCaseSensitive)
      Tests whether or not a given path matches the start of a given pattern up to the first "**".
      static java.lang.String removeWhitespace​(java.lang.String input)
      "Flattens" a string by removing all whitespace (space, tab, linefeed, carriage return, and formfeed).
      static java.lang.String rtrimWildcardTokens​(java.lang.String input)
      removes from a pattern all tokens to the right containing wildcards
      static java.util.Vector<java.lang.String> tokenizePath​(java.lang.String path)
      Breaks a path up into a Vector of path elements, tokenizing on File.separator.
      static java.util.Vector<java.lang.String> tokenizePath​(java.lang.String path, java.lang.String separator)
      Breaks a path up into a Vector of path elements, tokenizing on
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • DEEP_TREE_MATCH

        public static final java.lang.String DEEP_TREE_MATCH
        The pattern that matches an arbitrary number of directories.
        Since:
        Ant 1.8.0
        See Also:
        Constant Field Values
    • Method Detail

      • getInstance

        public static SelectorUtils getInstance()
        Retrieves the instance of the Singleton.
        Returns:
        singleton instance
      • matchPatternStart

        public static boolean matchPatternStart​(java.lang.String pattern,
                                                java.lang.String str)
        Tests whether or not a given path matches the start of a given pattern up to the first "**".

        This is not a general purpose test and should only be used if you can live with false positives. For example, pattern=**\a and str=b will yield true.

        Parameters:
        pattern - The pattern to match against. Must not be null.
        str - The path to match, as a String. Must not be null.
        Returns:
        whether or not a given path matches the start of a given pattern up to the first "**".
      • matchPatternStart

        public static boolean matchPatternStart​(java.lang.String pattern,
                                                java.lang.String str,
                                                boolean isCaseSensitive)
        Tests whether or not a given path matches the start of a given pattern up to the first "**".

        This is not a general purpose test and should only be used if you can live with false positives. For example, pattern=**\a and str=b will yield true.

        Parameters:
        pattern - The pattern to match against. Must not be null.
        str - The path to match, as a String. Must not be null.
        isCaseSensitive - Whether or not matching should be performed case sensitively.
        Returns:
        whether or not a given path matches the start of a given pattern up to the first "**".
      • matchPath

        public static boolean matchPath​(java.lang.String pattern,
                                        java.lang.String str)
        Tests whether or not a given path matches a given pattern. If you need to call this method multiple times with the same pattern you should rather use TokenizedPath
        Parameters:
        pattern - The pattern to match against. Must not be null.
        str - The path to match, as a String. Must not be null.
        Returns:
        true if the pattern matches against the string, or false otherwise.
        See Also:
        TokenizedPath
      • matchPath

        public static boolean matchPath​(java.lang.String pattern,
                                        java.lang.String str,
                                        boolean isCaseSensitive)
        Tests whether or not a given path matches a given pattern. If you need to call this method multiple times with the same pattern you should rather use TokenizedPattern
        Parameters:
        pattern - The pattern to match against. Must not be null.
        str - The path to match, as a String. Must not be null.
        isCaseSensitive - Whether or not matching should be performed case sensitively.
        Returns:
        true if the pattern matches against the string, or false otherwise.
        See Also:
        TokenizedPattern
      • match

        public static boolean match​(java.lang.String pattern,
                                    java.lang.String str)
        Tests whether or not a string matches against a pattern. The pattern may contain two special characters:
        '*' means zero or more characters
        '?' means one and only one character
        Parameters:
        pattern - The pattern to match against. Must not be null.
        str - The string which must be matched against the pattern. Must not be null.
        Returns:
        true if the string matches against the pattern, or false otherwise.
      • match

        public static boolean match​(java.lang.String pattern,
                                    java.lang.String str,
                                    boolean caseSensitive)
        Tests whether or not a string matches against a pattern. The pattern may contain two special characters:
        '*' means zero or more characters
        '?' means one and only one character
        Parameters:
        pattern - The pattern to match against. Must not be null.
        str - The string which must be matched against the pattern. Must not be null.
        caseSensitive - Whether or not matching should be performed case sensitively.
        Returns:
        true if the string matches against the pattern, or false otherwise.
      • tokenizePath

        public static java.util.Vector<java.lang.String> tokenizePath​(java.lang.String path)
        Breaks a path up into a Vector of path elements, tokenizing on File.separator.
        Parameters:
        path - Path to tokenize. Must not be null.
        Returns:
        a Vector of path elements from the tokenized path
      • tokenizePath

        public static java.util.Vector<java.lang.String> tokenizePath​(java.lang.String path,
                                                                      java.lang.String separator)
        Breaks a path up into a Vector of path elements, tokenizing on
        Parameters:
        path - Path to tokenize. Must not be null.
        separator - the separator against which to tokenize.
        Returns:
        a Vector of path elements from the tokenized path
        Since:
        Ant 1.6
      • isOutOfDate

        public static boolean isOutOfDate​(java.io.File src,
                                          java.io.File target,
                                          int granularity)
        Returns dependency information on these two files. If src has been modified later than target, it returns true. If target doesn't exist, it likewise returns true. Otherwise, target is newer than src and is not out of date, thus the method returns false. It also returns false if the src file doesn't even exist, since how could the target then be out of date.
        Parameters:
        src - the original file
        target - the file being compared against
        granularity - the amount in seconds of slack we will give in determining out of dateness
        Returns:
        whether the target is out of date
      • isOutOfDate

        public static boolean isOutOfDate​(Resource src,
                                          Resource target,
                                          int granularity)
        Returns dependency information on these two resources. If src has been modified later than target, it returns true. If target doesn't exist, it likewise returns true. Otherwise, target is newer than src and is not out of date, thus the method returns false. It also returns false if the src file doesn't even exist, since how could the target then be out of date.
        Parameters:
        src - the original resource
        target - the resource being compared against
        granularity - the int amount in seconds of slack we will give in determining out of dateness
        Returns:
        whether the target is out of date
      • isOutOfDate

        public static boolean isOutOfDate​(Resource src,
                                          Resource target,
                                          long granularity)
        Returns dependency information on these two resources. If src has been modified later than target, it returns true. If target doesn't exist, it likewise returns true. Otherwise, target is newer than src and is not out of date, thus the method returns false. It also returns false if the src file doesn't even exist, since how could the target then be out of date.
        Parameters:
        src - the original resource
        target - the resource being compared against
        granularity - the long amount in seconds of slack we will give in determining out of dateness
        Returns:
        whether the target is out of date
      • removeWhitespace

        public static java.lang.String removeWhitespace​(java.lang.String input)
        "Flattens" a string by removing all whitespace (space, tab, linefeed, carriage return, and formfeed). This uses StringTokenizer and the default set of tokens as documented in the single argument constructor.
        Parameters:
        input - a String to remove all whitespace.
        Returns:
        a String that has had all whitespace removed.
      • hasWildcards

        public static boolean hasWildcards​(java.lang.String input)
        Tests if a string contains stars or question marks
        Parameters:
        input - a String which one wants to test for containing wildcard
        Returns:
        true if the string contains at least a star or a question mark
      • rtrimWildcardTokens

        public static java.lang.String rtrimWildcardTokens​(java.lang.String input)
        removes from a pattern all tokens to the right containing wildcards
        Parameters:
        input - the input string
        Returns:
        the leftmost part of the pattern without wildcards