You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ba...@apache.org on 2002/12/07 21:29:25 UTC
cvs commit: jakarta-commons-sandbox/io/src/java/org/apache/commons/io/filefilter FileFilterUtils.java PredicateFileFilter.java AbstractFileFilter.java DelegateFileFilter.java FileFilter.java
bayard 2002/12/07 12:29:25
Modified: io/src/java/org/apache/commons/io/filefilter
AbstractFileFilter.java DelegateFileFilter.java
FileFilter.java
Added: io/src/java/org/apache/commons/io/filefilter
FileFilterUtils.java PredicateFileFilter.java
Log:
Now FileFilter's are Predicates. Thus new classes.
Revision Changes Path
1.4 +10 -1 jakarta-commons-sandbox/io/src/java/org/apache/commons/io/filefilter/AbstractFileFilter.java
Index: AbstractFileFilter.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/io/src/java/org/apache/commons/io/filefilter/AbstractFileFilter.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- AbstractFileFilter.java 28 Jul 2002 03:18:43 -0000 1.3
+++ AbstractFileFilter.java 7 Dec 2002 20:29:24 -0000 1.4
@@ -58,16 +58,24 @@
import java.io.FilenameFilter;
import java.io.File;
+import org.apache.commons.lang.functor.Predicate;
+
/**
* An abstract class which brings the FileFilter and FilenameFilter
* interfaces together, through the IO.FileFilter interface. Note that
* you <b>must</b> override one of the methods ellse your class will
* infinitely loop.
+ *
*/
public abstract class AbstractFileFilter
implements FileFilter
{
+ /** Defined in Predicate */
+ public boolean evaluate(Object object) {
+ return accept( (File)object );
+ }
+
/** Defined in FileFilter */
public boolean accept( File f) {
return accept( f.getParentFile(), f.getName());
@@ -75,6 +83,7 @@
/** Defined in FilenameFilter */
public boolean accept( File dir, String name) {
- return accept( new File( dir.getName() + name ) );
+ return accept( new File( dir.getName() + File.separator + name ) );
}
+
}
1.4 +3 -0 jakarta-commons-sandbox/io/src/java/org/apache/commons/io/filefilter/DelegateFileFilter.java
Index: DelegateFileFilter.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/io/src/java/org/apache/commons/io/filefilter/DelegateFileFilter.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DelegateFileFilter.java 28 Jul 2002 03:18:43 -0000 1.3
+++ DelegateFileFilter.java 7 Dec 2002 20:29:24 -0000 1.4
@@ -60,6 +60,9 @@
import java.io.File;
/**
+ * This is used to turn a JDK FileFilter or FilenameFilter into a Predicate,
+ * as well as an Apache IO FileFilter. Once it is a predicate, it can be
+ * used with the PredicateUtils.
*/
public class DelegateFileFilter
extends AbstractFileFilter
1.4 +3 -1 jakarta-commons-sandbox/io/src/java/org/apache/commons/io/filefilter/FileFilter.java
Index: FileFilter.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/io/src/java/org/apache/commons/io/filefilter/FileFilter.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- FileFilter.java 28 Jul 2002 03:18:43 -0000 1.3
+++ FileFilter.java 7 Dec 2002 20:29:24 -0000 1.4
@@ -58,12 +58,14 @@
import java.io.FilenameFilter;
import java.io.File;
+import org.apache.commons.lang.functor.Predicate;
+
/**
* An interface which brings the FileFilter and FilenameFilter
* interfaces together.
*/
public interface FileFilter
-extends java.io.FileFilter, FilenameFilter
+extends java.io.FileFilter, FilenameFilter, Predicate
{
/** Defined in java.io.FileFilter */
1.1 jakarta-commons-sandbox/io/src/java/org/apache/commons/io/filefilter/FileFilterUtils.java
Index: FileFilterUtils.java
===================================================================
package org.apache.commons.io.filefilter;
import org.apache.commons.lang.functor.Predicate;
import org.apache.commons.lang.functor.PredicateUtils;
public class FileFilterUtils {
public FileFilterUtils() {
}
static public FileFilter predicateToFileFilter(Predicate predicate) {
return new PredicateFileFilter(predicate);
}
static public FileFilter andFileFilter(FileFilter f1, FileFilter f2) {
return predicateToFileFilter(
PredicateUtils.andPredicate( f1, f2 )
);
}
static public FileFilter orFileFilter(FileFilter f1, FileFilter f2) {
return predicateToFileFilter(
PredicateUtils.orPredicate( f1, f2 )
);
}
static public FileFilter nullFileFilter() {
return predicateToFileFilter( PredicateUtils.nullPredicate() );
}
static public FileFilter notFileFilter(FileFilter f) {
return predicateToFileFilter( PredicateUtils.notPredicate( f ) );
}
}
1.1 jakarta-commons-sandbox/io/src/java/org/apache/commons/io/filefilter/PredicateFileFilter.java
Index: PredicateFileFilter.java
===================================================================
package org.apache.commons.io.filefilter;
import java.io.File;
import org.apache.commons.lang.functor.Predicate;
/**
* PredicateFileFilter is a FileFilter built on top of a Predicate.
* This is essential for when lang.functor.PredicateUtils is used to
* create an AndPredicate around two FileFilters, and we need to treat
* that AndPredicate in a FileFilter way, for example, to pass to listFiles.
*/
public class PredicateFileFilter extends AbstractFileFilter {
private Predicate predicate;
public PredicateFileFilter(Predicate predicate) {
this.predicate = predicate;
}
public boolean accept( File f ) {
return this.predicate.evaluate( f );
}
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>