1
2
3 package org.galagosearch.core.parse;
4
5 import java.io.ByteArrayOutputStream;
6 import java.io.IOException;
7 import java.io.ObjectOutputStream;
8 import org.galagosearch.core.types.KeyValuePair;
9 import org.galagosearch.tupleflow.InputClass;
10 import org.galagosearch.tupleflow.OutputClass;
11 import org.galagosearch.tupleflow.StandardStep;
12 import org.galagosearch.tupleflow.Utility;
13 import org.galagosearch.tupleflow.execution.Verified;
14
15 /***
16 * <p>This is used in conjunction with KeyValuePairToDocument. Since Document
17 * is not a real Galago type, it needs to be converted to a KeyValuePair in order
18 * to be passed between stages (or to a Sorter).</p>
19
20 * @author trevor
21 */
22 @Verified
23 @InputClass(className = "org.galagosearch.core.parse.Document")
24 @OutputClass(className = "org.galagosearch.core.types.KeyValuePair")
25 public class DocumentToKeyValuePair extends StandardStep<Document, KeyValuePair> {
26 @Override
27 public void process(Document document) throws IOException {
28 ByteArrayOutputStream array = new ByteArrayOutputStream();
29 ObjectOutputStream output = new ObjectOutputStream(array);
30 output.writeObject(document);
31 output.close();
32
33 byte[] key = Utility.makeBytes(document.identifier);
34 byte[] value = array.toByteArray();
35 KeyValuePair pair = new KeyValuePair(key, value);
36 processor.process(pair);
37 }
38 }