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) |
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)