Class SequenceRandomAccessRead

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, RandomAccessRead

    public class SequenceRandomAccessRead
    extends java.lang.Object
    implements RandomAccessRead
    Wrapper class to combine several RandomAccessRead instances so that they can be accessed as one big RandomAccessRead.
    • Field Detail

      • startPositions

        private final long[] startPositions
      • endPositions

        private final long[] endPositions
      • numberOfReader

        private final int numberOfReader
      • currentIndex

        private int currentIndex
      • currentPosition

        private long currentPosition
      • totalLength

        private long totalLength
      • isClosed

        private boolean isClosed
    • Constructor Detail

      • SequenceRandomAccessRead

        public SequenceRandomAccessRead​(java.util.List<RandomAccessRead> randomAccessReadList)
    • Method Detail

      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException
      • getCurrentReader

        private RandomAccessRead getCurrentReader()
                                           throws java.io.IOException
        Throws:
        java.io.IOException
      • read

        public int read()
                 throws java.io.IOException
        Description copied from interface: RandomAccessRead
        Read a single byte of data.
        Specified by:
        read in interface RandomAccessRead
        Returns:
        The byte of data that is being read.
        Throws:
        java.io.IOException - If there is an error while reading the data.
      • read

        public int read​(byte[] b,
                        int offset,
                        int length)
                 throws java.io.IOException
        Description copied from interface: RandomAccessRead
        Read a buffer of data.
        Specified by:
        read in interface RandomAccessRead
        Parameters:
        b - The buffer to write the data to.
        offset - Offset into the buffer to start writing.
        length - The amount of data to attempt to read.
        Returns:
        The number of bytes that were actually read.
        Throws:
        java.io.IOException - If there was an error while reading the data.
      • getPosition

        public long getPosition()
                         throws java.io.IOException
        Description copied from interface: RandomAccessRead
        Returns offset of next byte to be returned by a read method.
        Specified by:
        getPosition in interface RandomAccessRead
        Returns:
        offset of next byte which will be returned with next RandomAccessRead.read() (if no more bytes are left it returns a value >= length of source)
        Throws:
        java.io.IOException - If there was an error while getting the current position
      • seek

        public void seek​(long position)
                  throws java.io.IOException
        Description copied from interface: RandomAccessRead
        Seek to a position in the data.
        Specified by:
        seek in interface RandomAccessRead
        Parameters:
        position - The position to seek to.
        Throws:
        java.io.IOException - If there is an error while seeking.
      • length

        public long length()
                    throws java.io.IOException
        Description copied from interface: RandomAccessRead
        The total number of bytes that are available.
        Specified by:
        length in interface RandomAccessRead
        Returns:
        The number of bytes available.
        Throws:
        java.io.IOException - If there is an IO error while determining the length of the data stream.
      • isClosed

        public boolean isClosed()
        Description copied from interface: RandomAccessRead
        Returns true if this source has been closed.
        Specified by:
        isClosed in interface RandomAccessRead
        Returns:
        true if the source has been closed
      • checkClosed

        private void checkClosed()
                          throws java.io.IOException
        Ensure that the SequenceRandomAccessRead is not closed
        Throws:
        java.io.IOException - If RandomAccessBuffer already closed
      • isEOF

        public boolean isEOF()
                      throws java.io.IOException
        Description copied from interface: RandomAccessRead
        A simple test to see if we are at the end of the data.
        Specified by:
        isEOF in interface RandomAccessRead
        Returns:
        true if we are at the end of the data.
        Throws:
        java.io.IOException - If there is an error reading the next byte.
      • createView

        public RandomAccessReadView createView​(long startPosition,
                                               long streamLength)
                                        throws java.io.IOException
        Description copied from interface: RandomAccessRead
        Creates a random access read view starting at the given position with the given length.
        Specified by:
        createView in interface RandomAccessRead
        Parameters:
        startPosition - start position within the underlying random access read
        streamLength - stream length
        Returns:
        the random access read view
        Throws:
        java.io.IOException - if something went wrong when creating the view for the RandomAccessRead