You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sc...@apache.org on 2006/06/26 01:19:58 UTC

svn commit: r417092 - in /jakarta/commons/proper/io/trunk: RELEASE-NOTES.txt src/java/org/apache/commons/io/filefilter/WildcardFileFilter.java src/java/org/apache/commons/io/filefilter/WildcardFilter.java

Author: scolebourne
Date: Sun Jun 25 16:19:58 2006
New Revision: 417092

URL: http://svn.apache.org/viewvc?rev=417092&view=rev
Log:
Add WildcardFileFilter deprecating WildcardFilter

Added:
    jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/filefilter/WildcardFileFilter.java   (with props)
Modified:
    jakarta/commons/proper/io/trunk/RELEASE-NOTES.txt
    jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/filefilter/WildcardFilter.java

Modified: jakarta/commons/proper/io/trunk/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/io/trunk/RELEASE-NOTES.txt?rev=417092&r1=417091&r2=417092&view=diff
==============================================================================
--- jakarta/commons/proper/io/trunk/RELEASE-NOTES.txt (original)
+++ jakarta/commons/proper/io/trunk/RELEASE-NOTES.txt Sun Jun 25 16:19:58 2006
@@ -26,6 +26,8 @@
 
 Deprecations from 1.2
 ---------------------
+- WildcardFilter deprecated, replaced by WildcardFileFilter
+  - old class only accepted files, thus had a confusing dual purpose
 
 
 Bug fixes from 1.2
@@ -36,6 +38,18 @@
 
 Enhancements from 1.2
 ---------------------
+- IOCase
+  - New class/enumeration for case-sensitivity control
+
+- FilenameUtils
+  - New methods to handle case-sensitivity
+  - wildcardMatch - new method that has IOCase as a parameter
+  - equals - new method that has IOCase as a parameter
+
+- WildcardFileFilter
+  - Replacement for WildcardFilter
+  - Accepts both files and directories
+  - Ability to control case-sensitivity
 
 
 Feedback

