01: /**
02: * JOnAS: Java(TM) Open Application Server
03: * Copyright (C) 1999-2004 Bull S.A.
04: * Contact: jonas-team@objectweb.org
05: *
06: * This library is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU Lesser General Public
08: * License as published by the Free Software Foundation; either
09: * version 2.1 of the License, or any later version.
10: *
11: * This library is distributed in the hope that it will be useful,
12: * but WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: * Lesser General Public License for more details.
15: *
16: * You should have received a copy of the GNU Lesser General Public
17: * License along with this library; if not, write to the Free Software
18: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
19: * USA
20: *
21: * Initial developer(s): Florent BENOIT & Ludovic BERT
22: * --------------------------------------------------------------------------
23: * $Id: JFileFilter.java 4804 2004-05-25 15:13:29Z benoitf $
24: * --------------------------------------------------------------------------
25: */package org.objectweb.jonas.server;
26:
27: //import java
28: import java.util.StringTokenizer;
29: import java.io.File;
30: import java.io.FileFilter;
31:
32: /**
33: * This class implements a FileFilter, used to list files of a directory.
34: * @author Ludovic Bert
35: * @author Florent Benoit
36: */
37: public class JFileFilter implements FileFilter {
38:
39: /**
40: * The extensions that match in the file filter.
41: */
42: private String[] extensions = null;
43:
44: /**
45: * Contruct a new JFileFilter with the specified filter.
46: * @param filter the filter to use. A comma-separated list of the allowed
47: * extensions. For instance ".jar,.dtd", note that ".*" is allowed.
48: */
49: public JFileFilter(String filter) {
50: StringTokenizer st = new StringTokenizer(filter, ",");
51: int tokenCount = st.countTokens();
52: extensions = new String[tokenCount];
53: for (int i = 0; i < tokenCount; i++) {
54: extensions[i] = st.nextToken();
55: }
56: }
57:
58: /**
59: * Tests whether or not the specified abstract pathname should be included
60: * in a pathname list.
61: * @param pathname the abstract pathname to be tested.
62: * @return true if and only if pathname should be included.
63: */
64: public boolean accept(File pathname) {
65: if (pathname.isDirectory()) {
66: return true;
67: } else {
68: for (int i = 0; i < extensions.length; i++) {
69: if (extensions[i].equals(".*")) {
70: return true;
71: } else {
72: if (pathname.getName().endsWith(extensions[i])) {
73: return true;
74: }
75: }
76: }
77: return false;
78: }
79: }
80: }
|