CorpusExporter.java
01 /*
02  *  Copyright (c) 1995-2014, The University of Sheffield. See the file
03  *  COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
04  *
05  *  This file is part of GATE (see http://gate.ac.uk/), and is free
06  *  software, licenced under the GNU Library General Public License,
07  *  Version 2, June 1991 (in the distribution as file licence.html,
08  *  and also available at http://gate.ac.uk/gate/licence.html).
09  *
10  *  Ian Roberts, 03/11/2014
11  *
12  */
13 package gate;
14 
15 import java.io.File;
16 import java.io.FileOutputStream;
17 import java.io.IOException;
18 import java.io.OutputStream;
19 
20 import org.apache.commons.io.IOUtils;
21 
22 /**
23  * A {@link DocumentExporter} that is also capable of exporting
24  * a whole corpus to a single file.
25  */
26 public abstract class CorpusExporter extends DocumentExporter {
27 
28   private static final long serialVersionUID = 3172689319810927933L;
29 
30   public CorpusExporter(String fileType, String defaultExtension,
31           String mimeType) {
32     super(fileType, defaultExtension, mimeType);
33   }
34 
35   /**
36    * Equivalent to {@link #export(Corpus,File,FeatureMap)} with an empty map
37    * of options.
38    */
39   public void export(Corpus corpus, File filethrows IOException {
40     export(corpus, file, Factory.newFeatureMap());
41   }
42 
43   /**
44    * Equivalent to {@link #export(Corpus,OutputStream,FeatureMap)} using a
45    * FileOutputStream instance constructed from the File param.
46    */
47   public void export(Corpus corpus, File file, FeatureMap options)
48           throws IOException {
49     FileOutputStream out = null;
50     try {
51       out = new FileOutputStream(file);
52       export(corpus, new FileOutputStream(file), options);
53       out.flush();
54     finally {
55       IOUtils.closeQuietly(out);
56     }
57   }
58 
59   /**
60    * Equivalent to {@link #export(Corpus,OutputStream)} with an empty
61    * map of options.
62    */
63   public void export(Corpus corpus, OutputStream outthrows IOException {
64     export(corpus, out, Factory.newFeatureMap());
65   }
66 
67   /**
68    * Exports the provided {@link Corpus} instance to the specified
69    {@link OutputStream} using the specified options.
70    
71    @param corpus the corpus to export
72    @param out the OutputStream to export the document to
73    @param options DocumentExporter specific options
74    */
75   public abstract void export(Corpus corpus, OutputStream out, FeatureMap options)
76           throws IOException;
77 }