Package 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
Modifier and Type
Field
Description
`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
`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()`

## Method Summary

Modifier and Type
Method
Description
`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, char[][] tokenizedName)`
`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, 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`
`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`
`setFilenameComparator(Comparator<String> filenameComparator)`
Use a filename comparator in each directory when scanning.
`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 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:
  - `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 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