gate.annotation
Class AnnotationSetImpl

java.lang.Object
  |
  +--java.util.AbstractCollection
        |
        +--java.util.AbstractSet
              |
              +--gate.annotation.AnnotationSetImpl
All Implemented Interfaces:
AnnotationSet, Cloneable, Collection, Serializable, Set

public class AnnotationSetImpl
extends AbstractSet
implements AnnotationSet

Implementation of AnnotationSet. Has a number of indices, all bar one of which are null by default and are only constructed when asked for. Has lots of get methods with various selection criteria; these return views into the set, which are nonetheless valid sets in their own right (but will not necesarily be fully indexed). Has a name, which is null by default; clients of Document can request named AnnotationSets if they so desire. Has a reference to the Document it is attached to. Contrary to Collections convention, there is no no-arg constructor, as this would leave the set in an inconsistent state.

There are five indices: annotation by id, annotations by type, annotations by start/end node and nodes by offset. The last three jointly provide positional indexing; construction of these is triggered by indexByStart/EndOffset(), or by calling a get method that selects on offset. The type index is triggered by indexByType(), or calling a get method that selects on type. The id index is always present.

See Also:
Serialized Form

Constructor Summary
AnnotationSetImpl(Collection c)
          Construction from Collection (which must be an AnnotationSet)
AnnotationSetImpl(Document doc)
          Construction from Document.
AnnotationSetImpl(Document doc, String name)
          Construction from Document and name.
 
Method Summary
 void add(Integer id, Long start, Long end, String type, FeatureMap features)
          Create and add an annotation from database read data In this case the id is already known being previously fetched from the database
 Integer add(Long start, Long end, String type, FeatureMap features)
          Create and add an annotation and return its id
 Integer add(Node start, Node end, String type, FeatureMap features)
          Create and add an annotation with pre-existing nodes, and return its id
 boolean add(Object o)
          Add an existing annotation.
 void addAnnotationSetListener(AnnotationSetListener l)
           
 void addGateListener(GateListener l)
           
 Object clone()
           
 void edit(Long start, Long end, DocumentContent replacement)
          Propagate changes to the document content.
 boolean equals(Object other)
          Two AnnotationSet are equal if their name, the documents of which belong to the AnnotationSets and annotations from the sets are the same
 Node firstNode()
          Get the node with the smallest offset
 AnnotationSet get()
          Get all annotations
 Annotation get(Integer id)
          Find annotations by id
 AnnotationSet get(Long offset)
          Select annotations by offset.
 AnnotationSet get(Long startOffset, Long endOffset)
          Select annotations by offset.
 AnnotationSet get(Set types)
          Select annotations by a set of types.
 AnnotationSet get(String type)
          Select annotations by type
 AnnotationSet get(String type, FeatureMap constraints)
          Select annotations by type and features
 AnnotationSet get(String type, FeatureMap constraints, Long offset)
          Select annotations by type, features and offset
 Set getAllTypes()
          Get a set of java.lang.String objects representing all the annotation types present in this annotation set.
 Document getDocument()
          Get the document this set is attached to.
 String getName()
          Get the name of this set.
 int hashCode()
           
 Iterator iterator()
          Get an iterator for this set
 Node lastNode()
          Get the node with the largest offset
 Node nextNode(Node node)
          Get the first node that is relevant for this annotation set and which has the offset larger than the one of the node provided.
 boolean remove(Object o)
          Remove an element from this set.
 void removeAnnotationSetListener(AnnotationSetListener l)
           
 void removeGateListener(GateListener l)
           
 int size()
          The size of this set
 
Methods inherited from class java.util.AbstractSet
removeAll
 
Methods inherited from class java.util.AbstractCollection
addAll, clear, contains, containsAll, isEmpty, retainAll, toArray, toArray, toString
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.Set
addAll, clear, contains, containsAll, isEmpty, removeAll, retainAll, toArray, toArray
 

Constructor Detail

AnnotationSetImpl

public AnnotationSetImpl(Document doc)
Construction from Document.

AnnotationSetImpl

public AnnotationSetImpl(Document doc,
                         String name)
Construction from Document and name.

AnnotationSetImpl

public AnnotationSetImpl(Collection c)
                  throws ClassCastException
Construction from Collection (which must be an AnnotationSet)
Method Detail

iterator

public Iterator iterator()
Get an iterator for this set
Specified by:
iterator in interface AnnotationSet
Overrides:
iterator in class AbstractCollection

remove

