Class DeltaDocument
- java.lang.Object
-
- org.exbin.auxiliary.paged_data.delta.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.EditableBinaryDataDelta document defined as a sequence of segments.
-
-
Constructor Summary
Constructors Constructor Description DeltaDocument(SegmentsRepository repository)DeltaDocument(SegmentsRepository repository, FileDataSource fileSource)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddChangeListener(DeltaDocumentChangedListener listener)voidclear()voidclearCache()Resets cached state - needed after change.org.exbin.auxiliary.paged_data.BinaryDatacopy()org.exbin.auxiliary.paged_data.BinaryDatacopy(long startFrom, long length)voidcopyToArray(long startFrom, byte[] target, int offset, int length)voiddispose()voidfillData(long startFrom, long length)voidfillData(long startFrom, long length, byte fill)bytegetByte(long position)java.io.InputStreamgetDataInputStream()java.io.OutputStreamgetDataOutputStream()longgetDataSize()FileDataSourcegetFileSource()DataSegmentgetPartCopy(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.SegmentsRepositorygetRepository()DataSegmentgetSegment(long position)Returns segment starting at or before given position and ending after it.DefaultDoublyLinkedList<DataSegment>getSegments()Method for accessing data pages.voidinsert(long startFrom, byte[] insertedData)voidinsert(long startFrom, byte[] insertedData, int insertedDataOffset, int insertedDataLength)voidinsert(long startFrom, long length)longinsert(long startFrom, java.io.InputStream inputStream, long maxDataLength)voidinsert(long startFrom, org.exbin.auxiliary.paged_data.BinaryData insertedData)voidinsert(long startFrom, org.exbin.auxiliary.paged_data.BinaryData insertedData, long insertedDataOffset, long insertedDataLength)voidinsertSegment(long startFrom, DataSegment segment)Directly inserts segment into given position.voidinsertUninitialized(long startFrom, long length)booleanisEmpty()voidloadFromStream(java.io.InputStream stream)voidnotifyChangeListeners(DeltaDocumentWindow window)voidremove(long startFrom, long length)voidremoveChangeListener(DeltaDocumentChangedListener listener)voidreplace(long targetPosition, byte[] replacingData)voidreplace(long targetPosition, byte[] replacingData, int replacingDataOffset, int length)voidreplace(long targetPosition, org.exbin.auxiliary.paged_data.BinaryData replacingData)voidreplace(long targetPosition, org.exbin.auxiliary.paged_data.BinaryData replacingData, long startFrom, long length)voidreplaceSegment(long targetPosition, DataSegment segment)Directly replaces segment into given position.voidsave()Performs save to source file.voidsaveToStream(java.io.OutputStream stream)voidsetByte(long position, byte value)voidsetDataSize(long dataSize)voidsetFileSource(FileDataSource fileSource)voidvalidate()voidvalidateDocumentSize()voidvalidatePointerPosition()
-
-
-
Constructor Detail
-
DeltaDocument
public DeltaDocument(SegmentsRepository repository, FileDataSource fileSource) throws java.io.IOException
- Throws:
java.io.IOException
-
DeltaDocument
public DeltaDocument(SegmentsRepository repository)
-
-
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:
isEmptyin interfaceorg.exbin.auxiliary.paged_data.BinaryData
-
getDataSize
public long getDataSize()
- Specified by:
getDataSizein interfaceorg.exbin.auxiliary.paged_data.BinaryData
-
getByte
public byte getByte(long position)
- Specified by:
getBytein interfaceorg.exbin.auxiliary.paged_data.BinaryData
-
setByte
public void setByte(long position, byte value)- Specified by:
setBytein interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
insertUninitialized
public void insertUninitialized(long startFrom, long length)- Specified by:
insertUninitializedin interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
insert
public void insert(long startFrom, long length)- Specified by:
insertin interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
insert
public void insert(long startFrom, byte[] insertedData)- Specified by:
insertin interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
insert
public void insert(long startFrom, byte[] insertedData, int insertedDataOffset, int insertedDataLength)- Specified by:
insertin interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
insert
public void insert(long startFrom, org.exbin.auxiliary.paged_data.BinaryData insertedData)- Specified by:
insertin interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
insert
public void insert(long startFrom, org.exbin.auxiliary.paged_data.BinaryData insertedData, long insertedDataOffset, long insertedDataLength)- Specified by:
insertin interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
insertSegment
public void insertSegment(long startFrom, DataSegment segment)Directly inserts segment into given position.- Parameters:
startFrom- start positionsegment- inserted segment
-
insert
public long insert(long startFrom, java.io.InputStream inputStream, long maxDataLength) throws java.io.IOException- Specified by:
insertin interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData- Throws:
java.io.IOException
-
replace
public void replace(long targetPosition, org.exbin.auxiliary.paged_data.BinaryData replacingData)- Specified by:
replacein interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
replace
public void replace(long targetPosition, org.exbin.auxiliary.paged_data.BinaryData replacingData, long startFrom, long length)- Specified by:
replacein interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
replace
public void replace(long targetPosition, byte[] replacingData)- Specified by:
replacein interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
replace
public void replace(long targetPosition, byte[] replacingData, int replacingDataOffset, int length)- Specified by:
replacein interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
replaceSegment
public void replaceSegment(long targetPosition, DataSegment segment)Directly replaces segment into given position.- Parameters:
targetPosition- target positionsegment- inserted segment
-
fillData
public void fillData(long startFrom, long length)- Specified by:
fillDatain interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
fillData
public void fillData(long startFrom, long length, byte fill)- Specified by:
fillDatain interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
remove
public void remove(long startFrom, long length)- Specified by:
removein interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
clear
public void clear()
- Specified by:
clearin interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
dispose
public void dispose()
- Specified by:
disposein interfaceorg.exbin.auxiliary.paged_data.BinaryData
-
loadFromStream
public void loadFromStream(java.io.InputStream stream) throws java.io.IOException- Specified by:
loadFromStreamin interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData- Throws:
java.io.IOException
-
saveToStream
public void saveToStream(java.io.OutputStream stream) throws java.io.IOException- Specified by:
saveToStreamin interfaceorg.exbin.auxiliary.paged_data.BinaryData- Throws:
java.io.IOException
-
copy
@Nonnull public org.exbin.auxiliary.paged_data.BinaryData copy()
- Specified by:
copyin interfaceorg.exbin.auxiliary.paged_data.BinaryData
-
copy
@Nonnull public org.exbin.auxiliary.paged_data.BinaryData copy(long startFrom, long length)- Specified by:
copyin interfaceorg.exbin.auxiliary.paged_data.BinaryData
-
copyToArray
public void copyToArray(long startFrom, byte[] target, int offset, int length)- Specified by:
copyToArrayin interfaceorg.exbin.auxiliary.paged_data.BinaryData
-
getDataOutputStream
@Nonnull public java.io.OutputStream getDataOutputStream()
- Specified by:
getDataOutputStreamin interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
getDataInputStream
@Nonnull public java.io.InputStream getDataInputStream()
- Specified by:
getDataInputStreamin interfaceorg.exbin.auxiliary.paged_data.BinaryData
-
setDataSize
public void setDataSize(long dataSize)
- Specified by:
setDataSizein interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
save
public void save() throws java.io.IOExceptionPerforms 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- positionlength- length- Returns:
- data segment
-
getFileSource
@Nullable public FileDataSource getFileSource()
-
setFileSource
public void setFileSource(FileDataSource fileSource)
-
getRepository
@Nonnull public SegmentsRepository getRepository()
-
addChangeListener
public void addChangeListener(DeltaDocumentChangedListener listener)
-
removeChangeListener
public void removeChangeListener(DeltaDocumentChangedListener listener)
-
notifyChangeListeners
public void notifyChangeListeners(DeltaDocumentWindow window)
-
validatePointerPosition
public void validatePointerPosition()
-
validateDocumentSize
public void validateDocumentSize()
-
validate
public void validate()
-
-