Class OnDiskUpperTriangleMatrix

  • All Implemented Interfaces:
    java.lang.AutoCloseable

    public class OnDiskUpperTriangleMatrix
    extends java.lang.Object
    implements java.lang.AutoCloseable
    Class representing an upper triangle matrix backed by an on-disk array of O((n+1)*n/2) size
    Since:
    0.2
    Author:
    Erich Schubert
    • Constructor Summary

      Constructors 
      Constructor Description
      OnDiskUpperTriangleMatrix​(java.nio.file.Path filename, int magicseed, int extraheadersize, int recordsize, boolean writable)
      Constructor to access an existing array.
      OnDiskUpperTriangleMatrix​(java.nio.file.Path filename, int magicseed, int extraheadersize, int recordsize, int matrixsize)
      Constructor to access a new array.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private static int arraysize​(int matrixsize)
      Compute the size of the needed backing array from the matrix dimensions.
      void close()
      Close the matrix file.
      private int computeOffset​(int x, int y)
      Compute the offset within the file.
      int getMatrixSize()
      Query the size of the matrix.
      java.nio.ByteBuffer getRecordBuffer​(int x, int y)
      Get a record buffer
      void resizeMatrix​(int newsize)
      Resize the matrix to cover newsize x newsize.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • serialVersionUID

        private static final long serialVersionUID
        Serial number, also used for generating a magic
        See Also:
        Constant Field Values
      • TRIANGLE_HEADER_SIZE

        private static final int TRIANGLE_HEADER_SIZE
        Size of this class' header
        See Also:
        Constant Field Values
      • matrixsize

        private int matrixsize
        Size of the matrix
    • Constructor Detail

      • OnDiskUpperTriangleMatrix

        public OnDiskUpperTriangleMatrix​(java.nio.file.Path filename,
                                         int magicseed,
                                         int extraheadersize,
                                         int recordsize,
                                         boolean writable)
                                  throws java.io.IOException
        Constructor to access an existing array.
        Parameters:
        filename - File name
        magicseed - Magic number
        extraheadersize - Size of extra header data
        recordsize - Record size
        writable - flag to open writable
        Throws:
        java.io.IOException - on IO errors
      • OnDiskUpperTriangleMatrix

        public OnDiskUpperTriangleMatrix​(java.nio.file.Path filename,
                                         int magicseed,
                                         int extraheadersize,
                                         int recordsize,
                                         int matrixsize)
                                  throws java.io.IOException
        Constructor to access a new array.
        Parameters:
        filename - File name
        magicseed - Magic number
        extraheadersize - Size of extra header data
        recordsize - Record size
        matrixsize - Size of matrix to store
        Throws:
        java.io.IOException - on IO errors
    • Method Detail

      • resizeMatrix

        public void resizeMatrix​(int newsize)
                          throws java.io.IOException
        Resize the matrix to cover newsize x newsize.
        Parameters:
        newsize - New matrix size.
        Throws:
        java.io.IOException - on IO errors
      • arraysize

        private static int arraysize​(int matrixsize)
        Compute the size of the needed backing array from the matrix dimensions.
        Parameters:
        matrixsize - size of the matrix
        Returns:
        size of the array
      • computeOffset

        private int computeOffset​(int x,
                                  int y)
        Compute the offset within the file.
        Parameters:
        x - First coordinate
        y - Second coordinate
        Returns:
        Linear offset
      • getRecordBuffer

        public java.nio.ByteBuffer getRecordBuffer​(int x,
                                                   int y)
                                            throws java.io.IOException
        Get a record buffer
        Parameters:
        x - First coordinate
        y - Second coordinate
        Returns:
        Byte buffer for the record
        Throws:
        java.io.IOException - on IO errors
      • close

        public void close()
                   throws java.io.IOException
        Close the matrix file.
        Specified by:
        close in interface java.lang.AutoCloseable
        Throws:
        java.io.IOException - on IO errors
      • getMatrixSize

        public int getMatrixSize()
        Query the size of the matrix.
        Returns:
        size of the matrix