public abstract class SpanNode extends Object implements Comparable<SpanNode>, SpanNodeParent
Modifier and Type | Field and Description |
---|---|
private SpanNodeParent |
parent |
private int |
scratchId
This scratch id is used to avoid using IdentityHashMaps as they are very costly.
|
private boolean |
valid |
Modifier | Constructor and Description |
---|---|
protected |
SpanNode() |
Modifier and Type | Method and Description |
---|---|
SpanNode |
annotate(Annotation annotation)
Convenience method for adding an annotation to this span, same as
getSpanTree(). |
SpanNode |
annotate(AnnotationType type)
Convenience method for adding an annotation with no value to this span, same as
getSpanTree(). |
SpanNode |
annotate(AnnotationType type,
FieldValue value)
Convenience method for adding an annotation to this span, same as
getSpanTree(). |
SpanNode |
annotate(AnnotationType type,
Integer value)
Convenience method for adding an annotation to this span, same as
getSpanTree(). |
SpanNode |
annotate(AnnotationType type,
String value)
Convenience method for adding an annotation to this span, same as
getSpanTree(). |
abstract ListIterator<SpanNode> |
childIterator()
Traverses all immediate children of this SpanNode.
|
abstract ListIterator<SpanNode> |
childIteratorRecursive()
Recursively traverses all possible children (not only leaf nodes) of this SpanNode, in a depth-first fashion.
|
int |
compareTo(SpanNode o)
Compares two SpanNodes. Note: this class has a natural ordering that might be inconsistent with equals.
|
boolean |
contains(SpanNode o)
Checks if the text covered by another span is within the text covered by this span.
|
boolean |
equals(Object o) |
abstract int |
getFrom()
Returns the character index where this SpanNode starts (inclusive).
|
abstract int |
getLength()
Returns the length of this span, i.e. getFrom() - getTo().
|
private SpanTree |
getNonNullSpanTree()
Returns the SpanTree this belongs to and throws a nice NullPointerException if none
|
SpanNodeParent |
getParent()
Returns the parent node of this SpanNode, if any.
|
int |
getScratchId() |
SpanTree |
getSpanTree()
Returns the SpanTree that this node belongs to, if any.
|
StringFieldValue |
getStringFieldValue()
Returns the StringFieldValue that this node belongs to, if any.
|
abstract CharSequence |
getText(CharSequence text)
Returns the text that is covered by this SpanNode.
|
abstract int |
getTo()
Returns the character index where this SpanNode ends (exclusive).
|
int |
hashCode() |
abstract boolean |
isLeafNode()
Returns true if this node is a leaf node in the tree.
|
boolean |
isValid()
Returns whether this node is valid or not. When a child node from a SpanList, the child
is marked as invalid, and the reference to it is removed from the parent SpanList.
|
boolean |
overlaps(SpanNode o)
Checks if the text covered by this span overlaps with the text covered by another span.
|
(package private) void |
setInvalid() |
(package private) void |
setParent(SpanNodeParent parent) |
void |
setScratchId(int id) |
private boolean valid
private int scratchId
private SpanNodeParent parent
public boolean isValid()
SpanTree.cleanup()
.void setInvalid()
public void setScratchId(int id)
public int getScratchId()
public SpanNodeParent getParent()
void setParent(SpanNodeParent parent)
public SpanTree getSpanTree()
getSpanTree
in interface SpanNodeParent
private SpanTree getNonNullSpanTree()
public SpanNode annotate(Annotation annotation)
getSpanTree().spanTree.annotate(this,annotation)
annotation
- the annotation to addNullPointerException
- if this span is not attached to a treepublic SpanNode annotate(AnnotationType type, FieldValue value)
getSpanTree().spanTree.annotate(this,type,value)
type
- the type of the annotation to addvalue
- the value of the annotation to addNullPointerException
- if this span is not attached to a treepublic SpanNode annotate(AnnotationType type, String value)
getSpanTree().spanTree.annotate(this,type,new StringFieldValue(value))
type
- the type of the annotation to addvalue
- the string value of the annotation to addNullPointerException
- if this span is not attached to a treepublic SpanNode annotate(AnnotationType type, Integer value)
getSpanTree().spanTree.annotate(this,type,new IntegerFieldValue(value))
type
- the type of the annotation to addvalue
- the integer value of the annotation to addNullPointerException
- if this span is not attached to a treepublic SpanNode annotate(AnnotationType type)
getSpanTree().spanTree.annotate(this,type)
type
- the type of the annotation to addNullPointerException
- if this span is not attached to a treepublic StringFieldValue getStringFieldValue()
getStringFieldValue
in interface SpanNodeParent
public abstract boolean isLeafNode()
public abstract ListIterator<SpanNode> childIterator()
public abstract ListIterator<SpanNode> childIteratorRecursive()
public abstract int getFrom()
public abstract int getTo()
public abstract int getLength()
public abstract CharSequence getText(CharSequence text)
text
- the input textpublic boolean overlaps(SpanNode o)
o
- the other SpanNode to checkpublic boolean contains(SpanNode o)
o
- the other SpanNode to check.public int compareTo(SpanNode o)
First, getFrom() is compared, and -1 or 1 is return if our getFrom() is smaller or greater that o.getFrom(), respectively. If and only if getFrom() is equal, getTo() is compared, and -1 or 1 is return if our getTo() is smaller or greater that o.getTo(), respectively. In all other cases, the two SpanNodes are equal both for getFrom() and getTo(), and 0 is returned.
Note that if a subclass has overridden equals(), which is very likely, but has not overridden compareTo(), then that subclass will have a natural ordering that is inconsistent with equals.
compareTo
in interface Comparable<SpanNode>
o
- the SpanNode to compare toCopyright © 2018. All rights reserved.