View Javadoc

1   // BSD License (http://www.galagosearch.org/license)
2   package org.galagosearch.core.parse;
3   
4   import java.io.IOException;
5   import java.util.HashMap;
6   import org.galagosearch.core.types.DocumentExtent;
7   import org.galagosearch.core.types.NumberedDocumentData;
8   import org.galagosearch.core.types.NumberedExtent;
9   import org.galagosearch.tupleflow.InputClass;
10  import org.galagosearch.tupleflow.OutputClass;
11  import org.galagosearch.tupleflow.StandardStep;
12  import org.galagosearch.tupleflow.TupleFlowParameters;
13  import org.galagosearch.tupleflow.TypeReader;
14  import org.galagosearch.tupleflow.Utility;
15  import org.galagosearch.tupleflow.execution.ErrorHandler;
16  import org.galagosearch.tupleflow.execution.Verification;
17  import org.galagosearch.tupleflow.execution.Verified;
18  
19  /***
20   *
21   * @author trevor
22   */
23  @InputClass(className = "org.galagosearch.core.types.DocumentExtent")
24  @OutputClass(className = "org.galagosearch.core.types.NumberedExtent")
25  @Verified
26  public class ExtentsNumberer extends StandardStep<DocumentExtent, NumberedExtent> {
27      HashMap<String, Integer> documentNumbers = new HashMap();
28  
29      public void process(DocumentExtent object) throws IOException {
30          int documentNumber = documentNumbers.get(object.identifier);
31          processor.process(new NumberedExtent(Utility.makeBytes(object.extentName),
32                  documentNumber, object.begin, object.end));
33      }
34  
35      public ExtentsNumberer(TupleFlowParameters parameters) throws IOException {
36          TypeReader<NumberedDocumentData> reader = parameters.getTypeReader("numberedDocumentData");
37          NumberedDocumentData docData;
38  
39          while ((docData = reader.read()) != null) {
40              documentNumbers.put(docData.identifier, docData.number);
41          }
42      }
43  
44      public static void verify(TupleFlowParameters parameters, ErrorHandler handler) {
45          Verification.verifyTypeReader("nubmeredDocumentData", DocumentExtent.class, parameters,
46                  handler);
47      }
48  }