View Javadoc

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 }