Class SSTRecord


  • public final class SSTRecord
    extends ContinuableRecord
    Title: Static String Table Record (0x00FC)

    Description: This holds all the strings for LabelSSTRecords.

    REFERENCE: PG 389 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)

    See Also:
    LabelSSTRecord, ContinueRecord
    • Constructor Detail

      • SSTRecord

        public SSTRecord()
      • SSTRecord

        public SSTRecord​(RecordInputStream in)
        Fill the fields from the data

        The data consists of sets of string data. This string data is arranged as follows:

         short  string_length;   // length of string data
         byte   string_flag;     // flag specifying special string
                                 // handling
         short  run_count;       // optional count of formatting runs
         int    extend_length;   // optional extension length
         char[] string_data;     // string data, can be byte[] or
                                 // short[] (length of array is
                                 // string_length)
         int[]  formatting_runs; // optional formatting runs (length of
                                 // array is run_count)
         byte[] extension;       // optional extension (length of array
                                 // is extend_length)
         

        The string_flag is bit mapped as follows:

        Bit number Meaning if 0 Meaning if 1
        0 string_data is byte[] string_data is short[]
        1 Should always be 0 string_flag is defective
        2 extension is not included extension is included
        3 formatting run data is not included formatting run data is included
        4 Should always be 0 string_flag is defective
        5 Should always be 0 string_flag is defective
        6 Should always be 0 string_flag is defective
        7 Should always be 0 string_flag is defective

        We can handle eating the overhead associated with bits 2 or 3 (or both) being set, but we have no idea what to do with the associated data. The UnicodeString class can handle the byte[] vs short[] nature of the actual string data

        Parameters:
        in - the RecordInputStream to read the record from
    • Method Detail

      • addString

        public int addString​(UnicodeString string)
        Add a string.
        Parameters:
        string - string to be added
        Returns:
        the index of that string in the table
      • getNumStrings

        public int getNumStrings()
        Returns:
        number of strings
      • getNumUniqueStrings

        public int getNumUniqueStrings()
        Returns:
        number of unique strings
      • getString

        public UnicodeString getString​(int id)
        Get a particular string by its index
        Parameters:
        id - index into the array of strings
        Returns:
        the desired string
      • toString

        public java.lang.String toString()
        Return a debugging string representation
        Overrides:
        toString in class Record
        Returns:
        string representation
      • getSid

        public short getSid()
        Description copied from class: Record
        return the non static version of the id for this record.
        Specified by:
        getSid in class Record
        Returns:
        he id for this record
      • createExtSSTRecord

        public ExtSSTRecord createExtSSTRecord​(int sstOffset)
        Creates an extended string record based on the current contents of the current SST record. The offset within the stream to the SST record is required because the extended string record points directly to the strings in the SST record.

        NOTE: THIS FUNCTION MUST ONLY BE CALLED AFTER THE SST RECORD HAS BEEN SERIALIZED.

        Parameters:
        sstOffset - The offset in the stream to the start of the SST record.
        Returns:
        The new SST record.
      • calcExtSSTRecordSize

        public int calcExtSSTRecordSize()
        Calculates the size in bytes of the EXTSST record as it would be if the record was serialized.
        Returns:
        The size of the ExtSST record in bytes.