private void calculateAndSetDescendantsCount(OrgNodeInSet node, int gap) { int n = (int) (node.getRgt() - node.getLft() - gap) / ( 2 * gap ); node.setDescendantsCount(n); } }
stack.push(new OrgNodeInSet(thisNode.getLevel(), sequence, thisNode.getHead())); nodeFromStack.setRgt(sequence); calculateAndSetDescendantsCount(nodeFromStack, GAP); listener.onNode(nodeFromStack); stack.push(new OrgNodeInSet(thisNode.getLevel(), sequence, thisNode.getHead())); OrgNodeInSet nodeFromStack = stack.peek(); if (nodeFromStack.getLevel() >= thisNode.getLevel()) { stack.pop(); nodeFromStack.setRgt(sequence); calculateAndSetDescendantsCount(nodeFromStack, GAP); listener.onNode(nodeFromStack); stack.push(new OrgNodeInSet(thisNode.getLevel(), sequence, thisNode.getHead()));
@Override public void onNode(OrgNodeInSet node) { map.put(node.getLft(), node); }
@Override public void onFile(OrgFile file) throws IOException { /* Pop remaining nodes. */ while (! stack.empty()) { OrgNodeInSet nodeFromStack = stack.pop(); sequence += GAP; nodeFromStack.setRgt(sequence); calculateAndSetDescendantsCount(nodeFromStack, GAP); listener.onNode(nodeFromStack); } listener.onFile(file); } });
stack.push(new OrgNodeInSet(STARTING_LEVEL, STARTING_VALUE, new OrgHead())); stack.push(new OrgNodeInSet(thisNode.getLevel(), sequence, thisNode.getHead())); stack.push(new OrgNodeInSet(thisNode.getLevel(), sequence, thisNode.getHead())); stack.push(new OrgNodeInSet(thisNode.getLevel(), sequence, thisNode.getHead()));