public boolean remove(Object o)
               throws ClassCastException
Remove an element from this set.
Specified by:
remove in interface AnnotationSet
Overrides:
remove in class AbstractCollection

size

public int size()
The size of this set
Specified by:
size in interface AnnotationSet
Overrides:
size in class AbstractCollection

get

public Annotation get(Integer id)
Find annotations by id
Specified by:
get in interface AnnotationSet

get

public AnnotationSet get()
Get all annotations
Specified by:
get in interface AnnotationSet

get

public AnnotationSet get(String type)
Select annotations by type
Specified by:
get in interface AnnotationSet

get

public AnnotationSet get(Set types)
                  throws ClassCastException
Select annotations by a set of types. Expects a Set of String.
Specified by:
get in interface AnnotationSet

get

public AnnotationSet get(String type,
                         FeatureMap constraints)
Select annotations by type and features
Specified by:
get in interface AnnotationSet

get

public AnnotationSet get(Long offset)
Select annotations by offset. This returns the set of annotations whose start node is the least such that it is less than or equal to offset. If a positional index doesn't exist it is created.
Specified by:
get in interface AnnotationSet

get

public AnnotationSet get(Long startOffset,
                         Long endOffset)
Select annotations by offset. This returns the set of annotations that overlap totaly or partially with the interval defined by the two provided offsets
Specified by:
get in interface AnnotationSet

get

public AnnotationSet get(String type,
                         FeatureMap constraints,
                         Long offset)
Select annotations by type, features and offset
Specified by:
get in interface AnnotationSet

firstNode

public Node firstNode()
Get the node with the smallest offset
Specified by:
firstNode in interface AnnotationSet

lastNode

public Node lastNode()
Get the node with the largest offset
Specified by:
lastNode in interface AnnotationSet

nextNode

public Node nextNode(Node node)
Get the first node that is relevant for this annotation set and which has the offset larger than the one of the node provided.
Specified by:
nextNode in interface AnnotationSet

add

public Integer add(Node start,
                   Node end,
                   String type,
                   FeatureMap features)
Create and add an annotation with pre-existing nodes, and return its id
Specified by:
add in interface AnnotationSet

add

public boolean add(Object o)
            throws ClassCastException
Add an existing annotation. Returns true when the set is modified.
Specified by:
add in interface AnnotationSet
Overrides:
add in class AbstractCollection

add

public Integer add(Long start,
                   Long end,
                   String type,
                   FeatureMap features)
            throws InvalidOffsetException
Create and add an annotation and return its id
Specified by:
add in interface AnnotationSet

add

public void add(Integer id,
                Long start,
                Long end,
                String type,
                FeatureMap features)
         throws InvalidOffsetException
Create and add an annotation from database read data In this case the id is already known being previously fetched from the database
Specified by:
add in interface AnnotationSet

edit

public void edit(Long start,
                 Long end,
                 DocumentContent replacement)
Propagate changes to the document content. Has, unfortunately, to be public, to allow DocumentImpls to get at it. Oh for a "friend" declaration. Doesn't thow InvalidOffsetException as DocumentImpl is the only client, and that checks the offsets before calling this method.

getName

public String getName()
Get the name of this set.
Specified by:
getName in interface AnnotationSet

getDocument

public Document getDocument()
Get the document this set is attached to.
Specified by:
getDocument in interface AnnotationSet

getAllTypes

public Set getAllTypes()
Get a set of java.lang.String objects representing all the annotation types present in this annotation set.
Specified by:
getAllTypes in interface AnnotationSet

clone

public Object clone()
             throws CloneNotSupportedException

removeAnnotationSetListener

public void removeAnnotationSetListener(AnnotationSetListener l)
Specified by:
removeAnnotationSetListener in interface AnnotationSet

addAnnotationSetListener

public void addAnnotationSetListener(AnnotationSetListener l)
Specified by:
addAnnotationSetListener in interface AnnotationSet

equals

public boolean equals(Object other)
Two AnnotationSet are equal if their name, the documents of which belong to the AnnotationSets and annotations from the sets are the same
Specified by:
equals in interface Set
Overrides:
equals in class AbstractSet

hashCode

public int hashCode()
Specified by:
hashCode in interface Set
Overrides:
hashCode in class AbstractSet

removeGateListener

public void removeGateListener(GateListener l)
Specified by:
removeGateListener in interface AnnotationSet

addGateListener

public void addGateListener(GateListener l)
Specified by:
addGateListener in interface AnnotationSet