Class AbstractScanner

  • All Implemented Interfaces:
    Scanner
    Direct Known Subclasses:
    DirectoryScanner

    public abstract class AbstractScanner
    extends Object
    implements Scanner
    Scan a directory tree for files, with specified inclusions and exclusions.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static String[] DEFAULTEXCLUDES
      Patterns which should be excluded by default, like SCM files Misc: **/*~, **/#*#, **/.#*, **/%*%, **/._* CVS: **/CVS, **/CVS/**, **/.cvsignore RCS: **/RCS, **/RCS/** SCCS: **/SCCS, **/SCCS/** VSSercer: **/vssver.scc MKS: **/project.pj SVN: **/.svn, **/.svn/** GNU: **/.arch-ids, **/.arch-ids/** Bazaar: **/.bzr, **/.bzr/** SurroundSCM: **/.MySCMServerInfo Mac: **/.DS_Store Serena Dimension: **/.metadata, **/.metadata/** Mercurial: **/.hg, **/.hg/** Git: **/.git, **/.git/** Bitkeeper: **/BitKeeper, **/BitKeeper/**, **/ChangeSet, **/ChangeSet/** Darcs: **/_darcs, **/_darcs/**, **/.darcsrepo, **/.darcsrepo/****/-darcs-backup*, **/.darcs-temp-mail
      protected String[] excludes
      The patterns for the files to be excluded.
      protected Comparator<String> filenameComparator  
      protected String[] includes
      The patterns for the files to be included.
      protected boolean isCaseSensitive
      Whether or not the file system should be treated as a case sensitive one.
    • Constructor Summary

      Constructors 
      Constructor Description
      AbstractScanner()  
    • Field Detail

      • DEFAULTEXCLUDES

        public static final String[] DEFAULTEXCLUDES
        Patterns which should be excluded by default, like SCM files
        • Misc: **/*~, **/#*#, **/.#*, **/%*%, **/._*
        • CVS: **/CVS, **/CVS/**, **/.cvsignore
        • RCS: **/RCS, **/RCS/**
        • SCCS: **/SCCS, **/SCCS/**
        • VSSercer: **/vssver.scc
        • MKS: **/project.pj
        • SVN: **/.svn, **/.svn/**
        • GNU: **/.arch-ids, **/.arch-ids/**
        • Bazaar: **/.bzr, **/.bzr/**
        • SurroundSCM: **/.MySCMServerInfo
        • Mac: **/.DS_Store
        • Serena Dimension: **/.metadata, **/.metadata/**
        • Mercurial: **/.hg, **/.hg/**
        • Git: **/.git, **/.git/**
        • Bitkeeper: **/BitKeeper, **/BitKeeper/**, **/ChangeSet, **/ChangeSet/**
        • Darcs: **/_darcs, **/_darcs/**, **/.darcsrepo, **/.darcsrepo/****/-darcs-backup*, **/.darcs-temp-mail
        See Also:
        addDefaultExcludes()
      • includes

        protected String[] includes
        The patterns for the files to be included.
      • excludes

        protected String[] excludes
        The patterns for the files to be excluded.
      • isCaseSensitive

        protected boolean isCaseSensitive
        Whether or not the file system should be treated as a case sensitive one.
      • filenameComparator

        protected Comparator<String> filenameComparator
        Since:
        3.3.0
    • Constructor Detail

      • AbstractScanner

        public AbstractScanner()
    • Method Detail

      • setCaseSensitive

        public void setCaseSensitive​(boolean isCaseSensitive)
        Sets whether or not the file system should be regarded as case sensitive.
        Parameters:
        isCaseSensitive - whether or not the file system should be regarded as a case sensitive one
      • matchPatternStart

        protected static boolean matchPatternStart​(String pattern,
                                                   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

        protected static boolean matchPatternStart​(String pattern,
                                                   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

        protected static boolean matchPath​(String pattern,
                                           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

        protected static boolean matchPath​(String pattern,
                                           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.
      • match

        public static boolean match​(String pattern,
                                    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

        protected static boolean match​(String pattern,
                                       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.
      • setIncludes

        public void setIncludes​(String[] includes)

        Sets the list of include patterns to use. All '/' and '\' characters are replaced by File.separatorChar, so the separator used need not match File.separatorChar.

        When a pattern ends with a '/' or '\', "**" is appended.

        Specified by:
        setIncludes in interface Scanner
        Parameters:
        includes - A list of include patterns. May be null, indicating that all files should be included. If a non-null list is given, all elements must be non-null.
      • setExcludes

        public void setExcludes​(String[] excludes)

        Sets the list of exclude patterns to use. All '/' and '\' characters are replaced by File.separatorChar, so the separator used need not match File.separatorChar.

        When a pattern ends with a '/' or '\', "**" is appended.

        Specified by:
        setExcludes in interface Scanner
        Parameters:
        excludes - A list of exclude patterns. May be null, indicating that no files should be excluded. If a non-null list is given, all elements must be non-null.
      • isIncluded

        protected boolean isIncluded​(String name)
        Tests whether or not a name matches against at least one include pattern.
        Parameters:
        name - The name to match. Must not be null.
        Returns:
        true when the name matches against at least one include pattern, or false otherwise.
      • isIncluded

        protected boolean isIncluded​(String name,
                                     String[] tokenizedName)
      • isIncluded

        protected boolean isIncluded​(String name,
                                     char[][] tokenizedName)
      • couldHoldIncluded

        protected boolean couldHoldIncluded​(String name)
        Tests whether or not a name matches the start of at least one include pattern.
        Parameters:
        name - The name to match. Must not be null.
        Returns:
        true when the name matches against the start of at least one include pattern, or false otherwise.
      • isExcluded

        protected boolean isExcluded​(String name)
        Tests whether or not a name matches against at least one exclude pattern.
        Parameters:
        name - The name to match. Must not be null.
        Returns:
        true when the name matches against at least one exclude pattern, or false otherwise.
      • isExcluded

        protected boolean isExcluded​(String name,
                                     String[] tokenizedName)
      • isExcluded

        protected boolean isExcluded​(String name,
                                     char[][] tokenizedName)
      • addDefaultExcludes

        public void addDefaultExcludes()
        Adds default exclusions to the current exclusions set.
        Specified by:
        addDefaultExcludes in interface Scanner
      • setupDefaultFilters

        protected void setupDefaultFilters()
      • setupMatchPatterns

        protected void setupMatchPatterns()
      • setFilenameComparator

        public void setFilenameComparator​(Comparator<String> filenameComparator)
        Description copied from interface: Scanner
        Use a filename comparator in each directory when scanning.
        Specified by:
        setFilenameComparator in interface Scanner
        Parameters:
        filenameComparator - the Comparator instance to use