
E - the type of Entry used in the indexpublic abstract class AbstractNode<E extends Entry> extends AbstractPage implements Node<E>
| Modifier and Type | Field and Description |
|---|---|
protected E[] |
entries
The entries (children) of this node.
|
protected boolean |
isLeaf
Indicates whether this node is a leaf node.
|
protected int |
numEntries
The number of entries in this node.
|
| Constructor and Description |
|---|
AbstractNode()
Empty constructor for Externalizable interface.
|
AbstractNode(int capacity,
boolean isLeaf,
Class<? super E> eclass)
Creates a new Node with the specified parameters.
|
| Modifier and Type | Method and Description |
|---|---|
int |
addDirectoryEntry(E entry)
Adds a new directory entry to this node's children and returns the index of
the entry in this node's children array.
|
private int |
addEntry(E entry)
Adds the specified entry to the entries array and increases the numEntries
counter.
|
int |
addLeafEntry(E entry)
Adds a new leaf entry to this node's children and returns the index of the
entry in this node's children array.
|
Enumeration<IndexTreePath<E>> |
children(IndexTreePath<E> parentPath)
Returns an enumeration of the children paths of this node.
|
void |
deleteAllEntries()
Deletes all entries in this node.
|
boolean |
deleteEntry(int index)
Deletes the entry at the specified index and shifts all entries after the
index to left.
|
boolean |
equals(Object o)
Returns
true if this == o has the value
true or o is not null and o is of the same class as this
instance and super.equals(o) returns true and
both nodes are of the same type (leaf node or directory node) and have
contain the same entries, false otherwise. |
int |
getCapacity()
Returns the capacity of this node (i.e. the length of the entries arrays).
|
List<E> |
getEntries()
Returns a list of the entries.
|
E |
getEntry(int index)
Returns the entry at the specified index.
|
int |
getNumEntries()
Returns the number of entries of this node.
|
boolean |
isLeaf()
Returns true if this node is a leaf node, false otherwise.
|
void |
readExternal(ObjectInput in)
Reads the id of this node, the numEntries and the entries array from the
specified stream.
|
void |
splitTo(AbstractNode<E> newNode,
List<E> sorting,
int splitPoint)
Redistribute entries according to the given sorting.
|
void |
splitTo(AbstractNode<E> newNode,
List<E> assignmentsToFirst,
List<E> assignmentsToSecond)
Splits the entries of this node into a new node using the given assignments
|
String |
toString()
Returns a string representation of this node.
|
void |
writeExternal(ObjectOutput out)
Calls the super method and writes the id of this node, the numEntries and
the entries array to the specified stream.
|
getPageID, hashCode, isDirty, setDirty, setPageIDprotected int numEntries
protected boolean isLeaf
public AbstractNode()
public AbstractNode(int capacity,
boolean isLeaf,
Class<? super E> eclass)
capacity - the capacity (maximum number of entries plus 1 for
overflow) of this nodeisLeaf - indicates whether this node is a leaf nodeeclass - Entry class, to initialize array storagepublic final Enumeration<IndexTreePath<E>> children(IndexTreePath<E> parentPath)
Nodepublic final int getNumEntries()
NodegetNumEntries in interface Node<E extends Entry>public final boolean isLeaf()
Nodepublic final E getEntry(int index)
Nodepublic void writeExternal(ObjectOutput out) throws IOException
writeExternal in interface ExternalizablewriteExternal in class AbstractPageout - the stream to write the object toIOException - Includes any I/O exceptions that may occurpublic void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
readExternal in interface ExternalizablereadExternal in class AbstractPagein - the stream to read data from in order to restore the objectIOException - if I/O errors occurClassNotFoundException - If the class for an object being restored
cannot be found.public boolean equals(Object o)
true if this == o has the value
true or o is not null and o is of the same class as this
instance and super.equals(o) returns true and
both nodes are of the same type (leaf node or directory node) and have
contain the same entries, false otherwise.equals in class AbstractPageo - the object to be testedAbstractPage.equals(Object)public final String toString()
toString in class AbstractPagepublic final int addLeafEntry(E entry)
addLeafEntry in interface Node<E extends Entry>entry - the leaf entry to be addedUnsupportedOperationException - if entry is not a leaf entry or this
node is not a leaf nodepublic final int addDirectoryEntry(E entry)
addDirectoryEntry in interface Node<E extends Entry>entry - the directory entry to be addedUnsupportedOperationException - if entry is not a directory entry or
this node is not a directory nodepublic boolean deleteEntry(int index)
index - the index at which the entry is to be deletedpublic final void deleteAllEntries()
public final int getCapacity()
public final List<E> getEntries()
private int addEntry(E entry)
entry - the entry to be addedpublic final void splitTo(AbstractNode<E> newNode, List<E> sorting, int splitPoint)
newNode - Node to split tosorting - Sorting to usesplitPoint - Split pointpublic final void splitTo(AbstractNode<E> newNode, List<E> assignmentsToFirst, List<E> assignmentsToSecond)
newNode - Node to split toassignmentsToFirst - the assignment to this nodeassignmentsToSecond - the assignment to the new node