1
2 package org.galagosearch.core.parse;
3
4 import java.io.BufferedReader;
5 import java.io.File;
6 import java.io.FileNotFoundException;
7 import java.io.FileReader;
8 import java.io.IOException;
9 import org.galagosearch.core.types.DocumentProbability;
10 import org.galagosearch.tupleflow.ExNihiloSource;
11 import org.galagosearch.tupleflow.IncompatibleProcessorException;
12 import org.galagosearch.tupleflow.Linkage;
13 import org.galagosearch.tupleflow.OutputClass;
14 import org.galagosearch.tupleflow.Processor;
15 import org.galagosearch.tupleflow.Step;
16 import org.galagosearch.tupleflow.TupleFlowParameters;
17 import org.galagosearch.tupleflow.execution.ErrorHandler;
18 import org.galagosearch.tupleflow.execution.Verification;
19
20 /***
21 *
22 * @author trevor
23 */
24 @OutputClass(className = "org.galagosearch.core.types.DocumentProbability")
25 public class PriorParser implements ExNihiloSource<DocumentProbability> {
26 public Processor<DocumentProbability> processor;
27 BufferedReader reader;
28
29 public PriorParser(TupleFlowParameters parameters) throws FileNotFoundException, IOException {
30 String fileName = parameters.getXML().get("filename");
31 reader = new BufferedReader(new FileReader(fileName));
32 }
33
34 public void setProcessor(Step processor) throws IncompatibleProcessorException {
35 Linkage.link(this, processor);
36 }
37
38 public void run() throws IOException {
39 String line;
40
41 while ((line = reader.readLine()) != null) {
42 if (line.startsWith("#")) {
43 continue;
44 }
45 String[] fields = line.split(" ");
46 if (fields.length != 2) {
47 continue;
48 }
49 String document = fields[0];
50 String probability = fields[1];
51
52 processor.process(new DocumentProbability(document, Double.parseDouble(probability)));
53 }
54
55 processor.close();
56 }
57
58 public Class<DocumentProbability> getOutputClass() {
59 return DocumentProbability.class;
60 }
61
62 public static void verify(TupleFlowParameters parameters, ErrorHandler handler) {
63 if (!Verification.requireParameters(new String[]{"filename"}, parameters.getXML(), handler)) {
64 return;
65 }
66 String filename = parameters.getXML().get("filename");
67 if (!new File(filename).isFile()) {
68 handler.addError("File " + filename + " does not exist.");
69 }
70 }
71 }