package com.sleepycat.je.tree; import java.util.Iterator; import java.util.NoSuchElementException; import com.sleepycat.je.DatabaseException; import de.ovgu.cide.jakutil.*; /** * TreeIterator implements an Iterator over Tree's. Not protected * against insertions like cursors. */ public final class TreeIterator implements Iterator { private Tree tree; private BIN nextBin; private int index; public TreeIterator( Tree tree) throws DatabaseException { nextBin=(BIN)tree.getFirstNode(); this.hook755(); index=-1; this.tree=tree; } public boolean hasNext(){ boolean ret=false; try { this.hook756(); advance(); ret=(nextBin != null) && (index < nextBin.getNEntries()); } catch ( DatabaseException e) { } finally { this.hook757(); } return ret; } public Object next(){ Object ret=null; try { if (nextBin == null) { throw new NoSuchElementException(); } this.hook758(); ret=nextBin.getKey(index); } catch ( DatabaseException e) { } finally { this.hook759(); } return ret; } public void remove(){ throw new UnsupportedOperationException(); } private void advance() throws DatabaseException { while (nextBin != null) { if (++index < nextBin.getNEntries()) { return; } nextBin=tree.getNextBin(nextBin,false); index=-1; } } protected void hook755() throws DatabaseException { } protected void hook756() throws DatabaseException { } protected void hook757(){ } protected void hook758() throws DatabaseException { } protected void hook759(){ } }