Class Record

  • Direct Known Subclasses:
    RecordAtom, RecordContainer

    public abstract class Record
    extends java.lang.Object
    This abstract class represents a record in the PowerPoint document. Record classes should extend with RecordContainer or RecordAtom, which extend this in turn.
    • Constructor Summary

      Constructors 
      Constructor Description
      Record()  
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      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[] 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
      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

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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
      • 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