Class EscherContainerRecord

java.lang.Object
org.apache.poi.ddf.EscherRecord
org.apache.poi.ddf.EscherContainerRecord
All Implemented Interfaces:
Iterable<EscherRecord>, org.apache.poi.common.Duplicatable, GenericRecord

public final class EscherContainerRecord extends EscherRecord implements Iterable<EscherRecord>
Escher container records store other escher records as children. The container records themselves never store any information beyond the standard header used by all escher records. This one record is used to represent many different types of records.
  • Field Details

    • DGG_CONTAINER

      public static final short DGG_CONTAINER
    • BSTORE_CONTAINER

      public static final short BSTORE_CONTAINER
    • DG_CONTAINER

      public static final short DG_CONTAINER
    • SPGR_CONTAINER

      public static final short SPGR_CONTAINER
    • SP_CONTAINER

      public static final short SP_CONTAINER
    • SOLVER_CONTAINER

      public static final short SOLVER_CONTAINER
  • Constructor Details

    • EscherContainerRecord

      public EscherContainerRecord()
    • EscherContainerRecord

      public EscherContainerRecord(EscherContainerRecord other)
  • Method Details

    • fillFields

      public int fillFields(byte[] data, int pOffset, 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.
      pOffset - The offset into the byte array.
      recordFactory - A factory for creating new escher records.
      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.
    • 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
    • hasChildOfType

      public boolean hasChildOfType(short recordId)
      Do any of our (top level) children have the given recordId?
      Parameters:
      recordId - the recordId of the child
      Returns:
      true, if any child has the given recordId
    • getChild

      public EscherRecord getChild(int index)
      Description copied from class: EscherRecord
      Returns the indexed child record.
      Overrides:
      getChild in class EscherRecord
      Parameters:
      index - the index of the child within the child records
      Returns:
      the indexed child record
    • getChildRecords

      public List<EscherRecord> getChildRecords()
      Overrides:
      getChildRecords in class EscherRecord
      Returns:
      a copy of the list of all the child records of the container.
      See Also:
    • getChildCount

      public int getChildCount()
    • iterator

      public Iterator<EscherRecord> iterator()
      Specified by:
      iterator in interface Iterable<EscherRecord>
      Returns:
      an iterator over the child records
    • spliterator

      public Spliterator<EscherRecord> spliterator()
      Specified by:
      spliterator in interface Iterable<EscherRecord>
      Returns:
      a spliterator over the child records
      Since:
      POI 5.2.0
    • setChildRecords

      public void setChildRecords(List<EscherRecord> childRecords)
      replaces the internal child list with the contents of the supplied childRecords
      Overrides:
      setChildRecords in class EscherRecord
      Parameters:
      childRecords - Not used in base implementation.
    • removeChildRecord

      public boolean removeChildRecord(EscherRecord toBeRemoved)
      Removes the given escher record from the child list
      Parameters:
      toBeRemoved - the escher record to be removed
      Returns:
      true, if the record was found and removed
    • getChildContainers

      public List<EscherContainerRecord> getChildContainers()
      Returns all of our children which are also EscherContainers (may be 0, 1, or vary rarely 2 or 3)
      Returns:
      EscherContainer children
    • 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
    • display

      public void display(PrintWriter w, int indent)
      Description copied from class: EscherRecord
      The display methods allows escher variables to print the record names according to their hierarchy.
      Overrides:
      display in class EscherRecord
      Parameters:
      w - The print writer to output to.
      indent - The current indent level.
    • addChildRecord

      public void addChildRecord(EscherRecord record)
      Append a child record
      Parameters:
      record - the record to be added
    • addChildBefore

      public void addChildBefore(EscherRecord record, int insertBeforeRecordId)
      Add a child record before the record with given recordId
      Parameters:
      record - the record to be added
      insertBeforeRecordId - the recordId of the next sibling
    • getChildById

      public <T extends EscherRecord> T getChildById(short recordId)
    • getRecordsById

      public void getRecordsById(short recordId, List<EscherRecord> out)
      Recursively find records with the specified record ID
      Parameters:
      recordId - the recordId to be searched for
      out - - list to store found records
    • getGenericProperties

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

      public Enum getGenericRecordType()
      Specified by:
      getGenericRecordType in interface GenericRecord
    • copy

      public EscherContainerRecord copy()
      Specified by:
      copy in interface org.apache.poi.common.Duplicatable
      Specified by:
      copy in class EscherRecord