adammurdoch 02/02/27 04:05:37
Modified: proposal/myrmidon/src/java/org/apache/antlib/vfile
CopyFilesTask.java DefaultFileList.java
FileList.java FileSet.java ListFilesTask.java
PathFileList.java Resources.properties
SingletonFileList.java
Added: proposal/myrmidon/lib jakarta-oro-2.0.5.jar
proposal/myrmidon/src/java/org/apache/antlib/vfile
AbstractNameFileSelector.java AndFileSelector.java
BaseNameFileSelector.java DefaultFileSet.java
ExistenceFileSelector.java FileSelector.java
FilteredFileList.java FlatFileSet.java
IsDirectorySelector.java IsFileSelector.java
ListFileSetTask.java NameFileSelector.java
NotFileSelector.java OrFileSelector.java
UrlFileSelector.java
Removed: proposal/myrmidon/src/java/org/apache/antlib/vfile
PatternFileSet.java
Log:
Changes to the VFS data types:
* Added FileSelector interface.
* <v-fileset> now takes file selectors, instead of include and exclude
patterns.
* Added a bunch of file selector implementations:
* <and>, <or>, <not> for combining selectors.
* <name>, <basename>, <url> for testing bits of the file name against
an Ant 1 style pattern, or a regular expression.
* <is-file>, <is-folder>, <exists> for testing file type.
* Added <flat-fileset>, which combines nested file sets and paths into a
single directory. This allows explicit path -> fileset conversion.
* Added <filtered-path>, which applies selectors to nested file sets and
paths.
* Added <list-fileset> debug task.
Revision Changes Path
1.1 jakarta-ant/proposal/myrmidon/lib/jakarta-oro-2.0.5.jar
<<Binary file>>
1.2 +8 -0
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/CopyFilesTask.java
Index: CopyFilesTask.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/CopyFilesTask.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- CopyFilesTask.java 21 Feb 2002 03:26:23 -0000 1.1
+++ CopyFilesTask.java 27 Feb 2002 12:05:36 -0000 1.2
@@ -13,6 +13,7 @@
import java.util.Iterator;
import org.apache.aut.vfs.FileObject;
import org.apache.aut.vfs.FileSystemException;
+import org.apache.aut.vfs.FileType;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.myrmidon.api.AbstractTask;
@@ -22,6 +23,7 @@
* A task that copies files.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
+ *
* @ant:task name="v-copy"
*/
public class CopyFilesTask
@@ -120,6 +122,12 @@
final String path = paths[ i ];
// TODO - map destination name
+
+ // TODO - maybe include empty dirs
+ if( srcFile.getType() != FileType.FILE )
+ {
+ continue;
+ }
// TODO - use scope here, to make sure that the result
// is a descendent of the dest dir
1.2 +2 -0
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/DefaultFileList.java
Index: DefaultFileList.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/DefaultFileList.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultFileList.java 21 Feb 2002 03:26:23 -0000 1.1
+++ DefaultFileList.java 27 Feb 2002 12:05:36 -0000 1.2
@@ -18,7 +18,9 @@
* A compound file list, which is made up of several other file lists.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
+ *
* @ant:data-type name="v-path"
+ * @ant:type type="v-path" name="v-path"
*/
public class DefaultFileList implements FileList
{
1.2 +1 -0
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/FileList.java
Index: FileList.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/FileList.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- FileList.java 21 Feb 2002 03:26:23 -0000 1.1
+++ FileList.java 27 Feb 2002 12:05:36 -0000 1.2
@@ -16,6 +16,7 @@
* An ordered list of files.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
+ *
* @ant:role shorthand="v-path"
*/
public interface FileList
1.2 +3 -1
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/FileSet.java
Index: FileSet.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/FileSet.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- FileSet.java 21 Feb 2002 03:26:23 -0000 1.1
+++ FileSet.java 27 Feb 2002 12:05:36 -0000 1.2
@@ -16,6 +16,7 @@
* with it.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
+ *
* @ant:role shorthand="v-fileset"
*/
public interface FileSet
@@ -30,5 +31,6 @@
* @throws TaskException
* On error building the set.
*/
- FileSetResult getResult( TaskContext context ) throws TaskException;
+ FileSetResult getResult( TaskContext context )
+ throws TaskException;
}
1.2 +2 -2
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/ListFilesTask.java
Index: ListFilesTask.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/ListFilesTask.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ListFilesTask.java 25 Feb 2002 11:09:09 -0000 1.1
+++ ListFilesTask.java 27 Feb 2002 12:05:36 -0000 1.2
@@ -15,9 +15,9 @@
* A debug task, which prints out the files in a file list.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
- * @version $Revision: 1.1 $ $Date: 2002/02/25 11:09:09 $
+ * @version $Revision: 1.2 $ $Date: 2002/02/27 12:05:36 $
*
- * @ant:task name="v-list-files"
+ * @ant:task name="v-list-path"
*/
public class ListFilesTask
extends AbstractTask
1.2 +1 -1
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/PathFileList.java
Index: PathFileList.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/PathFileList.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PathFileList.java 21 Feb 2002 03:26:23 -0000 1.1
+++ PathFileList.java 27 Feb 2002 12:05:36 -0000 1.2
@@ -48,7 +48,7 @@
String element = elements[ i ];
try
{
- result[ i ] = fileSystemManager.resolveFile( element );
+ result[ i ] = fileSystemManager.resolveFile(
context.getBaseDirectory(), element );
}
catch( FileSystemException e )
{
1.2 +10 -0
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/Resources.properties
Index: Resources.properties
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/Resources.properties,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Resources.properties 21 Feb 2002 03:26:23 -0000 1.1
+++ Resources.properties 27 Feb 2002 12:05:36 -0000 1.2
@@ -1,7 +1,17 @@
bad-convert-string-to-file.error=Could not convert URI "{0}" into a file
object.
+
fileset.dir-not-set.error=Fileset root directory is not set.
fileset.list-files.error=Could not list the files in folder "{0}".
+
copyfilestask.no-source.error=No source files specified for {0} task.
copyfilestask.no-destination.error=No destination file or directory
specified for {0} task.
copyfilestask.no-destination.error=No destination directory specified for
{0} task.
copyfilestask.copy-file.error=Could not copy "{0}" to "{1}".
+
+nameselector.too-many-patterns.error=Too many name patterns specified.
+nameselector.no-pattern.error=No name pattern specified.
+nameselector.bad-pattern.error=Invalid name pattern "{0}".
+
+filteredfilelist.no-selector.error=No filter criteria specified.
+
+notfileselector.no-selector.error=No selector specified.
1.2 +4 -1
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/SingletonFileList.java
Index: SingletonFileList.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/SingletonFileList.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SingletonFileList.java 21 Feb 2002 03:26:23 -0000 1.1
+++ SingletonFileList.java 27 Feb 2002 12:05:36 -0000 1.2
@@ -15,9 +15,12 @@
* A file list that contains a single file.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
+ *
* @ant:data-type name="v-file"
+ * @ant:type type="v-path" name="v-file"
*/
-public class SingletonFileList implements FileList
+public class SingletonFileList
+ implements FileList
{
private FileObject m_file;
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/AbstractNameFileSelector.java
Index: AbstractNameFileSelector.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.antlib.vfile;
import org.apache.aut.vfs.FileObject;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
import org.apache.oro.text.GlobCompiler;
import org.apache.oro.text.regex.MalformedPatternException;
import org.apache.oro.text.regex.Pattern;
import org.apache.oro.text.regex.Perl5Compiler;
import org.apache.oro.text.regex.Perl5Matcher;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
/**
* An abstract file selector that selects files based on name.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2002/02/27 12:05:36 $
*/
public abstract class AbstractNameFileSelector
implements FileSelector
{
private final static Resources REZ
= ResourceManager.getPackageResources( AbstractNameFileSelector.class
);
private Object m_type;
private String m_pattern;
private static final Object TYPE_GLOB = "glob";
private static final Object TYPE_REGEXP = "regexp";
/**
* Sets the GLOB pattern to match the name against.
*/
public void setPattern( final String pattern )
throws TaskException
{
setPattern( TYPE_GLOB, pattern );
}
/**
* Sets the Regexp pattern to match the file basename against.
*/
public void setRegexp( final String pattern )
throws TaskException
{
setPattern( TYPE_REGEXP, pattern );
}
/**
* Sets the pattern and type to match
*/
private void setPattern( final Object type, final String pattern )
throws TaskException
{
if( m_type != null )
{
final String message = REZ.getString(
"nameselector.too-many-patterns.error" );
throw new TaskException( message );
}
m_type = type;
m_pattern = pattern;
}
/**
* Accepts the file.
*/
public boolean accept( final FileObject file,
final String path,
final TaskContext context )
throws TaskException
{
if( m_type == null )
{
final String message = REZ.getString(
"nameselector.no-pattern.error" );
throw new TaskException( message );
}
// Create the pattern to match against
final Pattern pattern;
try
{
if( m_type == TYPE_GLOB )
{
pattern = createGlobPattern( m_pattern );
}
else
{
pattern = createRegexpPattern( m_pattern );
}
}
catch( MalformedPatternException e )
{
final String message = REZ.getString(
"nameselector.bad-pattern.error", m_pattern );
throw new TaskException( message );
}
// Get the name to match against
final String name = getNameForMatch( path, file );
// Compare the name against the pattern
return new Perl5Matcher().matches( name, pattern );
}
/**
* Creates a GLOB pattern for matching the name against.
*/
protected Pattern createGlobPattern( final String pattern )
throws MalformedPatternException
{
// TODO - need to implement Ant-style patterns
return new GlobCompiler().compile( pattern );
}
/**
* Creates a Regexp pattern for matching the name against.
*/
protected Pattern createRegexpPattern( final String pattern )
throws MalformedPatternException
{
return new Perl5Compiler().compile( pattern );
}
/**
* Returns the name to match against.
*/
protected abstract String getNameForMatch( final String path,
final FileObject file );
}
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/AndFileSelector.java
Index: AndFileSelector.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.antlib.vfile;
import java.util.ArrayList;
import org.apache.aut.vfs.FileObject;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
/**
* A file selector that performs an AND of nested selectors. Performs
* lazy evaluation. Returns true when no nested elements are supplied.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2002/02/27 12:05:36 $
*
* @ant:data-type name="and-selector"
* @ant:type type="v-file-selector" name="and"
*/
public class AndFileSelector
implements FileSelector
{
private final ArrayList m_selectors = new ArrayList();
/**
* Adds a nested selector.
*/
public void add( final FileSelector selector )
{
m_selectors.add( selector );
}
/**
* Accepts a file.
*/
public boolean accept( final FileObject file,
final String path,
final TaskContext context )
throws TaskException
{
for( int i = 0; i < m_selectors.size(); i++ )
{
final FileSelector fileSelector = (FileSelector)m_selectors.get(i
);
if( ! fileSelector.accept( file, path, context ) )
{
return false;
}
}
return true;
}
}
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/BaseNameFileSelector.java
Index: BaseNameFileSelector.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.antlib.vfile;
import org.apache.aut.vfs.FileObject;
/**
* A file selector that selects files based on their base-name.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2002/02/27 12:05:36 $
*
* @ant:data-type name="basename-selector"
* @ant:type type="v-file-selector" name="basename"
*/
public class BaseNameFileSelector
extends AbstractNameFileSelector
{
/**
* Returns the name to match against.
*/
protected String getNameForMatch( final String path,
final FileObject file )
{
return file.getName().getBaseName();
}
}
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/DefaultFileSet.java
Index: DefaultFileSet.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.antlib.vfile;
import java.util.ArrayList;
import org.apache.aut.vfs.FileObject;
import org.apache.aut.vfs.FileSystemException;
import org.apache.aut.vfs.FileType;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
/**
* A file set, that contains those files under a directory that match
* a set of selectors.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
*
* @ant:data-type name="v-fileset"
* @ant:type type="v-fileset" name="v-fileset"
*/
public class DefaultFileSet
implements FileSet
{
private final static Resources REZ =
ResourceManager.getPackageResources( DefaultFileSet.class );
private FileObject m_dir;
private final AndFileSelector m_selector = new AndFileSelector();
/**
* Sets the root directory.
*/
public void setDir( final FileObject dir )
{
m_dir = dir;
}
/**
* Adds a selector.
*/
public void add( final FileSelector selector )
{
m_selector.add( selector );
}
/**
* Returns the contents of the set.
*/
public FileSetResult getResult( final TaskContext context )
throws TaskException
{
if( m_dir == null )
{
final String message = REZ.getString( "fileset.dir-not-set.error"
);
throw new TaskException( message );
}
try
{
final DefaultFileSetResult result = new DefaultFileSetResult();
final ArrayList stack = new ArrayList();
final ArrayList pathStack = new ArrayList();
stack.add( m_dir );
pathStack.add( "" );
while( stack.size() > 0 )
{
// Pop next folder off the stack
FileObject folder = (FileObject)stack.remove( 0 );
String path = (String)pathStack.remove( 0 );
// Queue the children of the folder
FileObject[] children = folder.getChildren();
for( int i = 0; i < children.length; i++ )
{
FileObject child = children[ i ];
String childPath = path + child.getName().getBaseName();
// Check whether to include the file in the result
if( m_selector.accept( child, childPath, context ) )
{
result.addElement( child, childPath );
}
if( child.getType() == FileType.FOLDER )
{
// A folder - push it on to the stack
stack.add( 0, child );
pathStack.add( 0, childPath + '/' );
}
}
}
return result;
}
catch( FileSystemException e )
{
final String message = REZ.getString( "fileset.list-files.error",
m_dir );
throw new TaskException( message, e );
}
}
}
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/ExistenceFileSelector.java
Index: ExistenceFileSelector.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.antlib.vfile;
import org.apache.aut.vfs.FileObject;
import org.apache.aut.vfs.FileSystemException;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
/**
* A file selector that only selects files that exist.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2002/02/27 12:05:36 $
*
* @ant:data-type name="exists-selector"
* @ant:type type="v-file-selector" name="exists"
*/
public class ExistenceFileSelector
implements FileSelector
{
/**
* Accepts a file.
*/
public boolean accept( final FileObject file,
final String path,
final TaskContext context )
throws TaskException
{
try
{
return file.exists();
}
catch( FileSystemException e )
{
throw new TaskException( e.getMessage(), e );
}
}
}
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/FileSelector.java
Index: FileSelector.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.antlib.vfile;
import org.apache.aut.vfs.FileObject;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.framework.DataType;
/**
* Accepts files as part of a set.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2002/02/27 12:05:36 $
*
* @ant:role shorthand="v-file-selector"
*/
public interface FileSelector
extends DataType
{
/**
* Accepts a file.
*
* @param path The virtual path associated with the file. May be null
* if such a path is not available.
* @param file The file to select.
* @param context The context to perform the selection in.
*/
boolean accept( FileObject file, String path, TaskContext context )
throws TaskException;
}
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/FilteredFileList.java
Index: FilteredFileList.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.antlib.vfile;
import java.util.ArrayList;
import org.apache.aut.vfs.FileObject;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
/**
* A file-list which filters another.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2002/02/27 12:05:36 $
*
* @ant:data-type name="filtered-path"
* @ant:type type="v-path" name="filtered-path"
*/
public class FilteredFileList
implements FileList
{
private DefaultFileList m_fileList = new DefaultFileList();
private FileSelector m_selector;
/**
* Sets the selector to use to filter with.
*/
public void setCondition( final AndFileSelector selector )
{
m_selector = selector;
}
/**
* Sets the filelist to filter.
*/
public void add( final FileList fileList )
{
m_fileList.add( fileList );
}
/**
* Returns the files in the list.
*/
public FileObject[] listFiles( final TaskContext context )
throws TaskException
{
if( m_selector == null )
{
throw new TaskException( "filteredfilelist.no-selector.error" );
}
// Build the set of files
final ArrayList acceptedFiles = new ArrayList();
final FileObject[] files = m_fileList.listFiles( context );
for( int i = 0; i < files.length; i++ )
{
final FileObject file = files[ i ];
if( m_selector.accept( file, null, context ) )
{
acceptedFiles.add( file );
}
}
return (FileObject[])acceptedFiles.toArray( new
FileObject[acceptedFiles.size() ] );
}
}
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/FlatFileSet.java
Index: FlatFileSet.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.antlib.vfile;
import org.apache.aut.vfs.FileObject;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
/**
* A file set that flattens its contents into a single directory.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2002/02/27 12:05:36 $
*
* @ant:data-type name="flat-fileset"
* @ant:type type="v-fileset" name="flat-fileset"
*/
public class FlatFileSet
implements FileSet
{
private DefaultFileList m_files = new DefaultFileList();
/**
* Adds a file list to this set.
*/
public void add( final FileList files )
{
m_files.add( files );
}
/**
* Returns the contents of the set.
*/
public FileSetResult getResult( final TaskContext context )
throws TaskException
{
DefaultFileSetResult result = new DefaultFileSetResult();
FileObject[] files = m_files.listFiles( context );
for( int i = 0; i < files.length; i++ )
{
final FileObject file = files[ i ];
// TODO - detect collisions
result.addElement( file, file.getName().getBaseName() );
}
return result;
}
}
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/IsDirectorySelector.java
Index: IsDirectorySelector.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.antlib.vfile;
import org.apache.aut.vfs.FileObject;
import org.apache.aut.vfs.FileSystemException;
import org.apache.aut.vfs.FileType;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
/**
* A file selector which only selects folders, not files.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2002/02/27 12:05:36 $
*
* @ant:data-type name="is-folder-selector"
* @ant:type type="v-file-selector" name="is-folder"
*/
public class IsDirectorySelector
implements FileSelector
{
/**
* Accepts a file.
*/
public boolean accept( final FileObject file,
final String path,
final TaskContext context )
throws TaskException
{
try
{
return ( file.exists() && file.getType() == FileType.FOLDER );
}
catch( FileSystemException e )
{
throw new TaskException( e.getMessage(), e );
}
}
}
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/IsFileSelector.java
Index: IsFileSelector.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.antlib.vfile;
import org.apache.aut.vfs.FileObject;
import org.apache.aut.vfs.FileSystemException;
import org.apache.aut.vfs.FileType;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
/**
* A file selector which only selects files, not folders.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2002/02/27 12:05:36 $
*
* @ant:data-type name="is-file-selector"
* @ant:type type="v-file-selector" name="is-file"
*/
public class IsFileSelector
implements FileSelector
{
/**
* Accepts a file.
*/
public boolean accept( final FileObject file,
final String path,
final TaskContext context )
throws TaskException
{
try
{
return ( file.exists() && file.getType() == FileType.FILE );
}
catch( FileSystemException e )
{
throw new TaskException( e.getMessage(), e );
}
}
}
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/ListFileSetTask.java
Index: ListFileSetTask.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.antlib.vfile;
import org.apache.aut.vfs.FileObject;
import org.apache.myrmidon.api.AbstractTask;
import org.apache.myrmidon.api.TaskException;
/**
* A debug task, that lists the contents of a [EMAIL PROTECTED] FileSet}.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2002/02/27 12:05:36 $
*
* @ant:task name="v-list-fileset"
*/
public class ListFileSetTask
extends AbstractTask
{
private FileSet m_fileSet;
public void set( final FileSet fileSet )
{
m_fileSet = fileSet;
}
/**
* Execute task.
*/
public void execute()
throws TaskException
{
FileSetResult result = m_fileSet.getResult( getContext() );
final FileObject[] files = result.getFiles();
final String[] paths = result.getPaths();
for( int i = 0; i < files.length; i++ )
{
final FileObject file = files[ i ];
final String path = paths[ i ];
getLogger().info( path + " = " + file );
}
}
}
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/NameFileSelector.java
Index: NameFileSelector.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.antlib.vfile;
import org.apache.aut.vfs.FileObject;
/**
* A file selector that selects files based on their name.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2002/02/27 12:05:36 $
*
* @ant:data-type name="name-selector"
* @ant:type type="v-file-selector" name="name"
*/
public class NameFileSelector
extends AbstractNameFileSelector
{
/**
* Returns the name to match against.
*/
protected String getNameForMatch( final String path,
final FileObject file )
{
return path;
}
}
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/NotFileSelector.java
Index: NotFileSelector.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.antlib.vfile;
import org.apache.aut.vfs.FileObject;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
/**
* A file selector that negates a nested file selector.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2002/02/27 12:05:36 $
*
* @ant:data-type name="not-selector"
* @ant:type type="v-file-selector" name="not"
*/
public class NotFileSelector
implements FileSelector
{
private FileSelector m_selector;
/**
* Sets the nested selector.
*/
public void set( final FileSelector selector )
{
m_selector = selector;
}
/**
* Accepts a file.
*/
public boolean accept( final FileObject file,
final String path,
final TaskContext context )
throws TaskException
{
if( m_selector == null )
{
throw new TaskException( "notfileselector.no-selector.error" );
}
return ! m_selector.accept( file, path, context );
}
}
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/OrFileSelector.java
Index: OrFileSelector.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.antlib.vfile;
import java.util.ArrayList;
import org.apache.aut.vfs.FileObject;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
/**
* A file selector that performs an OR of nested selectors. Performs
* lazy evaluation. Returns true when no nested elements are supplied.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2002/02/27 12:05:36 $
*
* @ant:data-type name="or-selector"
* @ant:type type="v-file-selector" name="or"
*/
public class OrFileSelector
implements FileSelector
{
private final ArrayList m_selectors = new ArrayList();
/**
* Adds a nested selector.
*/
public void add( final FileSelector selector )
{
m_selectors.add( selector );
}
/**
* Accepts a file.
*/
public boolean accept( final FileObject file,
final String path,
final TaskContext context )
throws TaskException
{
for( int i = 0; i < m_selectors.size(); i++ )
{
final FileSelector fileSelector = (FileSelector)m_selectors.get(i
);
if( fileSelector.accept( file, path, context ) )
{
return true;
}
}
// Return true if there are no selectors, false if there are
return (m_selectors.size() == 0);
}
}
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/antlib/vfile/UrlFileSelector.java
Index: UrlFileSelector.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.antlib.vfile;
import org.apache.aut.vfs.FileObject;
/**
* A file selector that selects files based on their URL.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2002/02/27 12:05:36 $
*
* @ant:data-type name="url-selector"
* @ant:type type="v-file-selector" name="url"
*/
public class UrlFileSelector
extends AbstractNameFileSelector
{
/**
* Returns the name to match against.
*/
protected String getNameForMatch( final String path,
final FileObject file )
{
return file.getName().getURI();
}
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>