Class XBTreeNode

  • All Implemented Interfaces:
    java.io.Serializable, javax.swing.tree.TreeNode, org.exbin.xbup.core.block.XBBlock, org.exbin.xbup.core.block.XBEditableBlock, org.exbin.xbup.core.ubnumber.UBStreamable

    public class XBTreeNode
    extends java.lang.Object
    implements org.exbin.xbup.core.block.XBEditableBlock, javax.swing.tree.TreeNode, org.exbin.xbup.core.ubnumber.UBStreamable
    Basic object model parser XBUP level 0 document block / tree node.
    See Also:
    Serialized Form
    • Constructor Detail

      • XBTreeNode

        public XBTreeNode()
      • XBTreeNode

        public XBTreeNode​(XBTreeNode parent)
        Creates a new instance of XBTreeNode with parent node assigned. This is NOT copy constructor.
        Parameters:
        parent - Set it as parent node
    • Method Detail

      • getSubNodesCount

        public int getSubNodesCount()
        Gets count of all subnodes.
        Returns:
        count of child nodes and all their child nodes
      • getBlockIndex

        public int getBlockIndex()
        Gets index in depth-first order.
        Returns:
        node index
      • getNodeIndexAfter

        public int getNodeIndexAfter()
      • findNodeByIndex

        public XBTreeNode findNodeByIndex​(long index)
        Finds node of given index (recursive, no cache).
        Parameters:
        index - depth-first order index
        Returns:
        node if found
      • fromStreamUB

        public int fromStreamUB​(java.io.InputStream stream)
                         throws java.io.IOException,
                                org.exbin.xbup.core.parser.XBProcessingException
        Specified by:
        fromStreamUB in interface org.exbin.xbup.core.ubnumber.UBStreamable
        Throws:
        java.io.IOException
        org.exbin.xbup.core.parser.XBProcessingException
      • fromStreamUB

        public int fromStreamUB​(java.io.InputStream stream,
                                boolean terminable)
                         throws java.io.IOException,
                                org.exbin.xbup.core.parser.XBProcessingException
        Loads this node from data stream.
        Parameters:
        stream - data stream
        terminable - specify if terminator can be read
        Returns:
        size of read bytes
        Throws:
        java.io.IOException - exception on input/output error
        org.exbin.xbup.core.parser.XBProcessingException
      • childrenFromStreamUB

        public int childrenFromStreamUB​(java.io.InputStream stream,
                                        java.lang.Integer maxSize)
                                 throws java.io.IOException,
                                        org.exbin.xbup.core.parser.XBProcessingException
        Loads children from data stream.
        Parameters:
        stream - input stream
        maxSize - Maximum size of bytes to consume. Otherwise Exception. Zero means terminationMode block.
        Returns:
        size of bytes read
        Throws:
        java.io.IOException - exception on input/output error
        org.exbin.xbup.core.parser.XBProcessingException
      • toStreamUB

        public int toStreamUB​(java.io.OutputStream stream)
                       throws java.io.IOException
        Specified by:
        toStreamUB in interface org.exbin.xbup.core.ubnumber.UBStreamable
        Throws:
        java.io.IOException
      • childrenToStreamUB

        public int childrenToStreamUB​(java.io.OutputStream stream)
                               throws java.io.IOException
        Throws:
        java.io.IOException
      • getSizeUB

        public int getSizeUB()
        Specified by:
        getSizeUB in interface org.exbin.xbup.core.ubnumber.UBStreamable
      • getAllowsChildren

        public boolean getAllowsChildren()
        Specified by:
        getAllowsChildren in interface javax.swing.tree.TreeNode
      • isLeaf

        public boolean isLeaf()
        Specified by:
        isLeaf in interface javax.swing.tree.TreeNode
      • children

        public java.util.Enumeration children()
        Specified by:
        children in interface javax.swing.tree.TreeNode
      • clear

        public void clear()
        Specified by:
        clear in interface org.exbin.xbup.core.block.XBEditableBlock
      • childrenSizeUB

        public int childrenSizeUB()
      • attributesSizeUB

        public int attributesSizeUB()
      • getData

        public java.io.InputStream getData()
        Specified by:
        getData in interface org.exbin.xbup.core.block.XBBlock
      • getBlockData

        public org.exbin.auxiliary.paged_data.BinaryData getBlockData()
        Specified by:
        getBlockData in interface org.exbin.xbup.core.block.XBBlock
      • getDataSize

        public long getDataSize()
      • setData

        public void setData​(java.io.InputStream source)
                     throws java.io.IOException
        Specified by:
        setData in interface org.exbin.xbup.core.block.XBEditableBlock
        Throws:
        java.io.IOException
      • setData

        public void setData​(org.exbin.auxiliary.paged_data.BinaryData newData)
        Specified by:
        setData in interface org.exbin.xbup.core.block.XBEditableBlock
      • clearData

        public void clearData()
      • cloneNode

        public XBTreeNode cloneNode​(boolean recursive)
      • createNewChild

        public XBTreeNode createNewChild​(int childIndex)
        This method instantiates new child node.
        Specified by:
        createNewChild in interface org.exbin.xbup.core.block.XBEditableBlock
        Parameters:
        childIndex - child index
        Returns:
        new
      • getBlockSize

        public long getBlockSize()
      • getParent

        @Nullable
        public XBTreeNode getParent()
        Specified by:
        getParent in interface javax.swing.tree.TreeNode
      • getParentBlock

        @Nonnull
        public java.util.Optional<org.exbin.xbup.core.block.XBBlock> getParentBlock()
        Specified by:
        getParentBlock in interface org.exbin.xbup.core.block.XBBlock
      • setParent

        public void setParent​(org.exbin.xbup.core.block.XBBlock parent)
        Specified by:
        setParent in interface org.exbin.xbup.core.block.XBEditableBlock
      • getTerminationMode

        public org.exbin.xbup.core.block.XBBlockTerminationMode getTerminationMode()
        Specified by:
        getTerminationMode in interface org.exbin.xbup.core.block.XBBlock
      • setTerminationMode

        public void setTerminationMode​(org.exbin.xbup.core.block.XBBlockTerminationMode terminationMode)
        Specified by:
        setTerminationMode in interface org.exbin.xbup.core.block.XBEditableBlock
      • getDataMode

        public org.exbin.xbup.core.block.XBBlockDataMode getDataMode()
        Specified by:
        getDataMode in interface org.exbin.xbup.core.block.XBBlock
      • setDataMode

        public void setDataMode​(org.exbin.xbup.core.block.XBBlockDataMode dataMode)
        Specified by:
        setDataMode in interface org.exbin.xbup.core.block.XBEditableBlock
      • getAttributeAt

        public org.exbin.xbup.core.parser.token.XBAttribute getAttributeAt​(int index)
        Specified by:
        getAttributeAt in interface org.exbin.xbup.core.block.XBBlock
      • setAttributeAt

        public void setAttributeAt​(org.exbin.xbup.core.parser.token.XBAttribute attribute,
                                   int attributeIndex)
        Specified by:
        setAttributeAt in interface org.exbin.xbup.core.block.XBEditableBlock
      • getAttributesCount

        public int getAttributesCount()
        Specified by:
        getAttributesCount in interface org.exbin.xbup.core.block.XBBlock
      • setAttributesCount

        public void setAttributesCount​(int count)
        Specified by:
        setAttributesCount in interface org.exbin.xbup.core.block.XBEditableBlock
      • addAttribute

        public void addAttribute​(org.exbin.xbup.core.parser.token.XBAttribute attribute)
      • removeAttribute

        public void removeAttribute​(int index)
        Specified by:
        removeAttribute in interface org.exbin.xbup.core.block.XBEditableBlock
      • getAttributes

        public org.exbin.xbup.core.parser.token.XBAttribute[] getAttributes()
        Specified by:
        getAttributes in interface org.exbin.xbup.core.block.XBBlock
      • setAttributes

        public void setAttributes​(org.exbin.xbup.core.parser.token.XBAttribute[] attributes)
        Specified by:
        setAttributes in interface org.exbin.xbup.core.block.XBEditableBlock
      • getChildAt

        public XBTreeNode getChildAt​(int childIndex)
        Specified by:
        getChildAt in interface javax.swing.tree.TreeNode
        Specified by:
        getChildAt in interface org.exbin.xbup.core.block.XBBlock
      • setChildAt

        public void setChildAt​(org.exbin.xbup.core.block.XBBlock block,
                               int childIndex)
        Specified by:
        setChildAt in interface org.exbin.xbup.core.block.XBEditableBlock
      • getIndex

        public int getIndex​(javax.swing.tree.TreeNode node)
        Returns index of child.
        Specified by:
        getIndex in interface javax.swing.tree.TreeNode
        Parameters:
        node - node to search match for
        Returns:
        index of node if node found
      • addChild

        public void addChild​(XBTreeNode child)
      • removeChild

        public void removeChild​(int index)
        Specified by:
        removeChild in interface org.exbin.xbup.core.block.XBEditableBlock
      • getChildrenCount

        public int getChildrenCount()
        Specified by:
        getChildrenCount in interface org.exbin.xbup.core.block.XBBlock
      • getChildCount

        public int getChildCount()
        Specified by:
        getChildCount in interface javax.swing.tree.TreeNode
      • setChildrenCount

        public void setChildrenCount​(int count)
        Specified by:
        setChildrenCount in interface org.exbin.xbup.core.block.XBEditableBlock
      • getChildren

        public org.exbin.xbup.core.block.XBBlock[] getChildren()
        Specified by:
        getChildren in interface org.exbin.xbup.core.block.XBBlock
      • setChildren

        public void setChildren​(org.exbin.xbup.core.block.XBBlock[] children)
        Specified by:
        setChildren in interface org.exbin.xbup.core.block.XBEditableBlock
      • createTreeCopy

        public static XBTreeNode createTreeCopy​(org.exbin.xbup.core.block.XBBlock block)
        Creates XBTreeNode copy of given block and all of its children.
        Parameters:
        block - source block
        Returns:
        node
      • createTreeCopy

        public static XBTreeNode createTreeCopy​(org.exbin.xbup.core.block.XBBlock block,
                                                XBTreeNode parent)
        Creates XBTreeNode copy of given block and all of its children.
        Parameters:
        block - source block
        parent - parent node
        Returns:
        node