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
    Version:
    $Id$
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private SelectorUtils()
      Private Constructor
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.lang.String applySlashifyRules​(java.lang.String path, char sepChar)
      Applies the "slashification" rules as specified in Single Unix Specification version 3, section 3.266 and section 4.11 - Pathname resolution
      static boolean equals​(char c1, char c2, boolean isCaseSensitive)
      Tests whether two characters are equal.
      static boolean isWindowsDriveSpecified​(java.lang.CharSequence cs)  
      static boolean isWindowsDriveSpecified​(java.lang.CharSequence cs, int offset, int len)  
      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 isCaseSensitive)
      Tests whether or not a string matches against a pattern.
      private static boolean matchAntPathPattern​(java.lang.String pattern, java.lang.String str, boolean isCaseSensitive)  
      private static boolean matchAntPathPatternStart​(java.lang.String pattern, java.lang.String str, java.lang.String separator, boolean isCaseSensitive)  
      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, line-feed, carriage return, and form-feed).
      static java.util.List<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.List<java.lang.String> tokenizePath​(java.lang.String path, java.lang.String separator)  
      static java.lang.String translateToFileSystemPath​(java.lang.String path, java.lang.String pathSeparator, java.lang.String fsSeparator)
      Converts a path containing a specific separator to one using the specified file-system one
      static java.lang.String translateToFileSystemPath​(java.lang.String path, java.lang.String pathSeparator, java.nio.file.FileSystem fs)
      Converts a path containing a specific separator to one using the specified file-system one
      static java.lang.String translateToLocalFileSystemPath​(java.lang.String path, char pathSeparator, java.lang.String fsSeparator)
      Converts a path to one matching the target file system by applying the "slashification" rules, converting it to a local path and then translating its separator to the target file system one (if different than local one)
      static java.lang.String translateToLocalFileSystemPath​(java.lang.String path, char pathSeparator, java.nio.file.FileSystem fs)
      /** Converts a path to one matching the target file system by applying the "slashification" rules, converting it to a local path and then translating its separator to the target file system one (if different than local one)
      static java.lang.String translateToLocalPath​(java.lang.String path)
      Converts a possibly '/' separated path to a local path.
      • Methods inherited from class java.lang.Object

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

      • PATTERN_HANDLER_PREFIX

        public static final java.lang.String PATTERN_HANDLER_PREFIX
        See Also:
        Constant Field Values
      • PATTERN_HANDLER_SUFFIX

        public static final java.lang.String PATTERN_HANDLER_SUFFIX
        See Also:
        Constant Field Values
      • REGEX_HANDLER_PREFIX

        public static final java.lang.String REGEX_HANDLER_PREFIX
        See Also:
        Constant Field Values
      • ANT_HANDLER_PREFIX

        public static final java.lang.String ANT_HANDLER_PREFIX
        See Also:
        Constant Field Values
    • Constructor Detail

      • SelectorUtils

        private SelectorUtils()
        Private Constructor
    • Method Detail

      • 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 "**".
      • matchAntPathPatternStart

        private static boolean matchAntPathPatternStart​(java.lang.String pattern,
                                                        java.lang.String str,
                                                        java.lang.String separator,
                                                        boolean isCaseSensitive)
      • matchPath

        public static boolean matchPath​(java.lang.String pattern,
                                        java.lang.String str)
        Tests whether or not a given path matches a given pattern.
        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.
      • 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.
        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.
      • matchAntPathPattern

        private static boolean matchAntPathPattern​(java.lang.String pattern,
                                                   java.lang.String str,
                                                   boolean isCaseSensitive)
      • 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 isCaseSensitive)
        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.
        isCaseSensitive - Whether or not matching should be performed case sensitively.
        Returns:
        true if the string matches against the pattern, or false otherwise.
      • equals

        public static boolean equals​(char c1,
                                     char c2,
                                     boolean isCaseSensitive)
        Tests whether two characters are equal.
        Parameters:
        c1 - 1st character
        c2 - 2nd character
        isCaseSensitive - Whether to compare case sensitive
        Returns:
        true if equal characters
      • tokenizePath

        public static java.util.List<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 List of path elements from the tokenized path
      • tokenizePath

        public static java.util.List<java.lang.String> tokenizePath​(java.lang.String path,
                                                                    java.lang.String separator)
      • translateToLocalFileSystemPath

        public static java.lang.String translateToLocalFileSystemPath​(java.lang.String path,
                                                                      char pathSeparator,
                                                                      java.nio.file.FileSystem fs)
        /** Converts a path to one matching the target file system by applying the "slashification" rules, converting it to a local path and then translating its separator to the target file system one (if different than local one)
        Parameters:
        path - The input path
        pathSeparator - The separator used to build the input path
        fs - The target FileSystem - may not be null
        Returns:
        The transformed path
        See Also:
        translateToLocalFileSystemPath(String, char, String)
      • translateToLocalFileSystemPath

        public static java.lang.String translateToLocalFileSystemPath​(java.lang.String path,
                                                                      char pathSeparator,
                                                                      java.lang.String fsSeparator)
        Converts a path to one matching the target file system by applying the "slashification" rules, converting it to a local path and then translating its separator to the target file system one (if different than local one)
        Parameters:
        path - The input path
        pathSeparator - The separator used to build the input path
        fsSeparator - The target file system separator
        Returns:
        The transformed path
        See Also:
        applySlashifyRules(String, char), translateToLocalPath(String), translateToFileSystemPath(String, String, String)
      • applySlashifyRules

        public static java.lang.String applySlashifyRules​(java.lang.String path,
                                                          char sepChar)
        Applies the "slashification" rules as specified in Single Unix Specification version 3, section 3.266 and section 4.11 - Pathname resolution
        Parameters:
        path - The original path - ignored if null/empty or does not contain any slashes
        sepChar - The "slash" character
        Returns:
        The effective path - may be same as input if no changes required
      • translateToLocalPath

        public static java.lang.String translateToLocalPath​(java.lang.String path)
        Converts a possibly '/' separated path to a local path. Note: takes special care of Windows drive paths - e.g., C: by converting them to "C:\"
        Parameters:
        path - The original path - ignored if null/empty
        Returns:
        The local path
      • isWindowsDriveSpecified

        public static boolean isWindowsDriveSpecified​(java.lang.CharSequence cs)
      • isWindowsDriveSpecified

        public static boolean isWindowsDriveSpecified​(java.lang.CharSequence cs,
                                                      int offset,
                                                      int len)
      • translateToFileSystemPath

        public static java.lang.String translateToFileSystemPath​(java.lang.String path,
                                                                 java.lang.String pathSeparator,
                                                                 java.nio.file.FileSystem fs)
        Converts a path containing a specific separator to one using the specified file-system one
        Parameters:
        path - The input path - ignored if null/empty
        pathSeparator - The separator used to build the input path - may not be null/empty
        fs - The target FileSystem - may not be null
        Returns:
        The path where the separator used to build it is replaced by the file-system one (if different)
        See Also:
        FileSystem.getSeparator(), translateToFileSystemPath(String, String, String)
      • translateToFileSystemPath

        public static java.lang.String translateToFileSystemPath​(java.lang.String path,
                                                                 java.lang.String pathSeparator,
                                                                 java.lang.String fsSeparator)
        Converts a path containing a specific separator to one using the specified file-system one
        Parameters:
        path - The input path - ignored if null/empty
        pathSeparator - The separator used to build the input path - may not be null/empty
        fsSeparator - The target file system separator - may not be null/empty
        Returns:
        The path where the separator used to build it is replaced by the file-system one (if different)
        Throws:
        java.lang.IllegalArgumentException - if path or file-system separator are null/empty or if the separators are different and the path contains the target file-system separator as it would create an ambiguity
      • removeWhitespace

        public static java.lang.String removeWhitespace​(java.lang.String input)
        "Flattens" a string by removing all whitespace (space, tab, line-feed, carriage return, and form-feed). 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.