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.EditableBinaryData
Delta 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 void
addChangeListener(DeltaDocumentChangedListener listener)
void
clear()
void
clearCache()
Resets cached state - needed after change.org.exbin.auxiliary.paged_data.BinaryData
copy()
org.exbin.auxiliary.paged_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()
Method for accessing data pages.void
insert(long startFrom, byte[] insertedData)
void
insert(long startFrom, byte[] insertedData, int insertedDataOffset, int insertedDataLength)
void
insert(long startFrom, long length)
long
insert(long startFrom, java.io.InputStream inputStream, long maxDataLength)
void
insert(long startFrom, org.exbin.auxiliary.paged_data.BinaryData insertedData)
void
insert(long startFrom, org.exbin.auxiliary.paged_data.BinaryData insertedData, long insertedDataOffset, long insertedDataLength)
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 stream)
void
notifyChangeListeners(DeltaDocumentWindow window)
void
remove(long startFrom, long length)
void
removeChangeListener(DeltaDocumentChangedListener listener)
void
replace(long targetPosition, byte[] replacingData)
void
replace(long targetPosition, byte[] replacingData, int replacingDataOffset, int length)
void
replace(long targetPosition, org.exbin.auxiliary.paged_data.BinaryData replacingData)
void
replace(long targetPosition, org.exbin.auxiliary.paged_data.BinaryData replacingData, long startFrom, long 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 stream)
void
setByte(long position, byte value)
void
setDataSize(long dataSize)
void
setFileSource(FileDataSource fileSource)
void
validate()
void
validateDocumentSize()
void
validatePointerPosition()
-
-
-
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:
isEmpty
in interfaceorg.exbin.auxiliary.paged_data.BinaryData
-
getDataSize
public long getDataSize()
- Specified by:
getDataSize
in interfaceorg.exbin.auxiliary.paged_data.BinaryData
-
getByte
public byte getByte(long position)
- Specified by:
getByte
in interfaceorg.exbin.auxiliary.paged_data.BinaryData
-
setByte
public void setByte(long position, byte value)
- Specified by:
setByte
in interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
insertUninitialized
public void insertUninitialized(long startFrom, long length)
- Specified by:
insertUninitialized
in interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
insert
public void insert(long startFrom, long length)
- Specified by:
insert
in interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
insert
public void insert(long startFrom, byte[] insertedData)
- Specified by:
insert
in interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
insert
public void insert(long startFrom, byte[] insertedData, int insertedDataOffset, int insertedDataLength)
- Specified by:
insert
in interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
insert
public void insert(long startFrom, org.exbin.auxiliary.paged_data.BinaryData insertedData)
- Specified by:
insert
in 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:
insert
in 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:
insert
in 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:
replace
in 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:
replace
in interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
replace
public void replace(long targetPosition, byte[] replacingData)
- Specified by:
replace
in interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
replace
public void replace(long targetPosition, byte[] replacingData, int replacingDataOffset, int length)
- Specified by:
replace
in 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:
fillData
in interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
fillData
public void fillData(long startFrom, long length, byte fill)
- Specified by:
fillData
in interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
remove
public void remove(long startFrom, long length)
- Specified by:
remove
in interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
clear
public void clear()
- Specified by:
clear
in interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
dispose
public void dispose()
- Specified by:
dispose
in interfaceorg.exbin.auxiliary.paged_data.BinaryData
-
loadFromStream
public void loadFromStream(java.io.InputStream stream) throws java.io.IOException
- Specified by:
loadFromStream
in interfaceorg.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 interfaceorg.exbin.auxiliary.paged_data.BinaryData
- Throws:
java.io.IOException
-
copy
@Nonnull public org.exbin.auxiliary.paged_data.BinaryData copy()
- Specified by:
copy
in interfaceorg.exbin.auxiliary.paged_data.BinaryData
-
copy
@Nonnull public org.exbin.auxiliary.paged_data.BinaryData copy(long startFrom, long length)
- Specified by:
copy
in interfaceorg.exbin.auxiliary.paged_data.BinaryData
-
copyToArray
public void copyToArray(long startFrom, byte[] target, int offset, int length)
- Specified by:
copyToArray
in interfaceorg.exbin.auxiliary.paged_data.BinaryData
-
getDataOutputStream
@Nonnull public java.io.OutputStream getDataOutputStream()
- Specified by:
getDataOutputStream
in interfaceorg.exbin.auxiliary.paged_data.EditableBinaryData
-
getDataInputStream
@Nonnull public java.io.InputStream getDataInputStream()
- Specified by:
getDataInputStream
in interfaceorg.exbin.auxiliary.paged_data.BinaryData
-
setDataSize
public void setDataSize(long dataSize)
- Specified by:
setDataSize
in interfaceorg.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
- 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()
-
-