Class UnknownEscherRecord

java.lang.Object
org.apache.poi.ddf.EscherRecord
org.apache.poi.ddf.UnknownEscherRecord
All Implemented Interfaces:
Duplicatable, GenericRecord

public final class UnknownEscherRecord extends EscherRecord
This record is used whenever an escher record is encountered that we do not explicitly support.
  • Constructor Details

    • UnknownEscherRecord

      public UnknownEscherRecord()
    • UnknownEscherRecord

      public UnknownEscherRecord(UnknownEscherRecord other)
  • Method Details

    • setMaxRecordLength

      public static void setMaxRecordLength(int length)
      Parameters:
      length - the max record length allowed for UnknownEscherRecord
    • getMaxRecordLength

      public static int getMaxRecordLength()
      Returns:
      the max record length allowed for UnknownEscherRecord
    • fillFields

      public int fillFields(byte[] data, int offset, EscherRecordFactory recordFactory)
      Description copied from class: EscherRecord
      The contract of this method is to deserialize an escher record including its children.
      Specified by:
      fillFields in class EscherRecord
      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.
    • fillFields

      protected int fillFields(byte[] data, int offset, EscherRecordFactory recordFactory, int nesting)
      Description copied from class: EscherRecord
      Internal method to prevent too deep nesting/using too much memory. This is done by counting the level of "nesting" via the parameter. The default method just forwards to fillFields() so it does not properly handle nesting. Subclasses which do recursive calls need to pass around the nesting-level properly. Usually both fillFields() methods should be overwritten by subclasses, the one without the "nesting"-parameter should routes to this one in classes which overwrite this method and this method should be overwritten with the actual functionality to fill fields.
      Overrides:
      fillFields in class EscherRecord
      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.
      nesting - The current nesting factor, usually increased by one on each recursive call
      Returns:
      The number of bytes written.
    • serialize

      public int serialize(int offset, byte[] data, EscherSerializationListener listener)
      Description copied from class: EscherRecord
      Serializes the record to an existing byte array.
      Specified by:
      serialize in class EscherRecord
      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.
    • getData

      public byte[] getData()
      Returns:
      the data which makes up this record
    • getRecordSize

      public int getRecordSize()
      Description copied from class: EscherRecord
      Subclasses should effeciently return the number of bytes required to serialize the record.
      Specified by:
      getRecordSize in class EscherRecord
      Returns:
      number of bytes
    • getChildRecords

      public List<EscherRecord> getChildRecords()
      Overrides:
      getChildRecords in class EscherRecord
      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:
    • setChildRecords

      public void setChildRecords(List<EscherRecord> childRecords)
      Description copied from class: EscherRecord
      Sets the child records for this record. By default this will throw an exception as only EscherContainerRecords may have children.
      Overrides:
      setChildRecords in class EscherRecord
      Parameters:
      childRecords - Not used in base implementation.
    • getRecordName

      public String getRecordName()
      Description copied from class: EscherRecord
      Subclasses should return the short name for this escher record.
      Specified by:
      getRecordName in class EscherRecord
      Returns:
      the short name for this escher record
    • addChildRecord

      public void addChildRecord(EscherRecord childRecord)
    • getGenericProperties

      public Map<String,Supplier<?>> getGenericProperties()
      Specified by:
      getGenericProperties in interface GenericRecord
      Overrides:
      getGenericProperties in class EscherRecord
    • getGenericRecordType

      public Enum getGenericRecordType()
    • copy

      public UnknownEscherRecord copy()
      Specified by:
      copy in interface Duplicatable
      Specified by:
      copy in class EscherRecord
      Returns:
      a deep copy of the implementing class / instance