Browse Source

Move FileSet logic into a ScannerUtil class

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270864 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 23 years ago
parent
commit
ecabb60891
8 changed files with 180 additions and 164 deletions
  1. +29
    -78
      proposal/myrmidon/src/main/org/apache/tools/ant/types/FileSet.java
  2. +1
    -1
      proposal/myrmidon/src/main/org/apache/tools/ant/types/Path.java
  3. +56
    -0
      proposal/myrmidon/src/main/org/apache/tools/ant/types/ScannerUtil.java
  4. +4
    -3
      proposal/myrmidon/src/main/org/apache/tools/ant/types/ZipFileSet.java
  5. +29
    -78
      proposal/myrmidon/src/todo/org/apache/tools/ant/types/FileSet.java
  6. +1
    -1
      proposal/myrmidon/src/todo/org/apache/tools/ant/types/Path.java
  7. +56
    -0
      proposal/myrmidon/src/todo/org/apache/tools/ant/types/ScannerUtil.java
  8. +4
    -3
      proposal/myrmidon/src/todo/org/apache/tools/ant/types/ZipFileSet.java

+ 29
- 78
proposal/myrmidon/src/main/org/apache/tools/ant/types/FileSet.java View File

@@ -8,11 +8,9 @@
package org.apache.tools.ant.types; package org.apache.tools.ant.types;


import java.io.File; import java.io.File;
import java.util.ArrayList;
import org.apache.myrmidon.api.TaskException; import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.framework.Pattern; import org.apache.myrmidon.framework.Pattern;
import org.apache.myrmidon.framework.PatternSet; import org.apache.myrmidon.framework.PatternSet;
import org.apache.tools.ant.ProjectComponent;


/** /**
* Moved out of MatchingTask to make it a standalone object that could be * Moved out of MatchingTask to make it a standalone object that could be
@@ -27,14 +25,11 @@ import org.apache.tools.ant.ProjectComponent;
* @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a> * @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a>
*/ */
public class FileSet public class FileSet
extends ProjectComponent
implements Cloneable
{ {
private PatternSet m_defaultPatterns = new PatternSet();
private ArrayList m_additionalPatterns = new ArrayList();
private File m_dir;
private PatternSet m_patternSet = new PatternSet();
private boolean m_useDefaultExcludes = true; private boolean m_useDefaultExcludes = true;
private boolean m_isCaseSensitive = true; private boolean m_isCaseSensitive = true;
private File m_dir;


/** /**
* Sets case sensitivity of the file system * Sets case sensitivity of the file system
@@ -66,102 +61,58 @@ public class FileSet
*/ */
public void setExcludes( final String excludes ) public void setExcludes( final String excludes )
{ {
m_defaultPatterns.setExcludes( excludes );
m_patternSet.setExcludes( excludes );
} }


/** /**
* Sets the set of include patterns. Patterns may be separated by a comma or
* a space.
*
* @param includes the string containing the include patterns
* add a name entry on the exclude list
*/ */
public void setIncludes( final String includes )
public void addExclude( final Pattern pattern )
{ {
m_defaultPatterns.setIncludes( includes );
m_patternSet.addExclude( pattern );
} }


public void setupDirectoryScanner( final FileScanner ds )
throws TaskException
/**
* add a name entry on the include list
*/
public void addInclude( final Pattern pattern )
{ {
if( null == ds )
{
final String message = "ds cannot be null";
throw new IllegalArgumentException( message );
}

ds.setBasedir( m_dir );

final int size = m_additionalPatterns.size();
for( int i = 0; i < size; i++ )
{
final Object o = m_additionalPatterns.get( i );
m_defaultPatterns.append( (PatternSet)o );
}

final String message = "FileSet: Setup file scanner in dir " +
m_dir + " with " + m_defaultPatterns;
getLogger().debug( message );

ds.setIncludes( m_defaultPatterns.getIncludePatterns( getContext() ) );
ds.setExcludes( m_defaultPatterns.getExcludePatterns( getContext() ) );
if( m_useDefaultExcludes )
{
ds.addDefaultExcludes();
}
ds.setCaseSensitive( m_isCaseSensitive );
m_patternSet.addInclude( pattern );
} }


public File getDir()
public void addPatternSet( final PatternSet set )
{ {
return m_dir;
m_patternSet.append( set );
} }


/** /**
* Returns the directory scanner needed to access the files to process.
* Sets the set of include patterns. Patterns may be separated by a comma or
* a space.
*
* @param includes the string containing the include patterns
*/ */
public DirectoryScanner getDirectoryScanner()
throws TaskException
public void setIncludes( final String includes )
{ {
if( m_dir == null )
{
throw new TaskException( "No directory specified for fileset." );
}

if( !m_dir.exists() )
{
throw new TaskException( m_dir.getAbsolutePath() + " not found." );
}
if( !m_dir.isDirectory() )
{
throw new TaskException( m_dir.getAbsolutePath() + " is not a directory." );
}
m_patternSet.setIncludes( includes );
}


final DirectoryScanner scanner = new DirectoryScanner();
setupDirectoryScanner( scanner );
scanner.scan();
return scanner;
public final PatternSet getPatternSet()
{
return m_patternSet;
} }


/**
* add a name entry on the exclude list
*/
public void addExclude( final Pattern pattern )
public boolean isCaseSensitive()
{ {
m_defaultPatterns.addExclude( pattern );
return m_isCaseSensitive;
} }


/**
* add a name entry on the include list
*/
public void addInclude( final Pattern pattern )
public boolean useDefaultExcludes()
{ {
m_defaultPatterns.addInclude( pattern );
return m_useDefaultExcludes;
} }


public PatternSet createPatternSet()
public File getDir()
{ {
final PatternSet patterns = new PatternSet();
m_additionalPatterns.add( patterns );
return patterns;
return m_dir;
} }
} }

