org.w3c.tools.dbm
Class jdbm

java.lang.Object
  |
  +--org.w3c.tools.dbm.jdbm

public class jdbm
extends java.lang.Object

An dbm like database in Java. This database is a transcription of what I have understood of gdbm into Java. Some of the code here I don't understand, but it looks like it works.


Field Summary
protected static int BLOCK_SIZE
           
protected static int CACHE_SIZE
          Default cache size.
protected static int DIR_BITS
          Default directory bits for this database.
static int STORE_INSERT
          Mode for store - Only insert this element if it is not already defined.
static int STORE_REPLACE
          Mode for store - Replace any existing entry with the new provided one.
 
Constructor Summary
jdbm(java.io.File file)
           
 
Method Summary
protected  int allocateSpace(int size)
          Allocate space in the file.
 boolean delete(byte[] key)
          Delete the association for the provided key.
 boolean delete(java.lang.String key)
          Delete the association for the provided String key.
 java.util.Enumeration elements()
          Enumerate the elements of the database.
static byte[] getBytes(java.lang.String str)
           
protected  boolean getNextBucket(org.w3c.tools.dbm.jdbmEnumerator enum)
          Update this enumeration current bucket to the next one.
 java.util.Enumeration keys()
          Enumerate the keys of this database.
protected  org.w3c.tools.dbm.LRUEntry loadBucket(int fileptr)
          Load the bucket whose file pointer is given.
 byte[] lookup(byte[] key)
          Lookup the value associated with the provided key.
 byte[] lookup(java.lang.String key)
          Lookup the value associated to the given String key.
static void main(java.lang.String[] args)
           
 void printAvail(java.io.PrintStream out)
          Print the list of available blocks:
 void printHeader(java.io.PrintStream out)
          Print various database options to the given stream.
 jdbm reorganize(boolean trace)
          Return a clean instance of that database, after reorganization.
 void save()
          Save thisdatabase to disk.
 void store(byte[] key, byte[] value, int mode)
          Store the given association of key/value.
protected  void trace(java.lang.String msg)
           
protected  org.w3c.tools.dbm.jdbmBucket unloadBucket()
          Select a bucket to be removed from the cache, unload it.
protected  int write(org.w3c.tools.dbm.jdbmBucket bucket, byte[] key, byte[] data)
          Allocate and write the provided key/value.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

STORE_REPLACE

public static final int STORE_REPLACE
Mode for store - Replace any existing entry with the new provided one.

STORE_INSERT

public static final int STORE_INSERT
Mode for store - Only insert this element if it is not already defined.

BLOCK_SIZE

protected static final int BLOCK_SIZE

DIR_BITS

protected static final int DIR_BITS
Default directory bits for this database.

CACHE_SIZE

protected static final int CACHE_SIZE
Default cache size.
Constructor Detail

jdbm

public jdbm(java.io.File file)
     throws java.io.IOException
Method Detail

trace

protected final void trace(java.lang.String msg)

printHeader

public void printHeader(java.io.PrintStream out)
Print various database options to the given stream.
Parameters:
out - The PrintStream to display info to.

printAvail

public void printAvail(java.io.PrintStream out)
Print the list of available blocks:
Parameters:
out - The print stream to print to.

allocateSpace

protected int allocateSpace(int size)
Allocate space in the file.
Parameters:
size - The size of the file block we want.
Returns:
The file pointer to the allocated block.

write

protected int write(org.w3c.tools.dbm.jdbmBucket bucket,
                    byte[] key,
                    byte[] data)
             throws java.io.IOException
Allocate and write the provided key/value. This is a short end for writing new associations to the file.
Parameters:
bucket - Suggested bucket to allocate data from.
key - The key part of the item to write.
data - The data part of the item to write.
Returns:
The file position of the written element.

unloadBucket

protected org.w3c.tools.dbm.jdbmBucket unloadBucket()
                                             throws java.io.IOException
Select a bucket to be removed from the cache, unload it.
Returns:
A bucket ready to be reused.

loadBucket

protected org.w3c.tools.dbm.LRUEntry loadBucket(int fileptr)
                                         throws java.io.IOException
Load the bucket whose file pointer is given.
Parameters:
fileptr - The file pointer of the bucket to be loaded.
into - The bucket to resue (or null).

store

public void store(byte[] key,
                  byte[] value,
                  int mode)
           throws java.io.IOException
Store the given association of key/value.
Parameters:
key - The bytes that makes the key.
value - The bytes that makes the value.
mode - The mode of the storing, can be...

lookup

public byte[] lookup(byte[] key)
              throws java.io.IOException
Lookup the value associated with the provided key.
Parameters:
key - The bits of the key to look for.
Returns:
The bits that makes the associated value, or null if not found.

lookup

public byte[] lookup(java.lang.String key)
              throws java.io.IOException
Lookup the value associated to the given String key.
Parameters:
key - The string that we are looking for.
Returns:
The bits that makes the associated value, or null if not found.

delete

public boolean delete(byte[] key)
               throws java.io.IOException
Delete the association for the provided key.
Parameters:
key - The key of the element to remove.
Returns:
A boolean true if deletion was succesfull.

delete

public boolean delete(java.lang.String key)
               throws java.io.IOException
Delete the association for the provided String key.
Parameters:
key - The key of the element to remove.
Returns:
A boolean true if deletion was succesfull.

save

public void save()
          throws java.io.IOException
Save thisdatabase to disk.

getNextBucket

protected boolean getNextBucket(org.w3c.tools.dbm.jdbmEnumerator enum)
                         throws java.io.IOException
Update this enumeration current bucket to the next one.
Parameters:
enum - The current enumeration state.
Returns:
A boolean true if the end of the database has been reached, falseotherwise.

keys

public java.util.Enumeration keys()
Enumerate the keys of this database. This method will retun an enumeration object suitable to walk through all the keys of the database. You are not guaranteed that the enumerator will not enumerate the same key multiple time.

You are guaranteed, however that you will walk at least once through all the keys that were present at the time you created the enumeration (but not through the one that were deleted while you are walking through the database).

Returns:
An enumeration instance.

elements

public java.util.Enumeration elements()
Enumerate the elements of the database. This method has the same limitations then it's keys counterpart.
Returns:
An enumeration instance.

reorganize

public jdbm reorganize(boolean trace)
Return a clean instance of that database, after reorganization. Of course, no accesses should me made to the current database while cleaning it up. Note that this returns a new instance of the database !
Returns:
A clean database, or null if the reorganization failed.

getBytes

public static byte[] getBytes(java.lang.String str)

main

public static void main(java.lang.String[] args)
                 throws java.lang.Exception