public class SpanTree extends Object implements Iterable<Annotation>, SpanNodeParent, Comparable<SpanTree>
SpanNode
,
Annotation
Modifier and Type | Class and Description |
---|---|
static class |
SpanTree.IndexKey |
Modifier and Type | Field and Description |
---|---|
private AnnotationContainer |
annotations |
private String |
name |
private SpanNode |
root |
private StringFieldValue |
stringFieldValue |
Constructor and Description |
---|
SpanTree()
WARNING! Only to be used by deserializers! Creates an empty SpanTree instance.
|
SpanTree(SpanTree otherToCopy) |
SpanTree(String name)
Creates a new SpanTree with the given name and an empty SpanList as its root node.
|
SpanTree(String name,
SpanNode root)
Creates a new SpanTree with a given root node.
|
Modifier and Type | Method and Description |
---|---|
SpanTree |
annotate(Annotation a)
Adds an Annotation to the internal list of annotations for this SpanTree. Use this when
adding an Annotation that uses an AnnotationReference, and does not annotate a SpanNode.
|
SpanTree |
annotate(SpanNode node,
Annotation annotation)
Adds an Annotation to the internal list of annotations for this SpanTree. Use this when
adding an Annotation that shall annotate a SpanNode.
|
SpanTree |
annotate(SpanNode node,
AnnotationType type)
Creates an Annotation based on the given AnnotationType, and adds it to the internal list of
annotations for this SpanTree (convenience method). Use this when
adding an Annotation (that does not have a FieldValue) that shall annotate a SpanNode.
|
SpanTree |
annotate(SpanNode node,
AnnotationType type,
FieldValue value)
Adds an Annotation.
|
SpanTree |
annotateFast(SpanNode node,
Annotation annotation)
Adds an Annotation to the internal list of annotations for this SpanTree. Use this when
adding an Annotation that shall annotate a SpanNode.
|
private void |
annotateInternal(SpanNode node,
Annotation annotation) |
private boolean |
annotationsEquals(SpanTree tree) |
void |
cleanup()
Ensures consistency of the tree in case SpanNodes have been removed, and there are still
Annotations pointing to them.
|
void |
clearAnnotations(SpanNode node)
Clears all Annotations for a given SpanNode.
|
void |
clearAnnotationsRecursive(SpanNode node)
Clears all Annotations for a given SpanNode and its child nodes.
|
private void |
clearIndex() |
void |
clearIndex(SpanTree.IndexKey key) |
void |
clearIndexes() |
int |
compareTo(SpanTree spanTree) |
private SpanNode |
copySpan(SpanNode spanTree) |
void |
createIndex(SpanTree.IndexKey key) |
boolean |
equals(Object o) |
private Collection<Annotation> |
getAnnotations() |
private IdentityHashMap<Annotation,Integer> |
getAnnotations(List<Annotation> annotationsToCopy) |
Collection<SpanTree.IndexKey> |
getCurrentIndexes() |
String |
getName()
Returns the name of this span tree.
|
SpanNode |
getRoot()
Returns the root node of this span tree.
|
private List<SpanNode> |
getSpanNodes() |
private static IdentityHashMap<SpanNode,Integer> |
getSpanNodes(SpanTree otherToCopy) |
SpanTree |
getSpanTree()
Returns itself. Needed for this class to be able to be a parent of SpanNodes.
|
StringFieldValue |
getStringFieldValue()
Returns the StringFieldValue that this SpanTree belongs to.
|
private boolean |
hasAnyFieldValues() |
int |
hashCode() |
Iterator<Annotation> |
iterator()
Returns an Iterator over all annotations in this tree. Note that the iteration order is non-deterministic.
|
Iterator<Annotation> |
iterator(SpanNode node)
Returns an Iterator over all annotations that annotate the given node.
|
Iterator<Annotation> |
iteratorRecursive(SpanNode node)
Returns a recursive Iterator over all annotations that annotate the given node and its subnodes.
|
int |
numAnnotations()
Returns the total number of annotations in the tree.
|
boolean |
remove(Annotation a)
Removes an Annotation from the internal list of annotations.
|
private void |
removeAnnotationReferencesThatPointToRemovedAnnotations() |
private Map<Annotation,Annotation> |
removeAnnotationsThatPointToInvalidSpanNodes() |
private boolean |
removeObsoleteReferencesFromCollectionType(CollectionFieldValue collection,
Map<Annotation,Annotation> selectedAnnotations,
boolean removeIfPresent) |
private boolean |
removeObsoleteReferencesFromFieldValue(FieldValue value,
Map<Annotation,Annotation> selectedAnnotations,
boolean removeIfPresent) |
private boolean |
removeObsoleteReferencesFromMapType(MapFieldValue map,
Map<Annotation,Annotation> selectedAnnotations,
boolean removeIfPresent) |
private boolean |
removeObsoleteReferencesFromStructuredType(StructuredFieldValue struct,
Map<Annotation,Annotation> selectedAnnotations,
boolean removeIfPresent) |
private void |
setCorrectAnnotationReference(CollectionFieldValue collection,
IdentityHashMap<Annotation,Integer> originalAnnotations,
List<Annotation> newAnnotations) |
private void |
setCorrectAnnotationReference(FieldValue value,
IdentityHashMap<Annotation,Integer> originalAnnotations,
List<Annotation> newAnnotations) |
private void |
setCorrectAnnotationReference(MapFieldValue map,
IdentityHashMap<Annotation,Integer> originalAnnotations,
List<Annotation> newAnnotations) |
private void |
setCorrectAnnotationReference(StructuredFieldValue struct,
IdentityHashMap<Annotation,Integer> originalAnnotations,
List<Annotation> newAnnotations) |
void |
setName(String name)
WARNING! Only to be used by deserializers! Sets the name of this SpanTree instance.
|
void |
setRoot(SpanNode root)
WARNING! Only to be used by deserializers! Sets the root of this SpanTree instance.
|
void |
setStringFieldValue(StringFieldValue stringFieldValue)
Sets the StringFieldValue that this SpanTree belongs to. This is called by
StringFieldValue.setSpanTree(SpanTree) and there is no need for the user to call this
except in unit tests. |
SpanList |
spanList()
Convenience shorthand for
(SpanList)getRoot() . |
String |
toString() |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
forEach, spliterator
private String name
private SpanNode root
private AnnotationContainer annotations
private StringFieldValue stringFieldValue
public SpanTree()
public SpanTree(String name, SpanNode root)
name
- the name of the span treeroot
- the root node of the span treeIllegalStateException
- if the root node is invalidpublic SpanTree(String name)
name
- the name of the span treepublic SpanTree(SpanTree otherToCopy)
private void setCorrectAnnotationReference(FieldValue value, IdentityHashMap<Annotation,Integer> originalAnnotations, List<Annotation> newAnnotations)
private void setCorrectAnnotationReference(StructuredFieldValue struct, IdentityHashMap<Annotation,Integer> originalAnnotations, List<Annotation> newAnnotations)
private void setCorrectAnnotationReference(CollectionFieldValue collection, IdentityHashMap<Annotation,Integer> originalAnnotations, List<Annotation> newAnnotations)
private void setCorrectAnnotationReference(MapFieldValue map, IdentityHashMap<Annotation,Integer> originalAnnotations, List<Annotation> newAnnotations)
private IdentityHashMap<Annotation,Integer> getAnnotations(List<Annotation> annotationsToCopy)
private static IdentityHashMap<SpanNode,Integer> getSpanNodes(SpanTree otherToCopy)
public void setName(String name)
name
- the name to set for this SpanTree instance.public void setRoot(SpanNode root)
root
- the root to set for this SpanTree instance.public String getName()
public SpanNode getRoot()
public SpanList spanList()
(SpanList)getRoot()
.
This must of course only be used when it is known that the root in this tree actually is a SpanList.public void cleanup()
private boolean removeObsoleteReferencesFromFieldValue(FieldValue value, Map<Annotation,Annotation> selectedAnnotations, boolean removeIfPresent)
private boolean removeObsoleteReferencesFromStructuredType(StructuredFieldValue struct, Map<Annotation,Annotation> selectedAnnotations, boolean removeIfPresent)
private boolean removeObsoleteReferencesFromCollectionType(CollectionFieldValue collection, Map<Annotation,Annotation> selectedAnnotations, boolean removeIfPresent)
private boolean removeObsoleteReferencesFromMapType(MapFieldValue map, Map<Annotation,Annotation> selectedAnnotations, boolean removeIfPresent)
private Map<Annotation,Annotation> removeAnnotationsThatPointToInvalidSpanNodes()
private boolean hasAnyFieldValues()
private void removeAnnotationReferencesThatPointToRemovedAnnotations()
private void annotateInternal(SpanNode node, Annotation annotation)
private Collection<Annotation> getAnnotations()
public SpanTree annotate(Annotation a)
a
- the Annotation to addAnnotation
,
AnnotationReference
,
AnnotationReferenceDataType
public SpanTree annotate(SpanNode node, Annotation annotation)
node
- the node to annotateannotation
- the Annotation to addAnnotation
public final SpanTree annotateFast(SpanNode node, Annotation annotation)
node
- the node to annotateannotation
- the Annotation to addAnnotation
public SpanTree annotate(SpanNode node, AnnotationType type, FieldValue value)
annotate(node,new Annotation(type,value)
node
- the node to annotatetype
- the type of the Annotation to addvalue
- the value of the Annotation to addAnnotation
public SpanTree annotate(SpanNode node, AnnotationType type)
node
- the node to annotatetype
- the AnnotationType to create an Annotation fromAnnotation
,
AnnotationType
public boolean remove(Annotation a)
a
- the annotation to removepublic int numAnnotations()
public void clearAnnotations(SpanNode node)
node
- the SpanNode to clear all Annotations for.public void clearAnnotationsRecursive(SpanNode node)
node
- the SpanNode to clear all Annotations for.public Iterator<Annotation> iterator()
iterator
in interface Iterable<Annotation>
public Iterator<Annotation> iterator(SpanNode node)
node
- the node to return annotations for.public Iterator<Annotation> iteratorRecursive(SpanNode node)
node
- the node to recursively return annotations for.public SpanTree getSpanTree()
getSpanTree
in interface SpanNodeParent
public void setStringFieldValue(StringFieldValue stringFieldValue)
StringFieldValue.setSpanTree(SpanTree)
and there is no need for the user to call this
except in unit tests.stringFieldValue
- the StringFieldValue that this SpanTree should belong to (might be null to clear the current value)public StringFieldValue getStringFieldValue()
getStringFieldValue
in interface SpanNodeParent
public void createIndex(SpanTree.IndexKey key)
public void clearIndex(SpanTree.IndexKey key)
public void clearIndexes()
private void clearIndex()
public Collection<SpanTree.IndexKey> getCurrentIndexes()
private boolean annotationsEquals(SpanTree tree)
public int compareTo(SpanTree spanTree)
compareTo
in interface Comparable<SpanTree>
Copyright © 2018. All rights reserved.