Class Record

java.lang.Object
org.apache.poi.hslf.record.Record
Direct Known Subclasses:
RecordAtom, RecordContainer

public abstract class Record extends Object
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
    Description
    protected static final POILogger
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    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[]
    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
    abstract long
    Returns the type (held as a little endian in bytes 3 and 4) that this class handles
    abstract boolean
    Is this record type an Atom record (only has data), or is it a non-Atom record (has other records)?
    static void
    When writing out, write out a signed int (32bit) in Little Endian format
    static void
    When writing out, write out a signed short (16bit) in Little Endian format
    abstract void
    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
  • Field Details

    • logger

      protected static final POILogger logger
  • Constructor Details

    • Record

      public Record()
  • Method Details

    • 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(OutputStream o) throws 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:
      IOException
    • writeLittleEndian

      public static void writeLittleEndian(int i, OutputStream o) throws IOException
      When writing out, write out a signed int (32bit) in Little Endian format
      Throws:
      IOException
    • writeLittleEndian

      public static void writeLittleEndian(short s, OutputStream o) throws IOException
      When writing out, write out a signed short (16bit) in Little Endian format
      Throws:
      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