Interface Annotation
-
- All Superinterfaces:
Changeable
- All Known Subinterfaces:
RichAnnotation
- All Known Implementing Classes:
AbstractAnnotation
,AnnotationChanger
,AnnotationRenamer
,BeanAsAnnotation
,EmptyRichAnnotation
,MergeAnnotation
,OverlayAnnotation
,ReferenceAnnotation
,SimpleAnnotation
,SimpleRichAnnotation
,SmallAnnotation
public interface Annotation extends Changeable
Arbitrary annotation associated with one or more objects.
Biological information often does not fit design patterns very well, and can be a jumble of facts and relationships. Annotation objects provide a standard way for you to store this mess as a property of an object.
Annotations may contain keys that have Annotations as values. In this way, annotations can be shared among multiple Annotatable objects, and you can represent semi-structured data.
It is perfectly possible to wrap up almost any tree-like or flat data structure as Annotation.
Other than when using the constructor, you should be able to interact with nearly all Annotation implementations via this API.- Since:
- 1.0
- Author:
- Matthew Pocock, Thomas Down
- See Also:
RichAnnotation
-
-
Field Summary
Fields Modifier and Type Field Description static Annotation
EMPTY_ANNOTATION
A really useful empty and immutable annotation object.static ChangeType
PROPERTY
This type symbolizes that one or more properties have changed.
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description Map
asMap()
Return a map that contains the same key/values as this Annotation.boolean
containsProperty(Object key)
Returns whether there the property is defined.Object
getProperty(Object key)
Retrieve the value of a property by key.Set
keys()
Get a set of key objects.void
removeProperty(Object key)
Delete a property.void
setProperty(Object key, Object value)
Set the value of a property.-
Methods inherited from interface org.biojava.utils.Changeable
addChangeListener, addChangeListener, isUnchanging, removeChangeListener, removeChangeListener
-
-
-
-
Field Detail
-
PROPERTY
static final ChangeType PROPERTY
This type symbolizes that one or more properties have changed.
-
EMPTY_ANNOTATION
static final Annotation EMPTY_ANNOTATION
A really useful empty and immutable annotation object.
Be careful when stooring Annotation arguments to constructors. It is possible that you have been passed EMPTY_ANNOTATION but that code later on will access this object believing it to be mutable. For example, the SeqIO factory code clones some Annotations passed in on Feature.Template instances Use this instead of null when you really don't want an object or an implementation to have annotation even though it should implement Annotatable.
-
-
Method Detail
-
getProperty
Object getProperty(Object key) throws NoSuchElementException
Retrieve the value of a property by key.
Unlike the Map collections, it will complain if the key does not exist. It will only return null if the key is defined and has value null.
Normal raw access to the property. For cleverer access, use methods in AnnotationType.- Parameters:
key
- the key of the property to retrieve- Returns:
- the object associated with that key
- Throws:
NoSuchElementException
- if there is no property with the key
-
setProperty
void setProperty(Object key, Object value) throws IllegalArgumentException, ChangeVetoException
Set the value of a property.
This method throws an exception if either properties can not be added to this object, or that this particular property is immutable or illegal within the implementation.
Normal raw access to the property. For cleverer access, use methods in AnnotationType.- Parameters:
key
- the key objectvalue
- the new value for this key- Throws:
IllegalArgumentException
- if the propertykey
is not legalChangeVetoException
- if this annotation object can't be changed, or if the change was vetoed.
-
removeProperty
void removeProperty(Object key) throws NoSuchElementException, ChangeVetoException
Delete a property. Normal raw access to the property. For cleverer access, use methods in AnnotationType.- Parameters:
key
- the key object- Throws:
NoSuchElementException
- if the property doesn't existChangeVetoException
- if the change is vetoed- Since:
- 1.3
-
containsProperty
boolean containsProperty(Object key)
Returns whether there the property is defined. Normal raw access to the property. For cleverer access, use methods in AnnotationType.- Parameters:
key
- the key Object to search for- Returns:
- true if this Annotation knows about the key, false otherwise
-
-