AnnotationFeatureAccessor.java
01 /*
02  *  AnnotationFeatureAccessor - 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 
21 /**
22  * Accessor that returns a named feature value.
23  *
24  @author esword
25  */
26 public class AnnotationFeatureAccessor implements AnnotationAccessor {
27 
28   private static final long serialVersionUID = 9118181222280392932L;
29 
30   protected String featureName;
31 
32   public AnnotationFeatureAccessor() {
33   }
34 
35   public AnnotationFeatureAccessor(Object key) {
36     setKey(key);
37   }
38 
39   /**
40    * Obtain a named feature
41    */
42   @Override
43   public Object getValue(Annotation annot, AnnotationSet context) {
44 
45     if(featureName == null || featureName.length() == 00)
46       throw new IllegalStateException("setKey has not been called with "
47               "the featureName or key was empty");
48 
49     if(annot == null || annot.getFeatures() == nullreturn null;
50 
51     return annot.getFeatures().get(featureName);
52   }
53 
54   @Override
55   public int hashCode() {
56     final int prime = 31;
57     int result = 1;
58     result =
59             prime * result
60                     ((featureName == null: featureName.hashCode());
61     return result;
62   }
63 
64   @Override
65   public boolean equals(Object obj) {
66     if(this == objreturn true;
67     if(obj == nullreturn false;
68     if(getClass() != obj.getClass()) return false;
69     AnnotationFeatureAccessor other = (AnnotationFeatureAccessor)obj;
70     if(featureName == null) {
71       if(other.featureName != nullreturn false;
72     else if(!featureName.equals(other.featureName)) return false;
73     return true;
74   }
75 
76   @Override
77   public String toString() {
78     return featureName;
79   }
80 
81   @Override
82   public void setKey(Object key) {
83     if(key != nullfeatureName = key.toString();
84   }
85 
86   @Override
87   public Object getKey() {
88     return featureName;
89   }
90 }