private void handleBlockOverflow() throws JasDBStorageException {
if(treeNodes.size() > persister.getMaxKeys()) {
List<TreeNode>[] blockNodeSplit = treeNodes.split();
List<TreeNode> leftBlockNodes = blockNodeSplit[0];
List<TreeNode> rightBlockNodes = blockNodeSplit[1];
treeNodes.reset();
Key promoteKey = rightBlockNodes.get(0).getKey();
TreeBlock leftBlock = (TreeBlock) persister.createBlock(BlockTypes.NODEBLOCK, getParentPointer());
leftBlock.addNodes(leftBlockNodes, null, leftBlock.getPosition());
if(parentPointer != -1) {
addNodes(rightBlockNodes, promoteKey, getPosition());
TreeBlock parentBlock = (TreeBlock) persister.loadBlock(parentPointer);
parentBlock.insertBlock(promoteKey, leftBlock, this);
} else {
TreeBlock rightBlock = (TreeBlock) persister.createBlock(BlockTypes.NODEBLOCK, getPosition());
rightBlock.addNodes(rightBlockNodes, promoteKey, rightBlock.getPosition());
TreeNode node = new TreeNode(promoteKey, leftBlock.getPosition(), rightBlock.getPosition());
treeNodes.put(node.getKey(), node);
}
}
}