Package loci.poi.ddf

Class EscherRecord

    • Constructor Detail

      • EscherRecord

        public EscherRecord()
        Create a new instance
    • Method Detail

      • fillFields

        public abstract int fillFields​(byte[] data,
                                       int offset,
                                       EscherRecordFactory recordFactory)
        The contract of this method is to deserialize an escher record including it's children.
        Parameters:
        data - The byte array containing the serialized escher records.
        offset - The offset into the byte array.
        recordFactory - A factory for creating new escher records.
        Returns:
        The number of bytes written.
      • readHeader

        protected int readHeader​(byte[] data,
                                 int offset)
        Reads the 8 byte header information and populates the options and recordId records.
        Parameters:
        data - the byte array to read from
        offset - the offset to start reading from
        Returns:
        the number of bytes remaining in this record. This may include the children if this is a container.
      • isContainerRecord

        public boolean isContainerRecord()
        Determine whether this is a container record by inspecting the option field.
        Returns:
        true is this is a container field.
      • getOptions

        public short getOptions()
        Returns:
        The options field for this record. All records have one.
      • setOptions

        public void setOptions​(short options)
        Set the options this this record. Container records should have the last nibble set to 0xF.
      • serialize

        public byte[] serialize()
        Serializes to a new byte array. This is done by delegating to serialize(int, byte[]);
        Returns:
        the serialized record.
        See Also:
        serialize(int, byte[])
      • serialize

        public int serialize​(int offset,
                             byte[] data)
        Serializes to an existing byte array without serialization listener. This is done by delegating to serialize(int, byte[], EscherSerializationListener).
        Parameters:
        offset - the offset within the data byte array.
        data - the data array to serialize to.
        Returns:
        The number of bytes written.
        See Also:
        serialize(int, byte[], loci.poi.ddf.EscherSerializationListener)
      • serialize

        public abstract int serialize​(int offset,
                                      byte[] data,
                                      EscherSerializationListener listener)
        Serializes the record to an existing byte array.
        Parameters:
        offset - the offset within the byte array
        data - the data array to serialize to
        listener - a listener for begin and end serialization events. This is useful because the serialization is hierarchical/recursive and sometimes you need to be able break into that.
        Returns:
        the number of bytes written.
      • getRecordSize

        public abstract int getRecordSize()
        Subclasses should effeciently return the number of bytes required to serialize the record.
        Returns:
        number of bytes
      • getRecordId

        public short getRecordId()
        Return the current record id.
        Returns:
        The 16 bit record id.
      • setRecordId

        public void setRecordId​(short recordId)
        Sets the record id for this record.
      • getChildRecords

        public List getChildRecords()
        Returns:
        Returns the children of this record. By default this will be an empty list. EscherCotainerRecord is the only record that may contain children.
        See Also:
        EscherContainerRecord
      • setChildRecords

        public void setChildRecords​(List childRecords)
        Sets the child records for this record. By default this will throw an exception as only EscherContainerRecords may have children.
        Parameters:
        childRecords - Not used in base implementation.
      • clone

        public Object clone()
        Escher records may need to be clonable in the future.
        Overrides:
        clone in class Object
      • getChild

        public EscherRecord getChild​(int index)
        Returns the indexed child record.
      • display

        public void display​(PrintWriter w,
                            int indent)
        The display methods allows escher variables to print the record names according to their hierarchy.
        Parameters:
        w - The print writer to output to.
        indent - The current indent level.
      • getRecordName

        public abstract String getRecordName()
        Subclasses should return the short name for this escher record.
      • getInstance

        public short getInstance()
        Returns the instance part of the option record.
        Returns:
        The instance part of the record