1
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 }