View Javadoc

1   // BSD License (http://www.galagosearch.org/license)
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  }