ConstraintPredicate.java
01 /*
02  *  ConstraintPredicate - transducer class
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  *  Eric Sword, 03/09/08
13  *
14  *  $Id$
15  */
16 package gate.jape.constraint;
17 
18 import gate.Annotation;
19 import gate.AnnotationSet;
20 import gate.jape.JapeException;
21 
22 import java.io.Serializable;
23 
24 /**
25  * A predicate defines a single boolean operation on an
26  {@link gate.Annotation} or some property of an annotation. These are
27  * also referred to as attributes of a constraint.
28  <p>
29  * Implementors will determine if a provided annotation matches the
30  * predicate based on the intent of the operator (equals, not equals,
31  * greater than, etc).
32  *
33  @version $Revision$
34  @author esword
35  */
36 public interface ConstraintPredicate extends Serializable {
37 
38   // Standard operators. Note that this was purposefully not done as an
39   // enum so that additional operators could be added dynamically for other
40   // parsers
41   public String EQUAL = "==";
42 
43   public String NOT_EQUAL = "!=";
44   
45   public String GREATER = ">";
46 
47   public String LESSER = "<";
48 
49   public String GREATER_OR_EQUAL = ">=";
50 
51   public String LESSER_OR_EQUAL = "<=";
52 
53   public String REGEXP_FIND = "=~";
54   
55   public String NOT_REGEXP_FIND = "!~";
56   
57   public String REGEXP_MATCH = "==~";
58 
59   public String NOT_REGEXP_MATCH = "!=~";
60 
61   /**
62    * The accessor associated with this predicate.
63    */
64   public AnnotationAccessor getAccessor();
65 
66   /**
67    * Set the accessor associated with this predicate.
68    */
69   public void setAccessor(AnnotationAccessor accessor);
70 
71   /**
72    * The value used in comparisons against passed in data in
73    {@link #matches(Annotation, AnnotationSet)}.
74    */
75   public Object getValue();
76 
77   /**
78    * Set the value used in comparisons against passed in data in
79    {@link #matches(Annotation, AnnotationSet)}.
80    */
81   public void setValue(Object value);
82 
83   /**
84    * String representation of the logic operator that the predicate
85    * implements.
86    */
87   public String getOperator();
88 
89   /**
90    * Evaluates if the provided annotation meets the requirements of the
91    * predicate.
92    @throws JapeException
93    */
94   public boolean matches(Annotation annot, AnnotationSet contextthrows JapeException;
95 }