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.match; 26 27 import java.util.regex.*; 28 29 import mk.fsgrep.Fsgrep; 30 import mk.fsgrep.util.TargetFile; 31 32 /*** 33 * Search for a regular expression in a file. 34 * 35 * @author Murali Krishnan 36 * 37 */ 38 public abstract class FileSearch implements Runnable { 39 40 //------------------------------------------------------------ 41 //- Class Variables 42 43 44 45 //------------------------------------------------------------ 46 //- Class Functions 47 48 49 //------------------------------------------------------------ 50 //- Instance Variables 51 52 private Pattern _re = null; 53 private TargetFile _file = null; 54 private int _count = 0; 55 private MatchResult _results = null; 56 private Fsgrep _model = null; 57 private int _linesSearched = 0; 58 59 60 61 //------------------------------------------------------------ 62 //- Constructors 63 64 65 //------------------------------------------------------------ 66 //- Accessors 67 68 protected Pattern getRE() {return _re;} 69 protected TargetFile getFile() {return _file;} 70 protected Fsgrep getModel() {return _model;} 71 public int getCount() {return _count;} 72 public MatchResult getResults() {return _results;} 73 public int getLinesSearched() {return _linesSearched;} 74 75 76 77 //------------------------------------------------------------ 78 //- Settors 79 80 public void setResults(MatchResult val) {_results=val;} 81 82 83 84 //------------------------------------------------------------ 85 //- Private/Protected Utility Functions 86 87 protected void incrementCount() {_count++;} 88 89 90 protected void incrementLinesSearched() {_linesSearched++;} 91 92 93 public MatchResult getOrCreateResults() { 94 if (getResults() == null) { 95 setResults(new MatchResult(getFile())); 96 } 97 98 MatchResult result = getResults(); 99 100 return result; 101 } 102 103 104 //------------------------------------------------------------ 105 //- Public Interface Functions 106 107 public void initialize(Pattern pRE, TargetFile pFile, Fsgrep pModel) { 108 _re = pRE; 109 _file = pFile; 110 _model = pModel; 111 } 112 113 114 public void run() { 115 search(); 116 117 getModel().finishFile(this); 118 } 119 120 121 //------------------------------------------------------------ 122 //- Class Interface Functions 123 124 public abstract void search(); 125 126 public void stopAfterFirstMatch() { 127 // Do nothing. 128 } 129 130 131 //------------------------------------------------------------ 132 //- Inner Classes 133 134 135 136 //------------------------------------------------------------ 137 //- Main 138 139 140 141 }