View Javadoc

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