public class MavibotInspector
extends java.lang.Object
| Modifier and Type | Field and Description |
|---|---|
private java.io.BufferedReader |
br |
private static java.util.Map<java.lang.String,int[]> |
checkedPages |
private java.io.File |
dbFile |
private static java.lang.String |
FREE_PAGES_NAME |
private static java.lang.String |
GLOBAL_PAGES_NAME |
private static java.util.Set<java.lang.String> |
knownPagesArrays |
private static RecordManager |
rm |
| Constructor and Description |
|---|
MavibotInspector(java.io.File dbFile)
A private class to store a few informations about a btree
private static BtreeInfo btreeInfo;
static
{
btreeInfo = new BtreeInfo();
}
/**
Create an instance of MavibotInspector
|
| Modifier and Type | Method and Description |
|---|---|
(package private) static void |
check(RecordManager recordManager)
Check the whole file
|
private static <K,V> void |
checkBtree(RecordManager recordManager,
long btreeOffset,
java.util.Map<java.lang.String,int[]> checkedPages)
Check a user's B-tree
|
private static <K,V> BtreeInfo<K,V> |
checkBtreeInfo(RecordManager recordManager,
java.util.Map<java.lang.String,int[]> checkedPages,
long btreeInfoOffset,
long btreeRevision)
Check the Btree info page
|
private static <K,V> void |
checkBtreeLeaf(RecordManager recordManager,
BtreeInfo<K,V> btreeInfo,
java.util.Map<java.lang.String,int[]> checkedPages,
int nbElems,
long revision,
java.nio.ByteBuffer byteBuffer,
PageIO[] pageIos)
Check a Btree leaf.
|
private static <K,V> long[] |
checkBtreeNode(RecordManager recordManager,
BtreeInfo<K,V> btreeInfo,
java.util.Map<java.lang.String,int[]> checkedPages,
int nbElems,
long revision,
java.nio.ByteBuffer byteBuffer,
PageIO[] pageIos)
Check a Btree node.
|
private static <K,V> void |
checkBtreeOfBtrees(RecordManager recordManager,
java.util.Map<java.lang.String,int[]> checkedPages)
Check the Btree of Btrees
|
private static <K,V> void |
checkBtreeOfBtreesLeaf(RecordManager recordManager,
java.util.Map<java.lang.String,int[]> checkedPages,
int nbElems,
long revision,
java.nio.ByteBuffer byteBuffer,
PageIO[] pageIos)
Check a Btree of Btrees leaf.
|
private static <K,V> long[] |
checkBtreeOfBtreesNode(RecordManager recordManager,
java.util.Map<java.lang.String,int[]> checkedPages,
int nbElems,
long revision,
java.nio.ByteBuffer byteBuffer,
PageIO[] pageIos)
Check a Btree of Btrees Node
|
private static <K,V> void |
checkBtreeOfBtreesPage(RecordManager recordManager,
java.util.Map<java.lang.String,int[]> checkedPages,
long pageOffset)
Check the Btree of Btrees rootPage
|
private static <K,V> void |
checkBtreePage(RecordManager recordManager,
BtreeInfo<K,V> btreeInfo,
java.util.Map<java.lang.String,int[]> checkedPages,
long pageOffset)
Check the Btree of Btrees rootPage
|
private boolean |
checkFilePresence()
Check that the file exists
|
private static void |
checkFreePages(RecordManager recordManager,
java.util.Map<java.lang.String,int[]> checkedPages)
Check the free pages
|
private static void |
checkOffset(RecordManager recordManager,
long offset)
Check the offset to be sure it's a valid one :
It's >= 0
It's below the end of the file
It's a multiple of the pageSize
|
private static int[] |
createPageArray(RecordManager recordManager)
Create an array of bits for pages
|
private static void |
dumpCheckedPages(RecordManager recordManager,
java.util.Map<java.lang.String,int[]> checkedPages)
Output the pages that has been seen ('1') and those which has not been seen ('0').
|
private static java.lang.String |
dumpPageArray(RecordManager recordManager,
int[] checkedPages)
Process a page array
|
static java.util.List<java.lang.Long> |
getFreePages() |
static java.util.List<java.lang.Long> |
getGlobalPages() |
static java.util.List<java.lang.Long> |
getPageOffsets(java.lang.String pageArrayName)
Gives a list of offsets of pages from the page array associated wit the given name.
|
private static <T> ElementSerializer<T> |
getSerializer(java.lang.String serializerFqcn)
Get back the serializer instance
|
void |
inspectBTree()
Check a B-tree
|
private boolean |
loadRm()
Load the full fie into a new RecordManager
|
static void |
main(java.lang.String[] args)
Main method
|
void |
printBTreeNames()
Print the B-tree's name
|
void |
printFileSize()
Pretty print the file size
|
void |
printNumberOfBTrees()
Print the number of B-trees
|
private java.lang.String |
readLine()
Read the user's interaction
|
private char |
readOption()
Process the input and get back the selected choice
|
private void |
readPageAt() |
private static void |
setCheckedPage(RecordManager recordManager,
int[] checkedPages,
long offset)
Update the ChekcedPages array
|
void |
start()
The entry point method
|
private static void |
updateCheckedPages(int[] checkedPages,
int pageSize,
PageIO... pageIos)
Update the array of seen pages.
|
private java.io.File dbFile
private static RecordManager rm
private java.io.BufferedReader br
private static final java.lang.String GLOBAL_PAGES_NAME
private static final java.lang.String FREE_PAGES_NAME
private static java.util.Set<java.lang.String> knownPagesArrays
private static java.util.Map<java.lang.String,int[]> checkedPages
public MavibotInspector(java.io.File dbFile)
dbFile - The file to readprivate boolean checkFilePresence()
public void printFileSize()
throws java.io.IOException
java.io.IOExceptionpublic void printNumberOfBTrees()
public void printBTreeNames()
public void inspectBTree()
private boolean loadRm()
static void check(RecordManager recordManager)
private static <K,V> void checkBtreeOfBtrees(RecordManager recordManager, java.util.Map<java.lang.String,int[]> checkedPages) throws java.lang.Exception
java.lang.Exceptionprivate static <K,V> void checkBtree(RecordManager recordManager, long btreeOffset, java.util.Map<java.lang.String,int[]> checkedPages) throws java.lang.Exception
java.lang.Exceptionprivate static <K,V> void checkBtreePage(RecordManager recordManager, BtreeInfo<K,V> btreeInfo, java.util.Map<java.lang.String,int[]> checkedPages, long pageOffset) throws java.lang.Exception
java.lang.Exceptionprivate static <K,V> BtreeInfo<K,V> checkBtreeInfo(RecordManager recordManager, java.util.Map<java.lang.String,int[]> checkedPages, long btreeInfoOffset, long btreeRevision) throws java.io.IOException
java.lang.ClassNotFoundExceptionjava.io.IOExceptionprivate static <T> ElementSerializer<T> getSerializer(java.lang.String serializerFqcn)
private static <K,V> void checkBtreeOfBtreesPage(RecordManager recordManager, java.util.Map<java.lang.String,int[]> checkedPages, long pageOffset) throws java.lang.Exception
java.lang.Exceptionprivate static <K,V> void checkBtreeOfBtreesLeaf(RecordManager recordManager, java.util.Map<java.lang.String,int[]> checkedPages, int nbElems, long revision, java.nio.ByteBuffer byteBuffer, PageIO[] pageIos) throws java.lang.Exception
java.lang.Exceptionprivate static <K,V> void checkBtreeLeaf(RecordManager recordManager, BtreeInfo<K,V> btreeInfo, java.util.Map<java.lang.String,int[]> checkedPages, int nbElems, long revision, java.nio.ByteBuffer byteBuffer, PageIO[] pageIos) throws java.lang.Exception
java.lang.Exceptionprivate static <K,V> long[] checkBtreeOfBtreesNode(RecordManager recordManager, java.util.Map<java.lang.String,int[]> checkedPages, int nbElems, long revision, java.nio.ByteBuffer byteBuffer, PageIO[] pageIos) throws java.io.IOException
java.io.IOExceptionprivate static <K,V> long[] checkBtreeNode(RecordManager recordManager, BtreeInfo<K,V> btreeInfo, java.util.Map<java.lang.String,int[]> checkedPages, int nbElems, long revision, java.nio.ByteBuffer byteBuffer, PageIO[] pageIos) throws java.lang.Exception
java.lang.Exceptionprivate static int[] createPageArray(RecordManager recordManager) throws java.io.IOException
java.io.IOExceptionprivate static void updateCheckedPages(int[] checkedPages,
int pageSize,
PageIO... pageIos)
private static void checkOffset(RecordManager recordManager, long offset) throws java.io.IOException
java.io.IOExceptionprivate static void checkFreePages(RecordManager recordManager, java.util.Map<java.lang.String,int[]> checkedPages) throws java.io.IOException
java.io.IOExceptionprivate static void setCheckedPage(RecordManager recordManager, int[] checkedPages, long offset)
private static void dumpCheckedPages(RecordManager recordManager, java.util.Map<java.lang.String,int[]> checkedPages) throws java.io.IOException
java.io.IOExceptionpublic static java.util.List<java.lang.Long> getFreePages()
throws java.io.IOException
java.io.IOException#getPageOffsets()public static java.util.List<java.lang.Long> getGlobalPages()
throws java.io.IOException
java.io.IOException#getPageOffsets()public static java.util.List<java.lang.Long> getPageOffsets(java.lang.String pageArrayName)
throws java.io.IOException
java.io.IOExceptionprivate static java.lang.String dumpPageArray(RecordManager recordManager, int[] checkedPages) throws java.io.IOException
java.io.IOExceptionpublic void start()
throws java.lang.Exception
java.lang.Exceptionprivate java.lang.String readLine()
private char readOption()
private void readPageAt()
throws java.io.IOException
java.io.IOExceptionpublic static void main(java.lang.String[] args)
throws java.lang.Exception
java.lang.Exception