01: /*
02: * Created on Feb 12, 2004
03: *
04: * To change the template for this generated file go to
05: * Window>Preferences>Java>Code Generation>Code and Comments
06: */
07: package org.xdev.base.xssl.io;
08:
09: import java.io.File;
10: import java.io.FilenameFilter;
11: import java.util.StringTokenizer;
12:
13: import org.apache.log4j.Level;
14: import org.xdev.base.log.LoggerWriter;
15:
16: /**
17: * @author AYegorov
18: *
19: * To change the template for this generated type comment go to
20: * Window>Preferences>Java>Code Generation>Code and Comments
21: */
22: public class FileNameFilter implements FilenameFilter {
23: private String filter = null;
24:
25: /**
26: *
27: */
28: public FileNameFilter(String filter) {
29: super ();
30:
31: this .filter = filter;
32: }
33:
34: /* (non-Javadoc)
35: * @see java.io.FilenameFilter#accept(java.io.File, java.lang.String)
36: */
37: public boolean accept(File dir, String name) {
38: boolean flag = true;
39:
40: LoggerWriter.log("Evaluating file " + name + " against filter "
41: + this .filter, Level.DEBUG_INT, this .getClass());
42:
43: StringTokenizer tokens = new StringTokenizer(this .filter, "*");
44:
45: String token = null;
46:
47: int size = tokens.countTokens();
48:
49: for (int i = 0; i < size; i++) {
50:
51: token = tokens.nextToken();
52:
53: if (!"".equals(token)) {
54:
55: LoggerWriter.log("At index " + i + " evaluating file "
56: + name + " against filter token " + token,
57: Level.DEBUG_INT, this .getClass());
58:
59: if (i == 0 && !name.startsWith(token)) {
60: LoggerWriter.log(name + " does not start with "
61: + token, Level.DEBUG_INT, this .getClass());
62:
63: flag = false;
64: break;
65: } else if (i > 0 && i == size - 1
66: && !name.endsWith(token)) {
67: LoggerWriter.log(name + " does not end with "
68: + token, Level.DEBUG_INT, this .getClass());
69:
70: flag = false;
71: break;
72: } else if (i > 0 && i < size
73: && name.indexOf(token) == -1) {
74: LoggerWriter.log(name + " does not contain "
75: + token, Level.DEBUG_INT, this .getClass());
76:
77: flag = false;
78: break;
79: }
80:
81: LoggerWriter.log(
82: "Token match found, finding next token...",
83: Level.DEBUG_INT, this.getClass());
84:
85: name = name.substring(name.indexOf(token)
86: + token.length(), name.length());
87: }
88: }
89:
90: return flag;
91: }
92: }
|