Class DeltaDocument

  • All Implemented Interfaces:
    org.exbin.auxiliary.paged_data.BinaryData, org.exbin.auxiliary.paged_data.EditableBinaryData

    @ParametersAreNonnullByDefault
    public class DeltaDocument
    extends java.lang.Object
    implements org.exbin.auxiliary.paged_data.EditableBinaryData
    Delta document defined as a sequence of segments.
    • Method Detail

      • getSegments

        @Nonnull
        public DefaultDoublyLinkedList<DataSegment> getSegments()
        Method for accessing data pages. Use only if you know what you are doing.
        Returns:
        segments
      • getSegment

        @Nullable
        public DataSegment getSegment​(long position)
        Returns segment starting at or before given position and ending after it. Returns null if position is at the end or after then end of the document.
        Parameters:
        position - requested position
        Returns:
        data segment or null
      • isEmpty

        public boolean isEmpty()
        Specified by:
        isEmpty in interface org.exbin.auxiliary.paged_data.BinaryData
      • getDataSize

        public long getDataSize()
        Specified by:
        getDataSize in interface org.exbin.auxiliary.paged_data.BinaryData
      • getByte

        public byte getByte​(long position)
        Specified by:
        getByte in interface org.exbin.auxiliary.paged_data.BinaryData
      • setByte

        public void setByte​(long position,
                            byte value)
        Specified by:
        setByte in interface org.exbin.auxiliary.paged_data.EditableBinaryData
      • insertUninitialized

        public void insertUninitialized​(long startFrom,
                                        long length)
        Specified by:
        insertUninitialized in interface org.exbin.auxiliary.paged_data.EditableBinaryData
      • insert

        public void insert​(long startFrom,
                           long length)
        Specified by:
        insert in interface org.exbin.auxiliary.paged_data.EditableBinaryData
      • insert

        public void insert​(long startFrom,
                           byte[] insertedData)
        Specified by:
        insert in interface org.exbin.auxiliary.paged_data.EditableBinaryData
      • insert

        public void insert​(long startFrom,
                           byte[] insertedData,
                           int insertedDataOffset,
                           int insertedDataLength)
        Specified by:
        insert in interface org.exbin.auxiliary.paged_data.EditableBinaryData
      • insert

        public void insert​(long startFrom,
                           org.exbin.auxiliary.paged_data.BinaryData insertedData)
        Specified by:
        insert in interface org.exbin.auxiliary.paged_data.EditableBinaryData
      • insert

        public void insert​(long startFrom,
                           org.exbin.auxiliary.paged_data.BinaryData insertedData,
                           long insertedDataOffset,
                           long insertedDataLength)
        Specified by:
        insert in interface org.exbin.auxiliary.paged_data.EditableBinaryData
      • insertSegment

        public void insertSegment​(long startFrom,
                                  DataSegment segment)
        Directly inserts segment into given position.
        Parameters:
        startFrom - start position
        segment - inserted segment
      • insert

        public long insert​(long startFrom,
                           java.io.InputStream inputStream,
                           long maxDataLength)
                    throws java.io.IOException
        Specified by:
        insert in interface org.exbin.auxiliary.paged_data.EditableBinaryData
        Throws:
        java.io.IOException
      • replace

        public void replace​(long targetPosition,
                            org.exbin.auxiliary.paged_data.BinaryData replacingData)
        Specified by:
        replace in interface org.exbin.auxiliary.paged_data.EditableBinaryData
      • replace

        public void replace​(long targetPosition,
                            org.exbin.auxiliary.paged_data.BinaryData replacingData,
                            long startFrom,
                            long length)
        Specified by:
        replace in interface org.exbin.auxiliary.paged_data.EditableBinaryData
      • replace

        public void replace​(long targetPosition,
                            byte[] replacingData)
        Specified by:
        replace in interface org.exbin.auxiliary.paged_data.EditableBinaryData
      • replace

        public void replace​(long targetPosition,
                            byte[] replacingData,
                            int replacingDataOffset,
                            int length)
        Specified by:
        replace in interface org.exbin.auxiliary.paged_data.EditableBinaryData
      • replaceSegment

        public void replaceSegment​(long targetPosition,
                                   DataSegment segment)
        Directly replaces segment into given position.
        Parameters:
        targetPosition - target position
        segment - inserted segment
      • fillData

        public void fillData​(long startFrom,
                             long length)
        Specified by:
        fillData in interface org.exbin.auxiliary.paged_data.EditableBinaryData
      • fillData

        public void fillData​(long startFrom,
                             long length,
                             byte fill)
        Specified by:
        fillData in interface org.exbin.auxiliary.paged_data.EditableBinaryData
      • remove

        public void remove​(long startFrom,
                           long length)
        Specified by:
        remove in interface org.exbin.auxiliary.paged_data.EditableBinaryData
      • clear

        public void clear()
        Specified by:
        clear in interface org.exbin.auxiliary.paged_data.EditableBinaryData
      • dispose

        public void dispose()
        Specified by:
        dispose in interface org.exbin.auxiliary.paged_data.BinaryData
      • loadFromStream

        public void loadFromStream​(java.io.InputStream stream)
                            throws java.io.IOException
        Specified by:
        loadFromStream in interface org.exbin.auxiliary.paged_data.EditableBinaryData
        Throws:
        java.io.IOException
      • saveToStream

        public void saveToStream​(java.io.OutputStream stream)
                          throws java.io.IOException
        Specified by:
        saveToStream in interface org.exbin.auxiliary.paged_data.BinaryData
        Throws:
        java.io.IOException
      • copy

        @Nonnull
        public org.exbin.auxiliary.paged_data.BinaryData copy()
        Specified by:
        copy in interface org.exbin.auxiliary.paged_data.BinaryData
      • copy

        @Nonnull
        public org.exbin.auxiliary.paged_data.BinaryData copy​(long startFrom,
                                                              long length)
        Specified by:
        copy in interface org.exbin.auxiliary.paged_data.BinaryData
      • copyToArray

        public void copyToArray​(long startFrom,
                                byte[] target,
                                int offset,
                                int length)
        Specified by:
        copyToArray in interface org.exbin.auxiliary.paged_data.BinaryData
      • getDataOutputStream

        @Nonnull
        public java.io.OutputStream getDataOutputStream()
        Specified by:
        getDataOutputStream in interface org.exbin.auxiliary.paged_data.EditableBinaryData
      • getDataInputStream

        @Nonnull
        public java.io.InputStream getDataInputStream()
        Specified by:
        getDataInputStream in interface org.exbin.auxiliary.paged_data.BinaryData
      • setDataSize

        public void setDataSize​(long dataSize)
        Specified by:
        setDataSize in interface org.exbin.auxiliary.paged_data.EditableBinaryData
      • save

        public void save()
                  throws java.io.IOException
        Performs save to source file.
        Throws:
        java.io.IOException - on input/output error
      • clearCache

        public void clearCache()
        Resets cached state - needed after change.
      • getPartCopy

        @Nullable
        public DataSegment getPartCopy​(long position,
                                       long length)
        Returns segment starting from given position or copy of part of the segment starting from given position up to the end of length.
        Parameters:
        position - position
        length - length
        Returns:
        data segment
      • setFileSource

        public void setFileSource​(FileDataSource fileSource)
      • validatePointerPosition

        public void validatePointerPosition()
      • validateDocumentSize

        public void validateDocumentSize()
      • validate

        public void validate()