NotWithinPredicate.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  *  $Id: NotWithinPredicate.java 17599 2014-03-08 16:30:42Z markagreenwood $
15  */
16 package gate.jape.constraint;
17 
18 import gate.Annotation;
19 import gate.AnnotationSet;
20 import gate.jape.JapeException;
21 
22 import java.util.Collection;
23 
24 /**
25  * Returns false if the given annotation is entirely spanned by an annotation
26  * of the type set in value.
27  */
28 public class NotWithinPredicate extends WithinPredicate {
29 
30   private static final long serialVersionUID = 4478339733567901830L;
31 
32   public static final String OPERATOR = "notWithin";
33 
34     @Override
35     public String getOperator() {
36         return OPERATOR;
37     }
38 
39     /**
40      * Sets up environment for concreate class to do the specific matching check
41      */
42     @Override
43     public boolean doMatch(Object annotValue, AnnotationSet context)
44             throws JapeException {
45 
46       Annotation annot = (Annotation)annotValue;
47       AnnotationSet containedSet = doMatch(annot, context);
48 
49       Collection<Annotation> filteredSet = filterMatches(containedSet);
50 
51       // this is where it differs from WithinPredicate
52       return filteredSet.isEmpty();
53     }
54 
55 }