1 /*
2 * Fsgrep is a simple Java application which allows a user to
3 * search all files in a directory structure for lines matching
4 * a given pattern. Its functionality is a combination of the
5 * Unix 'find' and 'grep' utilities.
6 * Visit [http://fsgrep.sourceforge.net/] for more information.
7 *
8 * Copyright (C) 2003-2006 Murali Krishnan [murali_ca_us@users.sourceforge.net]
9 *
10 * Fsgrep is free software; you can redistribute it and/or modify
11 * it under the terms of version 2 of the GNU General Public
12 * License as published by the Free Software Foundation.
13 *
14 * Fsgrep is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with Fsgrep (see the file named LICENSE.txt); if not, write
21 * to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
22 * Boston, MA 02111-1307 USA
23 */
24
25 package mk.fsgrep.find;
26
27
28 import java.io.*;
29
30
31 /***
32 * Examine the contents of a given directory for subdirectories and desired
33 * files.
34 *
35 * @author Murali Krishnan
36 *
37 */
38 public class DirScan implements Runnable {
39
40 //------------------------------------------------------------
41 //- Class Variables
42
43 protected static final FileFilter FILTER_SUBDIR = new SubdirFilter();
44
45
46
47 //------------------------------------------------------------
48 //- Class Functions
49
50
51
52 //------------------------------------------------------------
53 //- Instance Variables
54
55 private Finder _finder = null;
56 private File _dir = null;
57
58
59
60 //------------------------------------------------------------
61 //- Constructors
62
63 public DirScan(Finder pFinder, File pDir) {
64 _finder = pFinder;
65 _dir = pDir;
66 }
67
68
69 //------------------------------------------------------------
70 //- Accessors
71
72 public Finder getFinder() {return _finder;}
73 public File getDir() {return _dir;}
74
75
76
77 //------------------------------------------------------------
78 //- Settors
79
80
81
82 //------------------------------------------------------------
83 //- Private/Protected Utility Functions
84
85
86
87 //------------------------------------------------------------
88 //- Public Interface Functions
89
90
91
92 //------------------------------------------------------------
93 //- Class Interface Functions
94
95 public void run () {
96 FilenameFilter filter = getFinder().getFilter();
97
98 File[] matches = getDir().listFiles(filter);
99
100 getFinder().addFiles(matches);
101
102 File[] subdirs = getDir().listFiles(FILTER_SUBDIR);
103 getFinder().addSubDirs(subdirs);
104 }
105
106
107
108 //------------------------------------------------------------
109 //- Inner Classes
110
111 static class SubdirFilter implements FileFilter {
112 public boolean accept(File path) {
113 boolean result = path.isDirectory() && !(path.getName().equals("CVS")) && !(path.getName().equals(".svn"));
114
115 return result;
116 }
117 }
118
119
120 //------------------------------------------------------------
121 //- Main
122
123
124
125 }