package no.priv.garshol.duke; import java.util.Collection; import java.util.Collections; import java.io.IOException; import org.xml.sax.SAXException; import no.priv.garshol.duke.RecordImpl; import no.priv.garshol.duke.utils.CommandLineParser; import no.priv.garshol.duke.matchers.PrintMatchListener; /** * Search for records and display the matching ones. */ public class RecordSearch extends AbstractCmdlineTool { public static void main(String[] argv) throws IOException, SAXException { new RecordSearch().run(argv); } public void run(String[] argv) throws IOException, SAXException { Collection<CommandLineParser.Option> options = Collections.singleton((CommandLineParser.Option) new CommandLineParser.StringOption("maxhits", 'H')); argv = init(argv, 3, 3, options); int max_hits = 10000; if (parser.getOptionValue("maxhits") != null) max_hits = Integer.parseInt(parser.getOptionValue("maxhits")); // build record RecordImpl prototype = new RecordImpl(); prototype.addValue(argv[1], argv[2]); // search Collection<Record> records = database.findCandidateMatches(prototype); int hitno = 1; for (Record record : records) { PrintMatchListener.prettyPrint(record, config.getProperties()); System.out.println(); if (hitno++ == max_hits) break; } } protected void usage() { System.out.println(""); System.out.println("java no.priv.garshol.duke.RecordSearch <cfgfile> <property> <query>"); System.out.println(""); System.out.println(" --reindex: Reindex all records before comparing"); System.out.println(" --maxhits: Don't return more than this number of records"); } }