org.biojava.utils
Class FileAsList

java.lang.Object
  extended by java.util.AbstractCollection
      extended by java.util.AbstractList
          extended by org.biojava.utils.FileAsList
All Implemented Interfaces:
Iterable, Collection, List, Commitable

public abstract class FileAsList
extends AbstractList
implements Commitable

FileAsList creates a writable List implementation backed by a random access file. There is a restriction on the record length that the string representation of that integer may not be longer than 4 bytes. This is because a fixed 4 byte leader is used to encode the record length in the file.

Author:
Matthew Pocock, Keith James, Greg Cox

Field Summary
 
Fields inherited from class java.util.AbstractList
modCount
 
Constructor Summary
FileAsList(File mappedFile, boolean mutable)
          Creates a new FileAsList instance from an existing backing file.
FileAsList(File mappedFile, int recordLength)
          Creates a new FileAsList and corresponding backing file.
 
Method Summary
 boolean add(Object o)
           
 void clear()
           
 void commit()
          commit commits pending changes.
protected abstract  void generateRecord(byte[] buffer, Object item)
           
 Object get(int indx)
           
abstract  Comparator getComparator()
           
 Iterator iterator()
           
protected abstract  Object parseRecord(byte[] buffer)
           
 byte[] rawGet(int indx)
          rawGet reads the record at the specified index as a raw byte array.
 void rollback()
          rollback reverses pending changes to restore initial (or prior commit) state.
 Object set(int indx, Object o)
          This always returns null, not the previous object.
 int size()
           
 
Methods inherited from class java.util.AbstractList
add, addAll, equals, hashCode, indexOf, lastIndexOf, listIterator, listIterator, remove, removeRange, subList
 
Methods inherited from class java.util.AbstractCollection
addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.List
addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray
 

Constructor Detail

FileAsList

public FileAsList(File mappedFile,
                  int recordLength)
           throws IOException
Creates a new FileAsList and corresponding backing file.

Parameters:
mappedFile - a File used to back the list. This file must not already exist.
recordLength - an int byte record length.
Throws:
IOException - if an error occurs.

FileAsList

public FileAsList(File mappedFile,
                  boolean mutable)
           throws IOException
Creates a new FileAsList instance from an existing backing file.

Parameters:
mappedFile - a File used to back the list. This file must already exist.
mutable - true if this list should support edits, false otherwise
Throws:
IOException - if an error occurs.
Method Detail

rawGet

public byte[] rawGet(int indx)
rawGet reads the record at the specified index as a raw byte array.

Parameters:
indx - an int list index.
Returns:
a byte [] array containing the raw record data.

get

public Object get(int indx)
Specified by:
get in interface List
Specified by:
get in class AbstractList

size

public int size()
Specified by:
size in interface Collection
Specified by:
size in interface List
Specified by:
size in class AbstractCollection

add

public boolean add(Object o)
Specified by:
add in interface Collection
Specified by:
add in interface List
Overrides:
add in class AbstractList

set

public Object set(int indx,
                  Object o)
This always returns null, not the previous object.

Specified by:
set in interface List
Overrides:
set in class AbstractList

clear

public void clear()
Specified by:
clear in interface Collection
Specified by:
clear in interface List
Overrides:
clear in class AbstractList

commit

public void commit()
Description copied from interface: Commitable
commit commits pending changes.

Specified by:
commit in interface Commitable

rollback

public void rollback()
Description copied from interface: Commitable
rollback reverses pending changes to restore initial (or prior commit) state. This always succededs or raises an unchecked exception.

Specified by:
rollback in interface Commitable

parseRecord

protected abstract Object parseRecord(byte[] buffer)

generateRecord

protected abstract void generateRecord(byte[] buffer,
                                       Object item)
                                throws IOException
Throws:
IOException

getComparator

public abstract Comparator getComparator()

iterator

public Iterator iterator()
Specified by:
iterator in interface Iterable
Specified by:
iterator in interface Collection
Specified by:
iterator in interface List
Overrides:
iterator in class AbstractList