|
AnnotationDeletePR |
|
1 /* 2 * AnnotationDeletePR.java 3 * 4 * Copyright (c) 1998-2001, The University of Sheffield. 5 * 6 * This file is part of GATE (see http://gate.ac.uk/), and is free 7 * software, licenced under the GNU Library General Public License, 8 * Version 2, June 1991 (in the distribution as file licence.html, 9 * and also available at http://gate.ac.uk/gate/licence.html). 10 * 11 * Kalina Bontcheva, 19/10/2001 12 * 13 * $Id: AnnotationDeletePR.java,v 1.5 2001/11/24 17:01:39 kalina Exp $ 14 */ 15 16 package gate.creole.annotdelete; 17 18 import java.util.*; 19 import gate.*; 20 import gate.creole.*; 21 import gate.util.*; 22 23 /** 24 * This class is the implementation of a processing resource which 25 * deletes all annotations and sets other than 'original markups'. 26 * If put at the start of an application, it'll ensure that the 27 * document is restored to its clean state before being processed. 28 */ 29 public class AnnotationDeletePR extends AbstractLanguageAnalyser 30 implements ProcessingResource { 31 32 protected String markupSetName = GateConstants.ORIGINAL_MARKUPS_ANNOT_SET_NAME; 33 protected List annotationTypes; 34 35 /** Initialise this resource, and return it. */ 36 public Resource init() throws ResourceInstantiationException 37 { 38 return super.init(); 39 } // init() 40 41 /** 42 * Reinitialises the processing resource. After calling this method the 43 * resource should be in the state it is after calling init. 44 * If the resource depends on external resources (such as rules files) then 45 * the resource will re-read those resources. If the data used to create 46 * the resource has changed since the resource has been created then the 47 * resource will change too after calling reInit(). 48 */ 49 public void reInit() throws ResourceInstantiationException 50 { 51 init(); 52 } // reInit() 53 54 /** Run the resource. */ 55 public void execute() throws ExecutionException { 56 57 if(document == null) 58 throw new GateRuntimeException("No document to process!"); 59 60 //first clear the default set, which cannot be removed 61 if (annotationTypes == null || annotationTypes.isEmpty()) 62 document.getAnnotations().clear(); 63 else 64 removeSubSet(document.getAnnotations()); 65 66 //get the names of all sets 67 Map namedSets = document.getNamedAnnotationSets(); 68 //nothing left to do if there are no named sets 69 if (namedSets == null || namedSets.isEmpty()) 70 return; 71 72 //loop through the sets and delete them all unless they're original markups 73 List setNames = new ArrayList(namedSets.keySet()); 74 Iterator iter = setNames.iterator(); 75 while (iter.hasNext()) { 76 String setName = (String) iter.next(); 77 if (! setName.equals(markupSetName)) { 78 if(annotationTypes == null || annotationTypes.isEmpty()) 79 document.removeAnnotationSet(setName); 80 else 81 removeSubSet(document.getAnnotations(setName)); 82 }//if 83 } 84 85 } // execute() 86 87 private void removeSubSet(AnnotationSet theSet) { 88 AnnotationSet toRemove = theSet.get(new HashSet(annotationTypes)); 89 if (toRemove == null || toRemove.isEmpty()) 90 return; 91 theSet.removeAll(toRemove); 92 93 }//removeSubSet 94 95 public void setMarkupASName(String newMarkupASName) { 96 markupSetName = newMarkupASName; 97 } 98 99 public String getMarkupASName() { 100 return markupSetName; 101 } 102 103 public List getAnnotationTypes() { 104 return this.annotationTypes; 105 } 106 107 public void setAnnotationTypes(List newTypes) { 108 annotationTypes = newTypes; 109 } 110 111 } // class AnnotationSetTransfer 112
|
AnnotationDeletePR |
|