Class AbstractScanner

java.lang.Object
org.codehaus.plexus.util.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 final String[]
    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[]
    The patterns for the files to be excluded.
    protected Comparator<String>
     
    protected String[]
    The patterns for the files to be included.
    protected boolean
    Whether or not the file system should be treated as a case sensitive one.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Adds default exclusions to the current exclusions set.
    protected boolean
    Tests whether or not a name matches the start of at least one include pattern.
    protected boolean
    Tests whether or not a name matches against at least one exclude pattern.
    protected boolean
    isExcluded(String name, char[][] tokenizedName)
     
    protected boolean
    isExcluded(String name, String[] tokenizedName)
     
    protected boolean
    Tests whether or not a name matches against at least one include pattern.
    protected boolean
    isIncluded(String name, char[][] tokenizedName)
     
    protected boolean
    isIncluded(String name, String[] tokenizedName)
     
    static boolean
    match(String pattern, String str)
    Tests whether or not a string matches against a pattern.
    protected static boolean
    match(String pattern, String str, boolean isCaseSensitive)
    Tests whether or not a string matches against a pattern.
    protected static boolean
    matchPath(String pattern, String str)
    Tests whether or not a given path matches a given pattern.
    protected static boolean
    matchPath(String pattern, String str, boolean isCaseSensitive)
    Tests whether or not a given path matches a given pattern.
    protected static boolean
    Tests whether or not a given path matches the start of a given pattern up to the first "**".
    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 "**".
    void
    setCaseSensitive(boolean isCaseSensitive)
    Sets whether or not the file system should be regarded as case sensitive.
    void
    setExcludes(String[] excludes)
    Sets the list of exclude patterns to use.
    void
    Use a filename comparator in each directory when scanning.
    void
    setIncludes(String[] includes)
    Sets the list of include patterns to use.
    protected void
     
    protected void
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.codehaus.plexus.util.Scanner

    getBasedir, getIncludedDirectories, getIncludedFiles, scan
  • Field Details

    • 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:
    • 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 Details

    • AbstractScanner

      public AbstractScanner()
  • Method Details

    • 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