LanguageAnalyserDocumentProcessor.java
01 /*
02  *  LanguageAnalyserDocumentProcessor.java
03  *  Copyright (c) 1995-2012, The University of Sheffield. See the file
04  *  COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
05  *
06  *  This file is part of GATE (see http://gate.ac.uk/), and is free
07  *  software, licenced under the GNU Library General Public License,
08  *  Version 2, June 1991 (in the distribution as file licence.html,
09  *  and also available at http://gate.ac.uk/gate/licence.html).
10  *
11  *  Ian Roberts, 03/Sep/2009
12  *
13  *  $Id: LanguageAnalyserDocumentProcessor.java 18835 2015-07-28 10:46:28Z ian_roberts $
14  */
15 
16 package gate.util;
17 
18 import gate.Corpus;
19 import gate.LanguageAnalyser;
20 import gate.Document;
21 import gate.Factory;
22 
23 /**
24  {@link DocumentProcessor} that processes documents using a
25  {@link LanguageAnalyser}.
26  */
27 public class LanguageAnalyserDocumentProcessor implements DocumentProcessor {
28 
29   /**
30    * The analyser used to process documents.
31    */
32   protected LanguageAnalyser analyser;
33 
34   /**
35    * Corpus used to contain the document being processed.
36    */
37   private Corpus corpus;
38 
39   public LanguageAnalyserDocumentProcessor() {
40   }
41 
42   /**
43    * Set the controller used to process documents.
44    */
45   public void setAnalyser(LanguageAnalyser a) {
46     this.analyser = a;
47   }
48 
49   public LanguageAnalyser getAnalyser() {
50     return analyser;
51   }
52 
53   @Override
54   public synchronized void processDocument(Document docthrows GateException {
55     if(corpus == null) {
56       corpus = Factory.newCorpus("DocumentProcessor corpus");
57     }
58     try {
59       corpus.add(doc);
60       analyser.setCorpus(corpus);
61       analyser.setDocument(doc);
62       analyser.execute();
63     }
64     finally {
65       analyser.setCorpus(null);
66       analyser.setDocument(null);
67       corpus.clear();
68     }
69   }
70 
71   /**
72    * Clean up resources.  Should be called when this processor is no longer
73    * required.
74    */
75   public synchronized void cleanup() {
76     Factory.deleteResource(analyser);
77     if(corpus != null) {
78       Factory.deleteResource(corpus);
79     }
80   }
81 }