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:
java.lang.Iterable, java.util.Collection, java.util.List, Commitable

public abstract class FileAsList
extends java.util.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(java.io.File mappedFile, boolean mutable)
          Creates a new FileAsList instance from an existing backing file.
FileAsList(java.io.File mappedFile, int recordLength)
          Creates a new FileAsList and corresponding backing file.
 
Method Summary
 boolean add(java.lang.Object o)
           
 void clear()
           
 void commit()
          commit commits pending changes.
protected abstract  void generateRecord(byte[] buffer, java.lang.Object item)
           
 java.lang.Object get(int indx)
           
abstract  java.util.Comparator getComparator()
           
 java.util.Iterator iterator()
           
protected abstract  java.lang.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.
 java.lang.Object set(int indx, java.lang.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(java.io.File mappedFile,
                  int recordLength)
           throws java.io.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:
java.io.IOException - if an error occurs.

FileAsList

public FileAsList(java.io.File mappedFile,
                  boolean mutable)
           throws java.io.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:
java.io.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 java.lang.Object get(int indx)
Specified by:
get in interface java.util.List
Specified by:
get in class java.util.AbstractList

size

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

add

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

set

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

Specified by:
set in interface java.util.List
Overrides:
set in class java.util.AbstractList

clear

public void clear()
Specified by:
clear in interface java.util.Collection
Specified by:
clear in interface java.util.List
Overrides:
clear in class java.util.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 java.lang.Object parseRecord(byte[] buffer)

generateRecord

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

getComparator

public abstract java.util.Comparator getComparator()

iterator

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