Package org.exbin.xbup.core.block
Class XBDefaultEditableBlock
- java.lang.Object
-
- org.exbin.xbup.core.block.XBDefaultEditableBlock
-
- All Implemented Interfaces:
XBBlock,XBEditableBlock
@ParametersAreNonnullByDefault public class XBDefaultEditableBlock extends java.lang.Object implements XBEditableBlock
Basic plain implementation of XBEditableBlock interface.
-
-
Constructor Summary
Constructors Constructor Description XBDefaultEditableBlock()Creates new instance of XBDefaultBlock as an empty data block.XBDefaultEditableBlock(XBBlock parent, XBBlockTerminationMode terminationMode, org.exbin.auxiliary.paged_data.BinaryData data)Creates new instance of XBDefaultBlock as a data block with given values.XBDefaultEditableBlock(XBBlock parent, XBBlockTerminationMode terminationMode, XBAttribute[] attributes, XBBlock[] children)Creates new instance of XBDefaultBlock as a node block with given values.XBDefaultEditableBlock(XBBlockTerminationMode terminationMode, org.exbin.auxiliary.paged_data.BinaryData data)Creates new instance of XBDefaultBlock as a data block with given values and no parent block.XBDefaultEditableBlock(XBBlockTerminationMode terminationMode, XBAttribute[] attributes, XBBlock[] children)Creates new instance of XBDefaultBlock as a node block with given values and no parent block.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclear()Clears all data, attributes and child blocks.XBBlockcreateNewChild(int childIndex)This method instantiates new child node.XBAttributegetAttributeAt(int attributeIndex)Gets attribute of given index / order.XBAttribute[]getAttributes()Gets array of attributes in order of appearance.intgetAttributesCount()Gets count of attributes.org.exbin.auxiliary.paged_data.BinaryDatagetBlockData()Gets block data.static intgetBlockIndex(XBBlock block)Gets block position in depth-first scan of the tree.java.io.InputStreamgetData()Gets block data.XBBlockDataModegetDataMode()Returns mode whether this block is data block.longgetDataSize()XBBlockgetChildAt(int childIndex)Gets child block of given index.static intgetChildIndexOf(XBBlock parent, XBBlock block)Gets block position in parents direct child list.XBBlock[]getChildren()Gets array of all children blocks.intgetChildrenCount()Gets count of children.java.util.Optional<XBBlock>getParentBlock()Gets parent block or empty if block has no parent.XBBlockTerminationModegetTerminationMode()Returns whether this block is using sequence of children ended with termination block.voidremoveAttribute(int attributeIndex)Removes attribute on given position.voidremoveChild(int childIndex)Removes child on given position.voidsetAttributeAt(XBAttribute attribute, int attributeIndex)Sets attribute of given index.voidsetAttributes(XBAttribute[] attributes)Sets array of attributes in order of appearance.voidsetAttributesCount(int count)Sets count of attributes.voidsetData(java.io.InputStream data)Sets block data.voidsetData(org.exbin.auxiliary.paged_data.BinaryData data)Sets block data.voidsetDataMode(XBBlockDataMode dataMode)Sets data block mode.voidsetChildAt(XBBlock block, int childIndex)Sets children of given index.voidsetChildren(XBBlock[] blocks)Sets array of all children.voidsetChildrenCount(int count)Gets count of children blocks.voidsetParent(XBBlock parent)Allows to set parent block, which is not cosidered as a part of the block value and allows to move this block in tree.voidsetTerminationMode(XBBlockTerminationMode terminationMode)Sets terminated mode.
-
-
-
Constructor Detail
-
XBDefaultEditableBlock
public XBDefaultEditableBlock()
Creates new instance of XBDefaultBlock as an empty data block.
-
XBDefaultEditableBlock
public XBDefaultEditableBlock(@Nullable XBBlock parent, XBBlockTerminationMode terminationMode, @Nullable org.exbin.auxiliary.paged_data.BinaryData data)Creates new instance of XBDefaultBlock as a data block with given values.- Parameters:
parent- parent nodeterminationMode- termination modedata- block data
-
XBDefaultEditableBlock
public XBDefaultEditableBlock(XBBlockTerminationMode terminationMode, @Nullable org.exbin.auxiliary.paged_data.BinaryData data)
Creates new instance of XBDefaultBlock as a data block with given values and no parent block.- Parameters:
terminationMode- termination modedata- block data
-
XBDefaultEditableBlock
public XBDefaultEditableBlock(@Nullable XBBlock parent, @Nullable XBBlockTerminationMode terminationMode, @Nullable XBAttribute[] attributes, @Nullable XBBlock[] children)Creates new instance of XBDefaultBlock as a node block with given values.- Parameters:
parent- parent nodeterminationMode- termination modeattributes- attributeschildren- children blocks
-
XBDefaultEditableBlock
public XBDefaultEditableBlock(@Nonnull XBBlockTerminationMode terminationMode, @Nullable XBAttribute[] attributes, @Nullable XBBlock[] children)Creates new instance of XBDefaultBlock as a node block with given values and no parent block.- Parameters:
terminationMode- termination modeattributes- attributeschildren- children blocks
-
-
Method Detail
-
getParentBlock
@Nonnull public java.util.Optional<XBBlock> getParentBlock()
Description copied from interface:XBBlockGets parent block or empty if block has no parent.- Specified by:
getParentBlockin interfaceXBBlock- Returns:
- Parent block.
-
setParent
public void setParent(@Nullable XBBlock parent)Allows to set parent block, which is not cosidered as a part of the block value and allows to move this block in tree.- Specified by:
setParentin interfaceXBEditableBlock- Parameters:
parent- parent block
-
getDataMode
@Nonnull public XBBlockDataMode getDataMode()
Description copied from interface:XBBlockReturns mode whether this block is data block.- Specified by:
getDataModein interfaceXBBlock- Returns:
- data mode
-
getTerminationMode
@Nonnull public XBBlockTerminationMode getTerminationMode()
Description copied from interface:XBBlockReturns whether this block is using sequence of children ended with termination block.- Specified by:
getTerminationModein interfaceXBBlock- Returns:
- termination mode
-
getAttributes
@Nullable public XBAttribute[] getAttributes()
Description copied from interface:XBBlockGets array of attributes in order of appearance.- Specified by:
getAttributesin interfaceXBBlock- Returns:
- array of attributes
-
getAttributeAt
@Nullable public XBAttribute getAttributeAt(int attributeIndex)
Description copied from interface:XBBlockGets attribute of given index / order.- Specified by:
getAttributeAtin interfaceXBBlock- Parameters:
attributeIndex- index/order of attribute- Returns:
- attribute value
-
getAttributesCount
public int getAttributesCount()
Description copied from interface:XBBlockGets count of attributes.- Specified by:
getAttributesCountin interfaceXBBlock- Returns:
- count of attributes
-
getChildren
@Nullable public XBBlock[] getChildren()
Description copied from interface:XBBlockGets array of all children blocks.- Specified by:
getChildrenin interfaceXBBlock- Returns:
- list of child blocks
-
getChildAt
@Nullable public XBBlock getChildAt(int childIndex)
Description copied from interface:XBBlockGets child block of given index.- Specified by:
getChildAtin interfaceXBBlock- Parameters:
childIndex- index of child block- Returns:
- child block
-
getChildrenCount
public int getChildrenCount()
Description copied from interface:XBBlockGets count of children.- Specified by:
getChildrenCountin interfaceXBBlock- Returns:
- count of children
-
getData
@Nonnull public java.io.InputStream getData()
Description copied from interface:XBBlockGets block data.
-
getBlockData
@Nonnull public org.exbin.auxiliary.paged_data.BinaryData getBlockData()
Description copied from interface:XBBlockGets block data.- Specified by:
getBlockDatain interfaceXBBlock- Returns:
- block data or throws invalid operation on non-data block
-
getDataSize
public long getDataSize()
-
getBlockIndex
public static int getBlockIndex(@Nullable XBBlock block)Gets block position in depth-first scan of the tree. Returns -1 for null block or if tree structure is corrupted.- Parameters:
block- target block- Returns:
- position index
-
getChildIndexOf
public static int getChildIndexOf(@Nullable XBBlock parent, @Nullable XBBlock block)Gets block position in parents direct child list.- Parameters:
parent- parent blockblock- target block- Returns:
- position index
-
setTerminationMode
public void setTerminationMode(XBBlockTerminationMode terminationMode)
Description copied from interface:XBEditableBlockSets terminated mode.- Specified by:
setTerminationModein interfaceXBEditableBlock- Parameters:
terminationMode- terminated mode flag
-
setDataMode
public void setDataMode(XBBlockDataMode dataMode)
Description copied from interface:XBEditableBlockSets data block mode.- Specified by:
setDataModein interfaceXBEditableBlock- Parameters:
dataMode- data block mode
-
setAttributes
public void setAttributes(@Nullable XBAttribute[] attributes)Description copied from interface:XBEditableBlockSets array of attributes in order of appearance.- Specified by:
setAttributesin interfaceXBEditableBlock- Parameters:
attributes- array of attributes
-
setAttributeAt
public void setAttributeAt(XBAttribute attribute, int attributeIndex)
Description copied from interface:XBEditableBlockSets attribute of given index. If index is greater than current count of attributes, new zero attributes will be filled.- Specified by:
setAttributeAtin interfaceXBEditableBlock- Parameters:
attribute- attribute valueattributeIndex- attribute index
-
setAttributesCount
public void setAttributesCount(int count)
Description copied from interface:XBEditableBlockSets count of attributes. List of attributes will be trimmed/extended with zero values.- Specified by:
setAttributesCountin interfaceXBEditableBlock- Parameters:
count- count of attributes
-
removeAttribute
public void removeAttribute(int attributeIndex)
Description copied from interface:XBEditableBlockRemoves attribute on given position.- Specified by:
removeAttributein interfaceXBEditableBlock- Parameters:
attributeIndex- attribute index
-
setChildren
public void setChildren(XBBlock[] blocks)
Description copied from interface:XBEditableBlockSets array of all children.- Specified by:
setChildrenin interfaceXBEditableBlock- Parameters:
blocks- array of children blocks
-
setChildAt
public void setChildAt(XBBlock block, int childIndex)
Description copied from interface:XBEditableBlockSets children of given index. If index is greater than current count of children, new empty blocks will be filled.- Specified by:
setChildAtin interfaceXBEditableBlock- Parameters:
block- child blockchildIndex- index of child block
-
setChildrenCount
public void setChildrenCount(int count)
Description copied from interface:XBEditableBlockGets count of children blocks. List of children will be trimmed/extended with empty blocks.- Specified by:
setChildrenCountin interfaceXBEditableBlock- Parameters:
count- count of children
-
createNewChild
public XBBlock createNewChild(int childIndex)
Description copied from interface:XBEditableBlockThis method instantiates new child node.- Specified by:
createNewChildin interfaceXBEditableBlock- Parameters:
childIndex- child index- Returns:
- new instance of block
-
removeChild
public void removeChild(int childIndex)
Description copied from interface:XBEditableBlockRemoves child on given position.- Specified by:
removeChildin interfaceXBEditableBlock- Parameters:
childIndex- child index
-
setData
public void setData(java.io.InputStream data) throws java.io.IOExceptionDescription copied from interface:XBEditableBlockSets block data.- Specified by:
setDatain interfaceXBEditableBlock- Parameters:
data- data stream- Throws:
java.io.IOException- exception on input/output error
-
setData
public void setData(org.exbin.auxiliary.paged_data.BinaryData data)
Description copied from interface:XBEditableBlockSets block data.- Specified by:
setDatain interfaceXBEditableBlock- Parameters:
data- data stream
-
clear
public void clear()
Description copied from interface:XBEditableBlockClears all data, attributes and child blocks.- Specified by:
clearin interfaceXBEditableBlock
-
-