public class DeltaDocument
extends java.lang.Object
implements org.exbin.utils.binary_data.EditableBinaryData
Constructor and Description |
---|
DeltaDocument(SegmentsRepository repository) |
DeltaDocument(SegmentsRepository repository,
FileDataSource fileSource) |
Modifier and Type | Method and Description |
---|---|
void |
addChangeListener(DeltaDocumentChangedListener listener) |
void |
clear() |
void |
clearCache()
Resets cached state - needed after change.
|
org.exbin.utils.binary_data.BinaryData |
copy() |
org.exbin.utils.binary_data.BinaryData |
copy(long startFrom,
long length) |
void |
copyToArray(long startFrom,
byte[] target,
int offset,
int length) |
void |
dispose() |
void |
fillData(long startFrom,
long length) |
void |
fillData(long startFrom,
long length,
byte fill) |
byte |
getByte(long position) |
java.io.InputStream |
getDataInputStream() |
java.io.OutputStream |
getDataOutputStream() |
long |
getDataSize() |
FileDataSource |
getFileSource() |
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.
|
SegmentsRepository |
getRepository() |
DataSegment |
getSegment(long position)
Returns segment starting at or before given position and ending after it.
|
DefaultDoublyLinkedList<DataSegment> |
getSegments() |
void |
insert(long startFrom,
org.exbin.utils.binary_data.BinaryData insertedData) |
void |
insert(long startFrom,
org.exbin.utils.binary_data.BinaryData insertedData,
long insertedDataOffset,
long insertedDataLength) |
void |
insert(long startFrom,
byte[] insertedData) |
void |
insert(long startFrom,
byte[] insertedData,
int insertedDataOffset,
int insertedDataLength) |
long |
insert(long startFrom,
java.io.InputStream in,
long maxDataLength) |
void |
insert(long startFrom,
long length) |
void |
insertSegment(long startFrom,
DataSegment segment)
Directly inserts segment into given position.
|
void |
insertUninitialized(long startFrom,
long length) |
boolean |
isEmpty() |
void |
loadFromStream(java.io.InputStream in) |
void |
notifyChangeListeners(DeltaDocumentWindow window) |
void |
remove(long startFrom,
long length) |
void |
removeChangeListener(DeltaDocumentChangedListener listener) |
void |
replace(long targetPosition,
org.exbin.utils.binary_data.BinaryData replacingData) |
void |
replace(long targetPosition,
org.exbin.utils.binary_data.BinaryData replacingData,
long startFrom,
long length) |
void |
replace(long targetPosition,
byte[] replacingData) |
void |
replace(long targetPosition,
byte[] replacingData,
int replacingDataOffset,
int length) |
void |
replaceSegment(long targetPosition,
DataSegment segment)
Directly replaces segment into given position.
|
void |
save()
Performs save to source file.
|
void |
saveToStream(java.io.OutputStream out) |
void |
setByte(long position,
byte value) |
void |
setDataSize(long dataSize) |
void |
setFileSource(FileDataSource fileSource) |
void |
validate() |
void |
validateDocumentSize() |
void |
validatePointerPosition() |
public DeltaDocument(SegmentsRepository repository, FileDataSource fileSource) throws java.io.IOException
java.io.IOException
public DeltaDocument(SegmentsRepository repository)
public DefaultDoublyLinkedList<DataSegment> getSegments()
public DataSegment getSegment(long position)
position
- requested positionpublic boolean isEmpty()
isEmpty
in interface org.exbin.utils.binary_data.BinaryData
public long getDataSize()
getDataSize
in interface org.exbin.utils.binary_data.BinaryData
public byte getByte(long position)
getByte
in interface org.exbin.utils.binary_data.BinaryData
public void setByte(long position, byte value)
setByte
in interface org.exbin.utils.binary_data.EditableBinaryData
public void insertUninitialized(long startFrom, long length)
insertUninitialized
in interface org.exbin.utils.binary_data.EditableBinaryData
public void insert(long startFrom, long length)
insert
in interface org.exbin.utils.binary_data.EditableBinaryData
public void insert(long startFrom, byte[] insertedData)
insert
in interface org.exbin.utils.binary_data.EditableBinaryData
public void insert(long startFrom, byte[] insertedData, int insertedDataOffset, int insertedDataLength)
insert
in interface org.exbin.utils.binary_data.EditableBinaryData
public void insert(long startFrom, org.exbin.utils.binary_data.BinaryData insertedData)
insert
in interface org.exbin.utils.binary_data.EditableBinaryData
public void insert(long startFrom, org.exbin.utils.binary_data.BinaryData insertedData, long insertedDataOffset, long insertedDataLength)
insert
in interface org.exbin.utils.binary_data.EditableBinaryData
public void insertSegment(long startFrom, DataSegment segment)
startFrom
- start positionsegment
- inserted segmentpublic long insert(long startFrom, java.io.InputStream in, long maxDataLength) throws java.io.IOException
insert
in interface org.exbin.utils.binary_data.EditableBinaryData
java.io.IOException
public void replace(long targetPosition, org.exbin.utils.binary_data.BinaryData replacingData)
replace
in interface org.exbin.utils.binary_data.EditableBinaryData
public void replace(long targetPosition, org.exbin.utils.binary_data.BinaryData replacingData, long startFrom, long length)
replace
in interface org.exbin.utils.binary_data.EditableBinaryData
public void replace(long targetPosition, byte[] replacingData)
replace
in interface org.exbin.utils.binary_data.EditableBinaryData
public void replace(long targetPosition, byte[] replacingData, int replacingDataOffset, int length)
replace
in interface org.exbin.utils.binary_data.EditableBinaryData
public void replaceSegment(long targetPosition, DataSegment segment)
targetPosition
- target positionsegment
- inserted segmentpublic void fillData(long startFrom, long length)
fillData
in interface org.exbin.utils.binary_data.EditableBinaryData
public void fillData(long startFrom, long length, byte fill)
fillData
in interface org.exbin.utils.binary_data.EditableBinaryData
public void remove(long startFrom, long length)
remove
in interface org.exbin.utils.binary_data.EditableBinaryData
public void clear()
clear
in interface org.exbin.utils.binary_data.EditableBinaryData
public void dispose()
dispose
in interface org.exbin.utils.binary_data.BinaryData
public void loadFromStream(java.io.InputStream in) throws java.io.IOException
loadFromStream
in interface org.exbin.utils.binary_data.EditableBinaryData
java.io.IOException
public void saveToStream(java.io.OutputStream out) throws java.io.IOException
saveToStream
in interface org.exbin.utils.binary_data.BinaryData
java.io.IOException
public org.exbin.utils.binary_data.BinaryData copy()
copy
in interface org.exbin.utils.binary_data.BinaryData
public org.exbin.utils.binary_data.BinaryData copy(long startFrom, long length)
copy
in interface org.exbin.utils.binary_data.BinaryData
public void copyToArray(long startFrom, byte[] target, int offset, int length)
copyToArray
in interface org.exbin.utils.binary_data.BinaryData
public java.io.OutputStream getDataOutputStream()
getDataOutputStream
in interface org.exbin.utils.binary_data.EditableBinaryData
public java.io.InputStream getDataInputStream()
getDataInputStream
in interface org.exbin.utils.binary_data.BinaryData
public void setDataSize(long dataSize)
setDataSize
in interface org.exbin.utils.binary_data.EditableBinaryData
public void save() throws java.io.IOException
java.io.IOException
- on input/output errorpublic void clearCache()
public DataSegment getPartCopy(long position, long length)
position
- positionlength
- lengthpublic FileDataSource getFileSource()
public void setFileSource(FileDataSource fileSource)
public SegmentsRepository getRepository()
public void addChangeListener(DeltaDocumentChangedListener listener)
public void removeChangeListener(DeltaDocumentChangedListener listener)
public void notifyChangeListeners(DeltaDocumentWindow window)
public void validatePointerPosition()
public void validateDocumentSize()
public void validate()