org.apache.poi.hslf.record

## Class RecordContainer

- java.lang.Object
- - org.apache.poi.hslf.record.Record
  - - org.apache.poi.hslf.record.RecordContainer

- All Implemented Interfaces:
    GenericRecord
  Direct Known Subclasses:
    AnimationInfo, Comment2000, DocInfoListContainer, DummyRecordWithChildren, EscherTextboxWrapper, ExEmbed, ExHyperlink, ExMCIMovie, ExObjList, ExVideoContainer, FontCollection, HeadersFootersContainer, InteractiveInfo, PositionDependentRecordContainer, SlideListWithText, Sound, SoundCollection, VBAInfoContainer

      public abstract class RecordContainer
      extends Record

  Abstract class which all container records will extend. Providers helpful methods for writing child records out to disk

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Record[]` | `_children`

    - ### Fields inherited from class org.apache.poi.hslf.record.Record

      `logger`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RecordContainer()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `addChildAfter(Record newChild, Record after)` Adds the given Child Record after the supplied record
    `int` | `addChildBefore(Record newChild, Record before)` Adds the given Child Record before the supplied record
    `int` | `appendChildRecord(Record newChild)` Add a new child record onto a record's list of children.
    `Record` | `findFirstOfType(long type)` Finds the first child record of the given type, or null if none of the child records are of the given type.
    `Record[]` | `getChildRecords()` Return any children
    `java.util.Map<java.lang.String,java.util.function.Supplier<?>>` | `getGenericProperties()`
    `static void` | `handleParentAwareRecords(RecordContainer br)` Find the records that are parent-aware, and tell them who their parent is
    `boolean` | `isAnAtom()` We're not an atom
    `void` | `moveChildBefore(Record child, Record before)` Deprecated. method is not used within POI and will be removed
    `void` | `moveChildrenAfter(Record firstChild, int number, Record after)` Deprecated. method is not used within POI and will be removed
    `void` | `moveChildrenBefore(Record firstChild, int number, Record before)` Deprecated. method is not used within POI and will be removed
    `Record` | `removeChild(Record ch)` Remove a child record from this record container
    `void` | `setChildRecord(Record[] records)` Set child records.
    `void` | `writeOut(byte headerA, byte headerB, long type, Record[] children, java.io.OutputStream out)` Write out our header, and our children.

    - ### Methods inherited from class org.apache.poi.hslf.record.Record

      `buildRecordAtOffset, createRecordForType, findChildRecords, getGenericChildren, getGenericRecordType, getRecordType, writeLittleEndian, writeLittleEndian, writeOut`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### _children

          protected Record[] _children

  - ### Constructor Detail

    - #### RecordContainer

          public RecordContainer()

  - ### Method Detail

    - #### getChildRecords

          public Record[] getChildRecords()

      Return any children
      Specified by:
        `getChildRecords` in class `Record`

    - #### isAnAtom

          public boolean isAnAtom()

      We're not an atom
      Specified by:
        `isAnAtom` in class `Record`

    - #### findFirstOfType

          public Record findFirstOfType(long type)

      Finds the first child record of the given type, or null if none of the child records are of the given type. Does not descend.

    - #### removeChild

          public Record removeChild(Record ch)

      Remove a child record from this record container
      Parameters:
        `ch` - the child to remove
      Returns:
        the removed record

    - #### appendChildRecord

          public int appendChildRecord(Record newChild)

      Add a new child record onto a record's list of children.
      Parameters:
        `newChild` - the child record to be added
      Returns:
        the position of the added child within the list, i.e. the last index

    - #### addChildAfter

          public int addChildAfter(Record newChild,
                                   Record after)

      Adds the given Child Record after the supplied record
      Parameters:
        `newChild` - The record to add as new child.
        `after` - The record after which the given record should be added.
      Returns:
        the position of the added child within the list

    - #### addChildBefore

          public int addChildBefore(Record newChild,
                                    Record before)

      Adds the given Child Record before the supplied record
      Parameters:
        `newChild` - The record to add as new child.
        `before` - The record before which the given record should be added.
      Returns:
        the position of the added child within the list

    - #### moveChildBefore

          @Removal(version="3.19")
           @Deprecated
          public void moveChildBefore(Record child,
                                                                            Record before)

      Deprecated. method is not used within POI and will be removed
      Moves the given Child Record to before the supplied record

    - #### moveChildrenBefore

          @Removal(version="3.19")
           @Deprecated
          public void moveChildrenBefore(Record firstChild,
                                                                               int number,
                                                                               Record before)

      Deprecated. method is not used within POI and will be removed
      Moves the given Child Records to before the supplied record

    - #### moveChildrenAfter

          @Removal(version="3.19")
           @Deprecated
          public void moveChildrenAfter(Record firstChild,
                                                                              int number,
                                                                              Record after)

      Deprecated. method is not used within POI and will be removed
      Moves the given Child Records to after the supplied record
      Parameters:
        `firstChild` - the first child to be moved
        `number` - the number of records to move
        `after` - the record after that the children are moved

    - #### setChildRecord

          public void setChildRecord(Record[] records)

      Set child records.
      Parameters:
        `records` - the new child records

    - #### writeOut

          public void writeOut(byte headerA,
                               byte headerB,
                               long type,
                               Record[] children,
                               java.io.OutputStream out)
                        throws java.io.IOException

      Write out our header, and our children.
      Parameters:
        `headerA` - the first byte of the header
        `headerB` - the second byte of the header
        `type` - the record type
        `children` - our child records
        `out` - the stream to write to
      Throws:
        `java.io.IOException`

    - #### handleParentAwareRecords

          public static void handleParentAwareRecords(RecordContainer br)

      Find the records that are parent-aware, and tell them who their parent is

    - #### getGenericProperties

          public java.util.Map<java.lang.String,java.util.function.Supplier<?>> getGenericProperties()

Copyright 2020 The Apache Software Foundation or its licensors, as applicable.