org.apache.poi.hslf.record

## Class Record

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

- All Implemented Interfaces:
    GenericRecord
  Direct Known Subclasses:
    RecordAtom, RecordContainer

      public abstract class Record
      extends java.lang.Object
      implements GenericRecord

  This abstract class represents a record in the PowerPoint document. Record classes should extend with RecordContainer or RecordAtom, which extend this in turn.
  Author:
    Nick Burch

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static POILogger` | `logger`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Record()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static Record` | `buildRecordAtOffset(byte[] b, int offset)` Build and return the Record at the given offset.
    `static Record` | `createRecordForType(long type, byte[] b, int start, int len)` For a given type (little endian bytes 3 and 4 in record header), byte array, start position and length: will return a Record object that will handle that record Remember that while PPT stores the record lengths as 8 bytes short (not including the size of the header), this code assumes you're passing in corrected lengths
    `static Record[]` | `findChildRecords(byte[] b, int start, int len)` Default method for finding child records of a container record
    `abstract Record[]` | `getChildRecords()` Fetch all the child records of this record If this record is an atom, will return null If this record is a non-atom, but has no children, will return an empty array
    `java.util.List<Record>` | `getGenericChildren()`
    `java.lang.Enum` | `getGenericRecordType()`
    `abstract long` | `getRecordType()` Returns the type (held as a little endian in bytes 3 and 4) that this class handles
    `abstract boolean` | `isAnAtom()` Is this record type an Atom record (only has data), or is it a non-Atom record (has other records)?
    `static void` | `writeLittleEndian(int i, java.io.OutputStream o)` When writing out, write out a signed int (32bit) in Little Endian format
    `static void` | `writeLittleEndian(short s, java.io.OutputStream o)` When writing out, write out a signed short (16bit) in Little Endian format
    `abstract void` | `writeOut(java.io.OutputStream o)` Have the contents printer out into an OutputStream, used when writing a file back out to disk (Normally, atom classes will keep their bytes around, but non atom classes will just request the bytes from their children, then chuck on their header and return)

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

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

    - ### Methods inherited from interface org.apache.poi.common.usermodel.GenericRecord

      `getGenericProperties`

- - ### Field Detail

    - #### logger

          protected static final POILogger logger

  - ### Constructor Detail

    - #### Record

          public Record()

  - ### Method Detail

    - #### isAnAtom

          public abstract boolean isAnAtom()

      Is this record type an Atom record (only has data), or is it a non-Atom record (has other records)?

    - #### getRecordType

          public abstract long getRecordType()

      Returns the type (held as a little endian in bytes 3 and 4) that this class handles

    - #### getChildRecords

          public abstract Record[] getChildRecords()

      Fetch all the child records of this record If this record is an atom, will return null If this record is a non-atom, but has no children, will return an empty array

    - #### writeOut

          public abstract void writeOut(java.io.OutputStream o)
                                 throws java.io.IOException

      Have the contents printer out into an OutputStream, used when writing a file back out to disk (Normally, atom classes will keep their bytes around, but non atom classes will just request the bytes from their children, then chuck on their header and return)
      Throws:
        `java.io.IOException`

    - #### getGenericRecordType

          public java.lang.Enum getGenericRecordType()

      Specified by:
        `getGenericRecordType` in interface `GenericRecord`

    - #### getGenericChildren

          public java.util.List<Record> getGenericChildren()

      Specified by:
        `getGenericChildren` in interface `GenericRecord`

    - #### writeLittleEndian

          public static void writeLittleEndian(int i,
                                               java.io.OutputStream o)
                                        throws java.io.IOException

      When writing out, write out a signed int (32bit) in Little Endian format
      Throws:
        `java.io.IOException`

    - #### writeLittleEndian

          public static void writeLittleEndian(short s,
                                               java.io.OutputStream o)
                                        throws java.io.IOException

      When writing out, write out a signed short (16bit) in Little Endian format
      Throws:
        `java.io.IOException`

    - #### buildRecordAtOffset

          public static Record buildRecordAtOffset(byte[] b,
                                                   int offset)

      Build and return the Record at the given offset. Note - does less error checking and handling than findChildRecords
      Parameters:
        `b` - The byte array to build from
        `offset` - The offset to build at

    - #### findChildRecords

          public static Record[] findChildRecords(byte[] b,
                                                  int start,
                                                  int len)

      Default method for finding child records of a container record

    - #### createRecordForType

          public static Record createRecordForType(long type,
                                                   byte[] b,
                                                   int start,
                                                   int len)

      For a given type (little endian bytes 3 and 4 in record header), byte array, start position and length: will return a Record object that will handle that record Remember that while PPT stores the record lengths as 8 bytes short (not including the size of the header), this code assumes you're passing in corrected lengths

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