+ 1
- 1
proposal/myrmidon/src/main/org/apache/tools/ant/types/Path.java View File

@@ -205,7 +205,7 @@ public class Path
else if( o instanceof FileSet ) else if( o instanceof FileSet )
{ {
final FileSet fs = (FileSet)o; final FileSet fs = (FileSet)o;
final DirectoryScanner ds = fs.getDirectoryScanner();
final DirectoryScanner ds = ScannerUtil.getDirectoryScanner( fs );
final String[] s = ds.getIncludedFiles(); final String[] s = ds.getIncludedFiles();
final File dir = fs.getDir(); final File dir = fs.getDir();
for( int j = 0; j < s.length; j++ ) for( int j = 0; j < s.length; j++ )


+ 56
- 0
proposal/myrmidon/src/main/org/apache/tools/ant/types/ScannerUtil.java View File

@@ -10,6 +10,9 @@ package org.apache.tools.ant.types;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.framework.PatternUtil;


/** /**
* *
@@ -524,4 +527,57 @@ public class ScannerUtil
return true; return true;
} }
} }

public static void setupDirectoryScanner( final FileSet set,
final FileScanner scanner,
final TaskContext context )
throws TaskException
{
if( null == scanner )
{
final String message = "ds cannot be null";
throw new IllegalArgumentException( message );
}

scanner.setBasedir( set.getDir() );

final String message = "FileSet: Setup file scanner in dir " +
set.getDir() + " with " + set.getPatternSet();
//getLogger().debug( message );

scanner.setIncludes( PatternUtil.getIncludePatterns( set.getPatternSet(), context ) );
scanner.setExcludes( PatternUtil.getExcludePatterns( set.getPatternSet(), context ) );
if( set.useDefaultExcludes() )
{
scanner.addDefaultExcludes();
}
scanner.setCaseSensitive( set.isCaseSensitive() );
}

public static DirectoryScanner getDirectoryScanner( final FileSet set )
throws TaskException
{
final File dir = set.getDir();
if( null == dir )
{
final String message = "No directory specified for fileset.";
throw new TaskException( message );
}

if( !dir.exists() )
{
final String message = dir.getAbsolutePath() + " not found.";
throw new TaskException( message );
}
if( !dir.isDirectory() )
{
final String message = dir.getAbsolutePath() + " is not a directory.";
throw new TaskException( message );
}

final DirectoryScanner scanner = new DirectoryScanner();
setupDirectoryScanner( set, scanner, null );
scanner.scan();
return scanner;
}
} }

+ 4
- 3
proposal/myrmidon/src/main/org/apache/tools/ant/types/ZipFileSet.java View File

@@ -9,6 +9,7 @@ package org.apache.tools.ant.types;


import java.io.File; import java.io.File;
import org.apache.myrmidon.api.TaskException; import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.api.TaskContext;
import org.apache.tools.ant.Project; import org.apache.tools.ant.Project;


/** /**
@@ -103,16 +104,16 @@ public class ZipFileSet
{ {
if( srcFile != null ) if( srcFile != null )
{ {
ZipScanner zs = new ZipScanner();
final ZipScanner zs = new ZipScanner();
zs.setSrc( srcFile ); zs.setSrc( srcFile );
super.setDir( p.getBaseDir() ); super.setDir( p.getBaseDir() );
setupDirectoryScanner( zs );
ScannerUtil.setupDirectoryScanner( this, zs, null );
zs.init(); zs.init();
return zs; return zs;
} }
else else
{ {
return super.getDirectoryScanner();
return ScannerUtil.getDirectoryScanner( this );
} }
} }




+ 29
- 78
proposal/myrmidon/src/todo/org/apache/tools/ant/types/FileSet.java View File

@@ -8,11 +8,9 @@
package org.apache.tools.ant.types; package org.apache.tools.ant.types;


import java.io.File; import java.io.File;
import java.util.ArrayList;
import org.apache.myrmidon.api.TaskException; import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.framework.Pattern; import org.apache.myrmidon.framework.Pattern;
import org.apache.myrmidon.framework.PatternSet; import org.apache.myrmidon.framework.PatternSet;
import org.apache.tools.ant.ProjectComponent;


/** /**
* Moved out of MatchingTask to make it a standalone object that could be * Moved out of MatchingTask to make it a standalone object that could be
@@ -27,14 +25,11 @@ import org.apache.tools.ant.ProjectComponent;
* @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a> * @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a>
*/ */
public class FileSet public class FileSet
extends ProjectComponent
implements Cloneable
{ {
private PatternSet m_defaultPatterns = new PatternSet();
private ArrayList m_additionalPatterns = new ArrayList();
private File m_dir;
private PatternSet m_patternSet = new PatternSet();
private boolean m_useDefaultExcludes = true; private boolean m_useDefaultExcludes = true;
private boolean m_isCaseSensitive = true; private boolean m_isCaseSensitive = true;
private File m_dir;


/** /**
* Sets case sensitivity of the file system * Sets case sensitivity of the file system
@@ -66,102 +61,58 @@ public class FileSet
*/ */
public void setExcludes( final String excludes ) public void setExcludes( final String excludes )
{ {
m_defaultPatterns.setExcludes( excludes );
m_patternSet.setExcludes( excludes );
} }


/** /**
* Sets the set of include patterns. Patterns may be separated by a comma or
* a space.
*
* @param includes the string containing the include patterns
* add a name entry on the exclude list
*/ */
public void setIncludes( final String includes )
public void addExclude( final Pattern pattern )
{ {
m_defaultPatterns.setIncludes( includes );
m_patternSet.addExclude( pattern );
} }


public void setupDirectoryScanner( final FileScanner ds )
throws TaskException
/**
* add a name entry on the include list
*/
public void addInclude( final Pattern pattern )
{ {
if( null == ds )
{
final String message = "ds cannot be null";
throw new IllegalArgumentException( message );
}

ds.setBasedir( m_dir );

final int size = m_additionalPatterns.size();
for( int i = 0; i < size; i++ )
{
final Object o = m_additionalPatterns.get( i );
m_defaultPatterns.append( (PatternSet)o );
}

final String message = "FileSet: Setup file scanner in dir " +
m_dir + " with " + m_defaultPatterns;
getLogger().debug( message );

ds.setIncludes( m_defaultPatterns.getIncludePatterns( getContext() ) );
ds.setExcludes( m_defaultPatterns.getExcludePatterns( getContext() ) );
if( m_useDefaultExcludes )
{
ds.addDefaultExcludes();
}
ds.setCaseSensitive( m_isCaseSensitive );
m_patternSet.addInclude( pattern );
} }


public File getDir()
public void addPatternSet( final PatternSet set )
{ {
return m_dir;
m_patternSet.append( set );
} }


/** /**
* Returns the directory scanner needed to access the files to process.
* Sets the set of include patterns. Patterns may be separated by a comma or
* a space.
*
* @param includes the string containing the include patterns
*/ */
public DirectoryScanner getDirectoryScanner()
throws TaskException
public void setIncludes( final String includes )
{ {
if( m_dir == null )
{
throw new TaskException( "No directory specified for fileset." );
}

if( !m_dir.exists() )
{
throw new TaskException( m_dir.getAbsolutePath() + " not found." );
}
if( !m_dir.isDirectory() )
{
throw new TaskException( m_dir.getAbsolutePath() + " is not a directory." );
}
m_patternSet.setIncludes( includes );
}


final DirectoryScanner scanner = new DirectoryScanner();
setupDirectoryScanner( scanner );
scanner.scan();
return scanner;
public final PatternSet getPatternSet()
{
return m_patternSet;
} }


/**
* add a name entry on the exclude list
*/
public void addExclude( final Pattern pattern )
public boolean isCaseSensitive()
{ {
m_defaultPatterns.addExclude( pattern );
return m_isCaseSensitive;
} }


/**
* add a name entry on the include list
*/
public void addInclude( final Pattern pattern )
public boolean useDefaultExcludes()
{ {
m_defaultPatterns.addInclude( pattern );
return m_useDefaultExcludes;
} }


public PatternSet createPatternSet()
public File getDir()
{ {
final PatternSet patterns = new PatternSet();
m_additionalPatterns.add( patterns );
return patterns;
return m_dir;
} }
} }

+ 1
- 1
proposal/myrmidon/src/todo/org/apache/tools/ant/types/Path.java View File

@@ -205,7 +205,7 @@ public class Path
else if( o instanceof FileSet ) else if( o instanceof FileSet )
{ {
final FileSet fs = (FileSet)o; final FileSet fs = (FileSet)o;
final DirectoryScanner ds = fs.getDirectoryScanner();
final DirectoryScanner ds = ScannerUtil.getDirectoryScanner( fs );
final String[] s = ds.getIncludedFiles(); final String[] s = ds.getIncludedFiles();
final File dir = fs.getDir(); final File dir = fs.getDir();
for( int j = 0; j < s.length; j++ ) for( int j = 0; j < s.length; j++ )


+ 56
- 0
proposal/myrmidon/src/todo/org/apache/tools/ant/types/ScannerUtil.java View File

@@ -10,6 +10,9 @@ package org.apache.tools.ant.types;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.framework.PatternUtil;


/** /**
* *
@@ -524,4 +527,57 @@ public class ScannerUtil
return true; return true;
} }
} }

public static void setupDirectoryScanner( final FileSet set,
final FileScanner scanner,
final TaskContext context )
throws TaskException
{
if( null == scanner )
{
final String message = "ds cannot be null";
throw new IllegalArgumentException( message );
}

scanner.setBasedir( set.getDir() );

final String message = "FileSet: Setup file scanner in dir " +
set.getDir() + " with " + set.getPatternSet();
//getLogger().debug( message );

scanner.setIncludes( PatternUtil.getIncludePatterns( set.getPatternSet(), context ) );
scanner.setExcludes( PatternUtil.getExcludePatterns( set.getPatternSet(), context ) );
if( set.useDefaultExcludes() )
{
scanner.addDefaultExcludes();
}
scanner.setCaseSensitive( set.isCaseSensitive() );
}

public static DirectoryScanner getDirectoryScanner( final FileSet set )
throws TaskException
{
final File dir = set.getDir();
if( null == dir )
{
final String message = "No directory specified for fileset.";
throw new TaskException( message );
}

if( !dir.exists() )
{
final String message = dir.getAbsolutePath() + " not found.";
throw new TaskException( message );
}
if( !dir.isDirectory() )
{
final String message = dir.getAbsolutePath() + " is not a directory.";
throw new TaskException( message );
}

final DirectoryScanner scanner = new DirectoryScanner();
setupDirectoryScanner( set, scanner, null );
scanner.scan();
return scanner;
}
} }

+ 4
- 3
proposal/myrmidon/src/todo/org/apache/tools/ant/types/ZipFileSet.java View File

@@ -9,6 +9,7 @@ package org.apache.tools.ant.types;


import java.io.File; import java.io.File;
import org.apache.myrmidon.api.TaskException; import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.api.TaskContext;
import org.apache.tools.ant.Project; import org.apache.tools.ant.Project;


/** /**
@@ -103,16 +104,16 @@ public class ZipFileSet
{ {
if( srcFile != null ) if( srcFile != null )
{ {
ZipScanner zs = new ZipScanner();
final ZipScanner zs = new ZipScanner();
zs.setSrc( srcFile ); zs.setSrc( srcFile );
super.setDir( p.getBaseDir() ); super.setDir( p.getBaseDir() );
setupDirectoryScanner( zs );
ScannerUtil.setupDirectoryScanner( this, zs, null );
zs.init(); zs.init();
return zs; return zs;
} }
else else
{ {
return super.getDirectoryScanner();
return ScannerUtil.getDirectoryScanner( this );
} }
} }




Loading…
Cancel
Save