org.biojava.bio.seq.db
Class TabIndexStore

java.lang.Object
  extended by org.biojava.bio.seq.db.TabIndexStore
All Implemented Interfaces:
Serializable, IndexStore

public class TabIndexStore
extends Object
implements IndexStore, Serializable

Implements IndexStore as a serialized file for the java data and a tab-delimited file of offsets.

Use the constructor to create a new index store. Use the static factory method open() to load an existing store.

The tab-delimited file looks like:
 fileNumber \t offset \t id \n
 

Author:
Matthew Pocock, Thomas Down, Keith James, David Huen
See Also:
Serialized Form

Constructor Summary
TabIndexStore(File storeFile, File indexFile, String name, SequenceFormat format, SequenceBuilderFactory sbFactory, SymbolTokenization symbolParser)
          Create a new TabIndexStore.
 
Method Summary
protected  void addFile(File f)
           
 void commit()
          Commit the stored indices to permanent storage.
protected  void commitStore()
           
 Index fetch(String id)
          Fetch an Index based upon an ID.
protected  int getFileIndex(File file)
           
 Set getFiles()
          Retrieve the Set of files that are currently indexed.
 SequenceFormat getFormat()
          Retrieve the format of the index file.
 Set getIDs()
          Retrieve the set of all current IDs.
 String getName()
          Retrieve the name of this store.
 SequenceBuilderFactory getSBFactory()
          Retrieve the SequenceBuilderFactory used to build Sequence instances.
 SymbolTokenization getSymbolParser()
          Retrieve the symbol parser used to turn the sequence characters into Symobl objects.
protected  void initialize()
           
static TabIndexStore open(File storeFile)
          Open an existing index store.
 void rollback()
          Discard all uncommited changes.
 void store(Index indx)
          Add the Index to the store.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TabIndexStore

public TabIndexStore(File storeFile,
                     File indexFile,
                     String name,
                     SequenceFormat format,
                     SequenceBuilderFactory sbFactory,
                     SymbolTokenization symbolParser)
              throws IOException,
                     BioException
Create a new TabIndexStore.

The store file and index file must not exist. This is to prevent you from accidentally destroying an existing index.

Parameters:
storeFile - the file that will be used to persist this index store
indexFile - the file that will hold the actual indecies
name - the name that will be used by the database backed by this index
format - the SequenceFormat for files being indexed
sbFactory - the SequenceBuilderFactory used in building sequences
symbolParser - the SymbolTokenization to use
Throws:
IOException - if there was a problem writing the files
BioException - if any of the parameters were not acceptable
Method Detail

open

public static TabIndexStore open(File storeFile)
                          throws IOException
Open an existing index store.

Parameters:
storeFile - the File encapsulating the store
Returns:
a new TabIndexStore for that file
Throws:
IOException - if the storeFile could not be processed

store

public void store(Index indx)
           throws IllegalIDException,
                  BioException
Description copied from interface: IndexStore
Add the Index to the store.

This method should be transactional. If the store fails, the IndexStore should be left in its original state.

If the file of the Index is not known yet, it is the responsibility of the IndexStore to add it to the set returned by getFiles.

Specified by:
store in interface IndexStore
Parameters:
indx - the Index to add
Throws:
IllegalIDException - if the index has an invalid ID field
BioException - if the store failed

fetch

public Index fetch(String id)
            throws IllegalIDException,
                   BioException
Description copied from interface: IndexStore
Fetch an Index based upon an ID.

Specified by:
fetch in interface IndexStore
Parameters:
id - The ID of the sequence Index to retrieve
Throws:
IllegalIDException - if the ID couldn't be found
BioException - if the fetch fails in the underlying storage mechanism

commit

public void commit()
            throws BioException
Description copied from interface: IndexStore
Commit the stored indices to permanent storage.

Specified by:
commit in interface IndexStore
Throws:
BioException - if for any reason the commit fails

rollback

public void rollback()
Description copied from interface: IndexStore
Discard all uncommited changes.

Specified by:
rollback in interface IndexStore

getName

public String getName()
Description copied from interface: IndexStore
Retrieve the name of this store. This will be reflected as the name of the IndexedSequenceDB.

Specified by:
getName in interface IndexStore
Returns:
the String name of the index

getIDs

public Set getIDs()
Description copied from interface: IndexStore
Retrieve the set of all current IDs.

This set should either be immutable, or modifiable totally separately from the IndexStore.

Specified by:
getIDs in interface IndexStore
Returns:
a Set of all legal IDs

getFiles

public Set getFiles()
Description copied from interface: IndexStore
Retrieve the Set of files that are currently indexed.

Specified by:
getFiles in interface IndexStore

getFormat

public SequenceFormat getFormat()
Description copied from interface: IndexStore
Retrieve the format of the index file.

This set should either be immutable, or modifiable totally separately from the IndexStore.

Specified by:
getFormat in interface IndexStore
Returns:
a Set of all indexed files

getSBFactory

public SequenceBuilderFactory getSBFactory()
Description copied from interface: IndexStore
Retrieve the SequenceBuilderFactory used to build Sequence instances.

Specified by:
getSBFactory in interface IndexStore
Returns:
the associated SequenceBuilderFactory

getSymbolParser

public SymbolTokenization getSymbolParser()
Description copied from interface: IndexStore
Retrieve the symbol parser used to turn the sequence characters into Symobl objects.

Specified by:
getSymbolParser in interface IndexStore
Returns:
the associated SymbolParser

commitStore

protected void commitStore()
                    throws IOException
Throws:
IOException

addFile

protected void addFile(File f)

getFileIndex

protected int getFileIndex(File file)

initialize

protected void initialize()
                   throws IOException
Throws:
IOException