FileDocCategorySizeDatePackage
SavedByTable.javaAPI DocApache Poi 3.0.13856Sun Mar 11 12:59:30 GMT 2007org.apache.poi.hwpf.model

SavedByTable

public class SavedByTable extends Object
String table containing the history of the last few revisions ("saves") of the document. Read-only for the time being.
author
Daniel Noll

Fields Summary
private short
unknownValue
A value that I don't know what it does, but is maintained for accuracy.
private SavedByEntry[]
entries
Array of entries.
Constructors Summary
public SavedByTable(byte[] tableStream, int offset, int size)
Constructor to read the table from the table stream.

param
tableStream the table stream.
param
offset the offset into the byte array.
param
size the size of the table in the byte array.


                                      
        
  
    // Read the value that I don't know what it does. :-)
    unknownValue = LittleEndian.getShort(tableStream, offset);
    offset += 2;

    // The stored int is the number of strings, and there are two strings per entry.
    int numEntries = LittleEndian.getInt(tableStream, offset) / 2;
    offset += 4;

    entries = new SavedByEntry[numEntries];
    for (int i = 0; i < numEntries; i++)
    {
      int len = LittleEndian.getShort(tableStream, offset);
      offset += 2;
      String userName = StringUtil.getFromUnicodeLE(tableStream, offset, len);
      offset += len * 2;
      len = LittleEndian.getShort(tableStream, offset);
      offset += 2;
      String saveLocation = StringUtil.getFromUnicodeLE(tableStream, offset, len);
      offset += len * 2;

      entries[i] = new SavedByEntry(userName, saveLocation);
    }
  
Methods Summary
public java.util.ListgetEntries()
Gets the entries. The returned list cannot be modified.

return
the list of entries.

    return Collections.unmodifiableList(Arrays.asList(entries));
  
private voidwriteStringValue(org.apache.poi.hwpf.model.io.HWPFOutputStream tableStream, java.lang.String value)

    byte[] buf = new byte[value.length() * 2 + 2];
    LittleEndian.putShort(buf, 0, (short) value.length());
    StringUtil.putUnicodeLE(value, buf, 2);
    tableStream.write(buf);
  
public voidwriteTo(org.apache.poi.hwpf.model.io.HWPFOutputStream tableStream)
Writes this table to the table stream.

param
tableStream the table stream to write to.
throws
IOException if an error occurs while writing.

    byte[] header = new byte[6];
    LittleEndian.putShort(header, 0, unknownValue);
    LittleEndian.putInt(header, 2, entries.length * 2);
    tableStream.write(header);

    for (int i = 0; i < entries.length; i++)
    {
      writeStringValue(tableStream, entries[i].getUserName());
      writeStringValue(tableStream, entries[i].getSaveLocation());
    }