Class DiskDataStorage

java.lang.Object
org.apfloat.spi.DataStorage
org.apfloat.internal.DiskDataStorage
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
DoubleDiskDataStorage, FloatDiskDataStorage, IntDiskDataStorage, LongDiskDataStorage

public abstract class DiskDataStorage extends DataStorage
Abstract base class for disk-based data storage, containing the common functionality independent of the element type.
Version:
1.9.0
Author:
Mikko Tommila
See Also:
  • Constructor Details

    • DiskDataStorage

      protected DiskDataStorage() throws ApfloatRuntimeException
      Default constructor.
      Throws:
      ApfloatRuntimeException
    • DiskDataStorage

      protected DiskDataStorage(DiskDataStorage diskDataStorage, long offset, long length)
      Subsequence constructor.
      Parameters:
      diskDataStorage - The originating data storage.
      offset - The subsequence starting position.
      length - The subsequence length.
  • Method Details

    • isCached

      public boolean isCached()
      Description copied from class: DataStorage
      Is this object cached in memory.
      Specified by:
      isCached in class DataStorage
      Returns:
      true if this object is cached in memory, false if not.
    • implCopyFrom

      protected void implCopyFrom(DataStorage dataStorage, long size) throws ApfloatRuntimeException
      Description copied from class: DataStorage
      Copies the specified number of elements from another data storage to this data storage. The validity of the arguments of this method do not need to be checked.
      Specified by:
      implCopyFrom in class DataStorage
      Parameters:
      dataStorage - The data storage where the data should be copied from.
      size - The number of elements to be copied.
      Throws:
      ApfloatRuntimeException
    • implGetSize

      protected long implGetSize() throws ApfloatRuntimeException
      Description copied from class: DataStorage
      Return the size of the whole data storage, not including sub-sequence settings.
      Specified by:
      implGetSize in class DataStorage
      Returns:
      The size of the whole data storage, not including sub-sequence settings.
      Throws:
      ApfloatRuntimeException
    • implSetSize

      protected void implSetSize(long size) throws ApfloatRuntimeException
      Description copied from class: DataStorage
      Sets the size of the data storage. The validity of the arguments of this method do not need to be checked.
      Specified by:
      implSetSize in class DataStorage
      Parameters:
      size - The size of the data storage.
      Throws:
      ApfloatRuntimeException
    • implGetArray

      protected ArrayAccess implGetArray(int mode, int startColumn, int columns, int rows) throws ApfloatRuntimeException
      Description copied from class: DataStorage
      Maps a block of data to a memory array when the data is treated as a matrix. The validity of the arguments of this method do not need to be checked.
      Specified by:
      implGetArray in class DataStorage
      Parameters:
      mode - Whether the array is prepared for reading, writing or both. The value should be DataStorage.READ, DataStorage.WRITE or a combination of these.
      startColumn - The starting column where data is read.
      columns - The number of columns of data to read.
      rows - The number of rows of data to read. This should be equivalent to n1, number of rows in the matrix.
      Returns:
      Access to an array of size columns x rows containing the data.
      Throws:
      ApfloatRuntimeException
    • implGetTransposedArray

      protected ArrayAccess implGetTransposedArray(int mode, int startColumn, int columns, int rows) throws ApfloatRuntimeException
      Description copied from class: DataStorage
      Maps a transposed block of data to a memory array when the data is treated as a matrix. The validity of the arguments of this method do not need to be checked.
      Specified by:
      implGetTransposedArray in class DataStorage
      Parameters:
      mode - Whether the array is prepared for reading, writing or both. The value should be DataStorage.READ, DataStorage.WRITE or a combination of these.
      startColumn - The starting column where data is read.
      columns - The number of columns of data to read.
      rows - The number of rows of data to read. This should be equivalent to n1, number of rows in the matrix.
      Returns:
      Access to an array of size columns x rows containing the transposed data.
      Throws:
      ApfloatRuntimeException
    • setArray

      protected void setArray(ArrayAccess arrayAccess, int startColumn, int columns, int rows) throws ApfloatRuntimeException
      Write the data back to the same location in the file that was retrieved with implGetArray(int,int,int,int).
      Parameters:
      arrayAccess - The transposed array access.
      startColumn - The starting column where data is stored.
      columns - The number of columns of data.
      rows - The number of rows of data.
      Throws:
      ApfloatRuntimeException
      Since:
      1.7.0
    • setTransposedArray

      protected void setTransposedArray(ArrayAccess arrayAccess, int startColumn, int columns, int rows) throws ApfloatRuntimeException
      Write the data back to the same location in the file that was retrieved with implGetTransposedArray(int,int,int,int).
      Parameters:
      arrayAccess - The transposed array access.
      startColumn - The starting column where data is stored.
      columns - The number of columns of data.
      rows - The number of rows of data.
      Throws:
      ApfloatRuntimeException
      Since:
      1.7.0
    • createArrayAccess

      protected abstract ArrayAccess createArrayAccess(int mode, int startColumn, int columns, int rows)
      Create an empty ArrayAccess.
      Parameters:
      mode - Whether the array is prepared for reading, writing or both. The value should be DataStorage.READ, DataStorage.WRITE or a combination of these.
      startColumn - The starting column where data is stored.
      columns - The number of columns of data.
      rows - The number of rows of data.
      Returns:
      Access to an empty array of the specified size and position.
      Since:
      1.7.0
    • createTransposedArrayAccess

      protected abstract ArrayAccess createTransposedArrayAccess(int mode, int startColumn, int columns, int rows)
      Create an empty transposed ArrayAccess.
      Parameters:
      mode - Whether the array is prepared for reading, writing or both. The value should be DataStorage.READ, DataStorage.WRITE or a combination of these.
      startColumn - The starting column where data is stored.
      columns - The number of columns of data.
      rows - The number of rows of data.
      Returns:
      Access to an empty array of the specified size and position.
      Since:
      1.7.0
    • transferFrom

      protected void transferFrom(ReadableByteChannel in, long position, long size) throws ApfloatRuntimeException
      Transfer from a readable channel, possibly in multiple chunks.
      Parameters:
      in - Input channel.
      position - Start position of transfer.
      size - Total number of bytes to transfer.
      Throws:
      ApfloatRuntimeException
    • transferTo

      protected void transferTo(WritableByteChannel out, long position, long size) throws ApfloatRuntimeException
      Transfer to a writable channel, possibly in multiple chunks.
      Parameters:
      out - Output channel.
      position - Start position of transfer.
      size - Total number of bytes to transfer.
      Throws:
      ApfloatRuntimeException
    • getBlockSize

      protected static int getBlockSize()
      Convenience method for getting the block size (in bytes) for the current ApfloatContext.
      Returns:
      I/O block size, in bytes.
    • getUnitSize

      protected abstract int getUnitSize()
      Size of the element type, in bytes.
      Returns:
      Size of the element type, in bytes.
    • getFilename

      protected final String getFilename()
      Filename of the underlying disk data storage.
      Returns:
      Filename of the underlying disk data storage.
    • getFileChannel

      protected final FileChannel getFileChannel()
      The FileChannel of the underlying disk file.
      Returns:
      The FileChannel of the underlying disk file.