Added: jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/filefilter/WildcardFileFilter.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/filefilter/WildcardFileFilter.java?rev=417092&view=auto
==============================================================================
--- jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/filefilter/WildcardFileFilter.java (added)
+++ jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/filefilter/WildcardFileFilter.java Sun Jun 25 16:19:58 2006
@@ -0,0 +1,152 @@
+package org.apache.commons.io.filefilter;
+
+import java.io.File;
+import java.util.List;
+
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.io.IOCase;
+
+/**
+ * Filters files using the supplied wildcards.
+ * <p>
+ * This filter selects files and directories based on one or more wildcards.
+ * Testing is case-sensitive by default, but this can be configured.
+ * <p>
+ * The wildcard matcher uses the characters '?' and '*' to represent a
+ * single or multiple wildcard characters.
+ * This is the same as often found on Dos/Unix command lines.
+ * The extension check is case-sensitive by .
+ * See {@link FilenameUtils#wildcardMatchOnSystem} for more information.
+ * <p>
+ * For example:
+ * <pre>
+ * File dir = new File(".");
+ * FileFilter fileFilter = new WildcardFileFilter("*test*.java~*~");
+ * File[] files = dir.listFiles(fileFilter);
+ * for (int i = 0; i < files.length; i++) {
+ *   System.out.println(files[i]);
+ * }
+ * </pre>
+ *
+ * @author Jason Anderson
+ * @version $Revision: 155419 $ $Date$
+ * @since Commons IO 1.3
+ */
+public class WildcardFileFilter extends AbstractFileFilter {
+
+    /** The wildcards that will be used to match filenames. */
+    private String[] wildcards;
+    /** Whether the comparison is case sensitive. */
+    private IOCase caseSensitivity;
+
+    /**
+     * Construct a new case-sensitive wildcard filter for a single wildcard.
+     *
+     * @param wildcard  the wildcard to match
+     * @throws IllegalArgumentException if the pattern is null
+     */
+    public WildcardFileFilter(String wildcard) {
+        this(wildcard, null);
+    }
+
+    /**
+     * Construct a new wildcard filter for a single wildcard specifying case-sensitivity.
+     *
+     * @param wildcard  the wildcard to match, not null
+     * @param caseSensitivity  how to handle case sensitivity, null means case-sensitive
+     * @throws IllegalArgumentException if the pattern is null
+     */
+    public WildcardFileFilter(String wildcard, IOCase caseSensitivity) {
+        if (wildcard == null) {
+            throw new IllegalArgumentException("The wildcard must not be null");
+        }
+        this.wildcards = new String[] { wildcard };
+        this.caseSensitivity = (caseSensitivity == null ? IOCase.SENSITIVE : caseSensitivity);
+    }
+
+    /**
+     * Construct a new case-sensitive wildcard filter for an array of wildcards.
+     *
+     * @param wildcards  the array of wildcards to match
+     * @throws IllegalArgumentException if the pattern array is null
+     */
+    public WildcardFileFilter(String[] wildcards) {
+        this(wildcards, null);
+    }
+
+    /**
+     * Construct a new wildcard filter for an array of wildcards specifying case-sensitivity.
+     *
+     * @param wildcards  the array of wildcards to match, not null
+     * @param caseSensitivity  how to handle case sensitivity, null means case-sensitive
+     * @throws IllegalArgumentException if the pattern array is null
+     */
+    public WildcardFileFilter(String[] wildcards, IOCase caseSensitivity) {
+        if (wildcards == null) {
+            throw new IllegalArgumentException("The wildcard array must not be null");
+        }
+        this.wildcards = wildcards;
+        this.caseSensitivity = (caseSensitivity == null ? IOCase.SENSITIVE : caseSensitivity);
+    }
+
+    /**
+     * Construct a new case-sensitive wildcard filter for a list of wildcards.
+     *
+     * @param wildcards  the list of wildcards to match, not null
+     * @throws IllegalArgumentException if the pattern list is null
+     * @throws ClassCastException if the list does not contain Strings
+     */
+    public WildcardFileFilter(List wildcards) {
+        this(wildcards, null);
+    }
+
+    /**
+     * Construct a new wildcard filter for a list of wildcards specifying case-sensitivity.
+     *
+     * @param wildcards  the list of wildcards to match, not null
+     * @param caseSensitivity  how to handle case sensitivity, null means case-sensitive
+     * @throws IllegalArgumentException if the pattern list is null
+     * @throws ClassCastException if the list does not contain Strings
+     */
+    public WildcardFileFilter(List wildcards, IOCase caseSensitivity) {
+        if (wildcards == null) {
+            throw new IllegalArgumentException("The wildcard list must not be null");
+        }
+        this.wildcards = (String[]) wildcards.toArray(new String[wildcards.size()]);
+        this.caseSensitivity = (caseSensitivity == null ? IOCase.SENSITIVE : caseSensitivity);
+    }
+
+    //-----------------------------------------------------------------------
+    /**
+     * Checks to see if the filename matches one of the wildcards.
+     *
+     * @param dir  the file directory
+     * @param name  the filename
+     * @return true if the filename matches one of the wildcards
+     */
+    public boolean accept(File dir, String name) {
+        for (int i = 0; i < wildcards.length; i++) {
+            if (FilenameUtils.wildcardMatch(name, wildcards[i], caseSensitivity)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Checks to see if the filename matches one of the wildcards.
+     *
+     * @param file  the file to check
+     * @return true if the filename matches one of the wildcards
+     */
+    public boolean accept(File file) {
+        String name = file.getName();
+        for (int i = 0; i < wildcards.length; i++) {
+            if (FilenameUtils.wildcardMatch(name, wildcards[i], caseSensitivity)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+}

Propchange: jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/filefilter/WildcardFileFilter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/filefilter/WildcardFileFilter.java
------------------------------------------------------------------------------
    svn:keywords = "author date id revision"

Modified: jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/filefilter/WildcardFilter.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/filefilter/WildcardFilter.java?rev=417092&r1=417091&r2=417092&view=diff
==============================================================================
--- jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/filefilter/WildcardFilter.java (original)
+++ jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/filefilter/WildcardFilter.java Sun Jun 25 16:19:58 2006
@@ -2,16 +2,22 @@
 
 import java.io.File;
 import java.util.List;
+
 import org.apache.commons.io.FilenameUtils;
 
 /**
- * Filters files using supplied wildcard(s).
- * <p/>
- * See org.apache.commons.io.find.FilenameUtils.wildcardMatch() for wildcard matching rules
- * <p/>
- *
- * <p/>
- * e.g.
+ * Filters files using the supplied wildcards.
+ * <p>
+ * This filter selects files, but not directories, based on one or more wildcards
+ * and using case-sensitive comparison.
+ * <p>
+ * The wildcard matcher uses the characters '?' and '*' to represent a
+ * single or multiple wildcard characters.
+ * This is the same as often found on Dos/Unix command lines.
+ * The extension check is case-sensitive.
+ * See {@link FilenameUtils#wildcardMatch} for more information.
+ * <p>
+ * For example:
  * <pre>
  * File dir = new File(".");
  * FileFilter fileFilter = new WildcardFilter("*test*.java~*~");
@@ -24,59 +30,59 @@
  * @author Jason Anderson
  * @version $Revision$ $Date$
  * @since Commons IO 1.1
+ * @deprecated Use WilcardFileFilter. Deprecated as this class performs directory
+ * filtering which it shouldn't do, but that can't be removed due to compatability.
  */
 public class WildcardFilter extends AbstractFileFilter {
 
-    /** The wildcards that will be used to match filenames */
-    private String[] wildcards = null;
+    /** The wildcards that will be used to match filenames. */
+    private String[] wildcards;
 
     /**
-     * Construct a new wildcard filter for a single wildcard
+     * Construct a new case-sensitive wildcard filter for a single wildcard.
      *
-     * @param wildcard wildcard to match
+     * @param wildcard  the wildcard to match
      * @throws IllegalArgumentException if the pattern is null
      */
     public WildcardFilter(String wildcard) {
         if (wildcard == null) {
-            throw new java.lang.IllegalArgumentException();
+            throw new IllegalArgumentException("The wildcard must not be null");
         }
-    
-        wildcards = new String[] { wildcard };
+        this.wildcards = new String[] { wildcard };
     }
 
     /**
-     * Construct a new wildcard filter for an array of wildcards
+     * Construct a new case-sensitive wildcard filter for an array of wildcards.
      *
-     * @param wildcards wildcards to match
+     * @param wildcards  the array of wildcards to match
      * @throws IllegalArgumentException if the pattern array is null
      */
     public WildcardFilter(String[] wildcards) {
         if (wildcards == null) {
-            throw new java.lang.IllegalArgumentException();
+            throw new IllegalArgumentException("The wildcard array must not be null");
         }
-    
         this.wildcards = wildcards;
     }
 
     /**
-     * Construct a new wildcard filter for a list of wildcards
+     * Construct a new case-sensitive wildcard filter for a list of wildcards.
      *
-     * @param wildcards list of wildcards to match
+     * @param wildcards  the list of wildcards to match
      * @throws IllegalArgumentException if the pattern list is null
      * @throws ClassCastException if the list does not contain Strings
      */
     public WildcardFilter(List wildcards) {
         if (wildcards == null) {
-            throw new java.lang.IllegalArgumentException();
+            throw new IllegalArgumentException("The wildcard list must not be null");
         }
-    
         this.wildcards = (String[]) wildcards.toArray(new String[wildcards.size()]);
     }
 
+    //-----------------------------------------------------------------------
     /**
      * Checks to see if the filename matches one of the wildcards.
      *
-     * @param dir   the file directory
+     * @param dir  the file directory
      * @param name  the filename
      * @return true if the filename matches one of the wildcards
      */
@@ -84,13 +90,13 @@
         if (dir != null && new File(dir, name).isDirectory()) {
             return false;
         }
-    
+        
         for (int i = 0; i < wildcards.length; i++) {
             if (FilenameUtils.wildcardMatch(name, wildcards[i])) {
                 return true;
             }
         }
-    
+        
         return false;
     }
 
@@ -104,13 +110,13 @@
         if (file.isDirectory()) {
             return false;
         }
-    
+        
         for (int i = 0; i < wildcards.length; i++) {
             if (FilenameUtils.wildcardMatch(file.getName(), wildcards[i])) {
                 return true;
             }
         }
-    
+        
         return false;
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org