org.codehaus.plexus.util

## 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

`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/**, **/.hgignore GIT: **/.git, **/.gitignore, **/.gitattributes, **/.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 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 and Description
`AbstractScanner()`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`void` `addDefaultExcludes()` Adds default exclusions to the current exclusions set.
`protected boolean` `couldHoldIncluded(String name)` Tests whether or not a name matches the start of at least one include pattern.
`protected boolean` `isExcluded(String name)` Tests whether or not a name matches against at least one exclude pattern.
`protected boolean` `isExcluded(String name, String[] tokenizedName)`
`protected boolean` `isIncluded(String name)` Tests whether or not a name matches against at least one include pattern.
`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` `matchPatternStart(String pattern, String str)` 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` `setIncludes(String[] includes)` Sets the list of include patterns to use.
`protected void` `setupDefaultFilters()`
`protected void` `setupMatchPatterns()`

### 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 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/**, **/.hgignore
- GIT: **/.git, **/.gitignore, **/.gitattributes, **/.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.

### 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)

#### 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)

#### 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()