/**
* GeDBIT.index.LeafNode 2006.05.12
*
* Copyright Information:
*
* Change Log:
* 2006.05.12: created, by Rui Mao, Willard
*/
package GeDBIT.index;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import GeDBIT.type.IndexObject;
/**
* The base class for all leaf nodes.
*
* @author Rui Mao, Willard
* @version 2006.05.12
*/
abstract class LeafNode extends IndexNode {
protected IndexObject[] children;
public LeafNode() {
super();
}
/**
* @param pivots
* @param pivotRowIDs
* @param children
* @param childRowIDs
* @param size
*/
protected LeafNode(IndexObject[] pivots, IndexObject[] children, int size) {
super(pivots, size);
if (children == null)
throw new IllegalArgumentException(
"LeafNode children cannot be null");
this.children = children;
}
/**
* @return the number of children.
*/
int numChildren() {
return children.length;
}
/**
* Return a distinct key value of children.
*
* @param dataIndex
* index of the distinct key value to be return
* @return the key value
*/
IndexObject getChild(int dataIndex) {
return children[dataIndex];
}
public void writeExternal(ObjectOutput out) throws IOException {
super.writeExternal(out);
out.writeInt(children.length);
for (int i = 0; i < children.length; i++) {
out.writeObject(children[i]);
}
}
public void readExternal(ObjectInput in) throws IOException,
ClassNotFoundException {
super.readExternal(in);
children = new IndexObject[in.readInt()];
for (int i = 0; i < children.length; i++) {
children[i] = (IndexObject) in.readObject();
}
}
}