Author: bayard
Date: Thu Jul 20 23:39:58 2006
New Revision: 424198
URL: http://svn.apache.org/viewvc?rev=424198&view=rev
Log:
Returned the IO dependency after chatting with Niall. Better to wait until we
have are closer to a release to decide how this should relate to IO. Also added
Niall's name to project.xml
Modified:
jakarta/commons/sandbox/finder/trunk/project.xml
jakarta/commons/sandbox/finder/trunk/src/java/org/apache/commons/finder/filters/NameFilter.java
Modified: jakarta/commons/sandbox/finder/trunk/project.xml
URL:
http://svn.apache.org/viewvc/jakarta/commons/sandbox/finder/trunk/project.xml?rev=424198&r1=424197&r2=424198&view=diff
==============================================================================
--- jakarta/commons/sandbox/finder/trunk/project.xml (original)
+++ jakarta/commons/sandbox/finder/trunk/project.xml Thu Jul 20 23:39:58 2006
@@ -59,11 +59,22 @@
<developer>
<name>Henri Yandell</name>
<id>bayard</id>
- <email>[EMAIL PROTECTED]</email>
+ <email>bayard at apache dot org</email>
+ </developer>
+ <developer>
+ <name>Niall Pemberton</name>
+ <id>niallp</id>
+ <email>niallp at apache dot org</email>
</developer>
</developers>
<dependencies>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.2</version>
+ <url>http://jakarta.apache.org/commons/io/</url>
+ </dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
Modified:
jakarta/commons/sandbox/finder/trunk/src/java/org/apache/commons/finder/filters/NameFilter.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/sandbox/finder/trunk/src/java/org/apache/commons/finder/filters/NameFilter.java?rev=424198&r1=424197&r2=424198&view=diff
==============================================================================
---
jakarta/commons/sandbox/finder/trunk/src/java/org/apache/commons/finder/filters/NameFilter.java
(original)
+++
jakarta/commons/sandbox/finder/trunk/src/java/org/apache/commons/finder/filters/NameFilter.java
Thu Jul 20 23:39:58 2006
@@ -19,6 +19,8 @@
import java.util.Stack;
import java.util.ArrayList;
+import org.apache.commons.io.FilenameUtils;
+
/**
* [EMAIL PROTECTED] java.io.FileFilter} implementation that uses wildcard
matching on the file name.
*
@@ -93,7 +95,12 @@
* <code>false</code> .
*/
protected boolean test(File file) {
- return wildcardMatch(getName(file), getWildcardmatcher(),
isMatchOnSystem());
+ if( isMatchOnSystem() ) {
+ // TODO: Switch to using the IOCase API when IO 1.3 comes out
+ return FilenameUtils.wildcardMatch(getName(file).toLowerCase(),
getWildcardmatcher().toLowerCase());
+ } else {
+ return FilenameUtils.wildcardMatch(getName(file),
getWildcardmatcher());
+ }
}
/**
@@ -106,140 +113,4 @@
return file.getName();
}
- //
****************************************************************************
- // ********** FOLLOWING METHODS WERE COPIED FROM Commons IO
*******************
- // ********** FilenameUtils.wildcardMatch()
*******************
- // ********** FilenameUtils.splitOnTokens()
*******************
- //
****************************************************************************
-
- /**
- * Checks a filename to see if it matches the specified wildcard matcher.
- * <p>
- * The wildcard matcher uses the characters '?' and '*' to represent a
- * single or multiple wildcard characters.
- *
- * @param filename the filename to match on
- * @param wildcardMatcher the wildcard string to match against
- * @param system whether to use the system (windows or unix)
- * @return true if the filename matches the wilcard string
- */
- private static boolean wildcardMatch(String filename, String
wildcardMatcher, boolean system) {
- if (filename == null && wildcardMatcher == null) {
- return true;
- }
- if (filename == null || wildcardMatcher == null) {
- return false;
- }
- if (system && (SYSTEM_SEPARATOR == WINDOWS_SEPARATOR)) {
- filename = filename.toLowerCase();
- wildcardMatcher = wildcardMatcher.toLowerCase();
- }
- String[] wcs = splitOnTokens(wildcardMatcher);
- boolean anyChars = false;
- int textIdx = 0;
- int wcsIdx = 0;
- Stack backtrack = new Stack();
-
- // loop around a backtrack stack, to handle complex * matching
- do {
- if (backtrack.size() > 0) {
- int[] array = (int[]) backtrack.pop();
- wcsIdx = array[0];
- textIdx = array[1];
- anyChars = true;
- }
-
- // loop whilst tokens and text left to process
- while (wcsIdx < wcs.length) {
-
- if (wcs[wcsIdx].equals("?")) {
- // ? so move to next text char
- textIdx++;
- anyChars = false;
-
- } else if (wcs[wcsIdx].equals("*")) {
- // set any chars status
- anyChars = true;
- if (wcsIdx == wcs.length - 1) {
- textIdx = filename.length();
- }
-
- } else {
- // matching text token
- if (anyChars) {
- // any chars then try to locate text token
- textIdx = filename.indexOf(wcs[wcsIdx], textIdx);
- if (textIdx == -1) {
- // token not found
- break;
- }
- int repeat = filename.indexOf(wcs[wcsIdx], textIdx +
1);
- if (repeat >= 0) {
- backtrack.push(new int[] {wcsIdx, repeat});
- }
- } else {
- // matching from current position
- if (!filename.startsWith(wcs[wcsIdx], textIdx)) {
- // couldnt match token
- break;
- }
- }
-
- // matched text token, move text index to end of matched
token
- textIdx += wcs[wcsIdx].length();
- anyChars = false;
- }
-
- wcsIdx++;
- }
-
- // full match
- if (wcsIdx == wcs.length && textIdx == filename.length()) {
- return true;
- }
-
- } while (backtrack.size() > 0);
-
- return false;
- }
-
- /**
- * Splits a string into a number of tokens.
- *
- * @param text the text to split
- * @return the tokens, never null
- */
- static String[] splitOnTokens(String text) {
- // used by wildcardMatch
- // package level so a unit test may run on this
-
- if (text.indexOf("?") == -1 && text.indexOf("*") == -1) {
- return new String[] { text };
- }
-
- char[] array = text.toCharArray();
- ArrayList list = new ArrayList();
- StringBuffer buffer = new StringBuffer();
- for (int i = 0; i < array.length; i++) {
- if (array[i] == '?' || array[i] == '*') {
- if (buffer.length() != 0) {
- list.add(buffer.toString());
- buffer.setLength(0);
- }
- if (array[i] == '?') {
- list.add("?");
- } else if (list.size() == 0 ||
- (i > 0 && list.get(list.size() - 1).equals("*") ==
false)) {
- list.add("*");
- }
- } else {
- buffer.append(array[i]);
- }
- }
- if (buffer.length() != 0) {
- list.add(buffer.toString());
- }
-
- return (String[]) list.toArray(new String[0]);
- }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]