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 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-mailprotected 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
All Methods Static Methods Instance Methods Concrete Methods 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 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.
-
filenameComparator
protected Comparator<String> filenameComparator
- Since:
- 3.3.0
-
-
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
andstr=b
will yieldtrue
.- Parameters:
pattern
- The pattern to match against. Must not benull
.str
- The path to match, as a String. Must not benull
.- 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
andstr=b
will yieldtrue
.- Parameters:
pattern
- The pattern to match against. Must not benull
.str
- The path to match, as a String. Must not benull
.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 benull
.str
- The path to match, as a String. Must not benull
.- Returns:
true
if the pattern matches against the string, orfalse
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 benull
.str
- The path to match, as a String. Must not benull
.isCaseSensitive
- Whether or not matching should be performed case sensitively.- Returns:
true
if the pattern matches against the string, orfalse
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 benull
.str
- The string which must be matched against the pattern. Must not benull
.- Returns:
true
if the string matches against the pattern, orfalse
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 benull
.str
- The string which must be matched against the pattern. Must not benull
.isCaseSensitive
- Whether or not matching should be performed case sensitively.- Returns:
true
if the string matches against the pattern, orfalse
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 matchFile.separatorChar
.When a pattern ends with a '/' or '\', "**" is appended.
- Specified by:
setIncludes
in interfaceScanner
- Parameters:
includes
- A list of include patterns. May benull
, 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 matchFile.separatorChar
.When a pattern ends with a '/' or '\', "**" is appended.
- Specified by:
setExcludes
in interfaceScanner
- Parameters:
excludes
- A list of exclude patterns. May benull
, 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 benull
.- Returns:
true
when the name matches against at least one include pattern, orfalse
otherwise.
-
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 benull
.- Returns:
true
when the name matches against the start of at least one include pattern, orfalse
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 benull
.- Returns:
true
when the name matches against at least one exclude pattern, orfalse
otherwise.
-
isExcluded
protected boolean isExcluded(String name, char[][] tokenizedName)
-
addDefaultExcludes
public void addDefaultExcludes()
Adds default exclusions to the current exclusions set.- Specified by:
addDefaultExcludes
in interfaceScanner
-
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 interfaceScanner
- Parameters:
filenameComparator
- the Comparator instance to use
-
-