Class 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

      Constructors 
      Constructor Description
      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

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      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.Collection

        parallelStream, removeIf, stream, toArray
      • Methods inherited from interface java.lang.Iterable

        forEach
      • Methods inherited from interface java.util.List

        addAll, contains, containsAll, isEmpty, remove, removeAll, replaceAll, retainAll, sort, spliterator, 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
      • 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. If the rollback fails, you must raise an AssertionFailure.
        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.util.Collection
        Specified by:
        iterator in interface java.lang.Iterable
        Specified by:
        iterator in interface java.util.List
        Overrides:
        iterator in class java.util.AbstractList