in mavibot/src/main/java/org/apache/directory/mavibot/btree/MavibotInspector.java [1211:1305]
public void start() throws Exception
{
if ( !checkFilePresence() )
{
return;
}
if ( !loadRm() )
{
return;
}
boolean stop = false;
while ( !stop )
{
System.out.println( "Choose an option:" );
System.out.println( "n - Print Number of BTrees" );
System.out.println( "b - Print BTree Names" );
System.out.println( "i - Inspect BTree" );
System.out.println( "c - Check Free Pages" );
System.out.println( "s - Get database file size" );
System.out.println( "d - Dump RecordManager" );
System.out.println( "r - Reload RecordManager" );
System.out.println( "o - Read page at offset" );
System.out.println( "q - Quit" );
char c = readOption();
switch ( c )
{
case 'n':
printNumberOfBTrees();
break;
case 'b':
printBTreeNames();
break;
case 'i':
inspectBTree();
break;
case 'c':
long fileSize = rm.fileChannel.size();
long nbPages = fileSize / rm.pageSize;
int nbPageBits = ( int ) ( nbPages / RecordManager.INT_SIZE );
Map<String, int[]> checkedPages = new HashMap<String, int[]>( 2 );
// The global page array
checkedPages.put( GLOBAL_PAGES_NAME, new int[nbPageBits + 1] );
// The freePages array
checkedPages.put( FREE_PAGES_NAME, new int[nbPageBits + 1] );
checkFreePages( rm, checkedPages );
break;
case 's':
printFileSize();
break;
case 'd':
check( rm );
break;
case 'r':
loadRm();
break;
case 'o':
readPageAt();
break;
case 'q':
stop = true;
break;
default:
System.out.println( "Invalid option" );
//c = readOption( br );
break;
}
}
try
{
rm.close();
br.close();
}
catch ( Exception e )
{
//ignore
}
}