View Javadoc

1   // BSD License (http://www.galagosearch.org/license)
2   package org.galagosearch.tupleflow;
3   
4   import java.io.DataOutputStream;
5   import java.io.File;
6   import java.io.IOException;
7   
8   /***
9    *
10   * @author trevor
11   */
12  public class FileOrderedWriter<T> implements Processor<T> {
13      String filename;
14      Order<T> order;
15      DataOutputStream dataStream;
16      ArrayOutput stream;
17      Processor<T> orderedWriter;
18  
19      public FileOrderedWriter(String filename, Order<T> order, boolean compressed) throws IOException {
20          this.filename = filename;
21          this.order = order;
22  
23          dataStream = StreamCreator.realOutputStream(filename);
24          if (compressed) {
25              stream = new ArrayOutput(new VByteOutput(dataStream));
26          } else {
27              stream = new ArrayOutput(dataStream);
28          }
29          stream.writeString(order.getOrderedClass().getName());
30          stream.writeStrings(order.getOrderSpec());
31          this.orderedWriter = order.orderedWriter(stream);
32      }
33  
34      public FileOrderedWriter(String filename, Order<T> order) throws IOException {
35          this(filename, order, true);
36      }
37  
38      public FileOrderedWriter(File file, Order<T> order) throws IOException {
39          this(file.getPath(), order, true);
40      }
41  
42      public Class<T> getInputClass() {
43          return order.getOrderedClass();
44      }
45  
46      public void process(T object) throws IOException {
47          orderedWriter.process(object);
48      }
49  
50      public void close() throws IOException {
51          orderedWriter.close();
52          dataStream.close();
53      }
54  }