NotContainsPredicate.java
01 /*
02  *  NotWithinPredicate.java
03  *
04  *  Copyright (c) 1995-2012, The University of Sheffield. See the file
05  *  COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
06  *
07  *  This file is part of GATE (see http://gate.ac.uk/), and is free
08  *  software, licenced under the GNU Library General Public License,
09  *  Version 2, June 1991 (in the distribution as file licence.html,
10  *  and also available at http://gate.ac.uk/gate/licence.html).
11  *
12  *  Julien Nioche, 26 Jan 2012
13  */
14 package gate.jape.constraint;
15 
16 import gate.Annotation;
17 import gate.AnnotationSet;
18 import gate.jape.JapeException;
19 
20 import java.util.Collection;
21 
22 /**
23  * Returns false if there is an annotation of the type set in value that is
24  * entirely spanned by the given annotation
25  */
26 public class NotContainsPredicate extends ContainsPredicate {
27 
28   private static final long serialVersionUID = -6988665289497332784L;
29 
30   public static final String OPERATOR = "notContains";
31 
32   @Override
33   public String getOperator() {
34     return OPERATOR;
35   }
36 
37   /**
38    * Sets up environment for concrete class to do the specific matching check
39    */
40   @Override
41   public boolean doMatch(Object annotValue, AnnotationSet context)
42       throws JapeException {
43 
44     Annotation annot = (Annotation)annotValue;
45     AnnotationSet containedSet = doMatch(annot, context);
46 
47     Collection<Annotation> filteredSet = filterMatches(containedSet);
48 
49     // this is where it differs from ContainsPredicate
50     return filteredSet.isEmpty();
51   }
52 
53 }