SearchProcessor uses ProgressParser to parse source files and create an index with all the statements found. Then, you can search files using Google-like queries.
The box below shows the Java code used to create an index and search statements:
import net.cordova.justus.smartgrep.*;
import java.io.*;
public class MyTest {
public static void main(String args[]) {
File indexDir = new File(args[0]); // Path to where the index will be created
File sourceDir = new File(args[1]); // Path to a folder with source files
// Path to source files
SearchPathInfo info = new SearchPathInfo();
info.setPath(sourceDir);
info.setExtensions(new String[] {"p", "w", "i", "cls"});
info.setRecursive(true);
// Creates database and add source codes
SearchProcessor p = new SearchProcessor(sourceDir);
p.prepareProcessing();
p.addPath(info);
p.finishProcessing();
// Search FOR and FIND statements without NO-LOCK or EXCLUSIVE-LOCK
String queryString = "+(FOR OR FIND) NOT \"NO-LOCK\" NOT \"EXCLUSIVE-LOCK\"";
HashMap<File, Collection<GenericProgressStatement>> result = p.search(queryString, new String[] {"Find", "For"});
for(File f : result.keySet()) {
System.out.println(f.getAbsolutePath());
System.out.println("==================================");
for(GenericProgressStatement stmt : result.get(f)) {
System.out.println(stmt);
}
System.out.println("");
}
}
} |