package com.sleepycat.je.dbi;
public class DbTree {
public boolean verify( VerifyConfig config, PrintStream out) throws DatabaseException {
boolean ret=true;
try {
boolean ok=idDatabase.verify(config,idDatabase.getEmptyStats());
if (!ok) {
ret=false;
}
ok=nameDatabase.verify(config,nameDatabase.getEmptyStats());
if (!ok) {
ret=false;
}
}
catch ( DatabaseException DE) {
ret=false;
}
ret=this.hook292(config,out,ret);
return ret;
}
protected void hook291( CursorImpl cursor) throws DatabaseException {
}
protected boolean hook292( VerifyConfig config, PrintStream out, boolean ret) throws DatabaseException {
Locker locker=null;
CursorImpl cursor=null;
LockType lockType=LockType.NONE;
try {
locker=new BasicLocker(envImpl);
cursor=new CursorImpl(idDatabase,locker);
if (cursor.positionFirstOrLast(true,null)) {
MapLN mapLN=(MapLN)cursor.getCurrentLNAlreadyLatched(lockType);
DatabaseEntry keyDbt=new DatabaseEntry();
DatabaseEntry dataDbt=new DatabaseEntry();
while (true) {
if (mapLN != null && !mapLN.isDeleted()) {
DatabaseImpl dbImpl=mapLN.getDatabase();
boolean ok=dbImpl.verify(config,dbImpl.getEmptyStats());
if (!ok) {
ret=false;
}
}
OperationStatus status=cursor.getNext(keyDbt,dataDbt,lockType,true,false);
if (status != OperationStatus.SUCCESS) {
break;
}
mapLN=(MapLN)cursor.getCurrentLN(lockType);
}
}
}
catch ( DatabaseException e) {
e.printStackTrace(out);
ret=false;
}
finally {
if (cursor != null) {
this.hook291(cursor);
cursor.close();
}
if (locker != null) {
locker.operationEnd();
}
}
return ret;
}
}