Package com.pff

Class PSTObject

java.lang.Object
com.pff.PSTObject
Direct Known Subclasses:
PSTAttachment, PSTFolder, PSTMessage, PSTMessageStore

public class PSTObject extends Object
PST Object is the root class of all PST Items. It also provides a number of static utility functions. The most important of which is the detectAndLoadPSTObject call which allows extraction of a PST Item from the file.
  • Field Details

    • NID_TYPE_HID

      public static final int NID_TYPE_HID
      See Also:
    • NID_TYPE_INTERNAL

      public static final int NID_TYPE_INTERNAL
      See Also:
    • NID_TYPE_NORMAL_FOLDER

      public static final int NID_TYPE_NORMAL_FOLDER
      See Also:
    • NID_TYPE_SEARCH_FOLDER

      public static final int NID_TYPE_SEARCH_FOLDER
      See Also:
    • NID_TYPE_NORMAL_MESSAGE

      public static final int NID_TYPE_NORMAL_MESSAGE
      See Also:
    • NID_TYPE_ATTACHMENT

      public static final int NID_TYPE_ATTACHMENT
      See Also:
    • NID_TYPE_SEARCH_UPDATE_QUEUE

      public static final int NID_TYPE_SEARCH_UPDATE_QUEUE
      See Also:
    • NID_TYPE_SEARCH_CRITERIA_OBJECT

      public static final int NID_TYPE_SEARCH_CRITERIA_OBJECT
      See Also:
    • NID_TYPE_ASSOC_MESSAGE

      public static final int NID_TYPE_ASSOC_MESSAGE
      See Also:
    • NID_TYPE_CONTENTS_TABLE_INDEX

      public static final int NID_TYPE_CONTENTS_TABLE_INDEX
      See Also:
    • NID_TYPE_RECEIVE_FOLDER_TABLE

      public static final int NID_TYPE_RECEIVE_FOLDER_TABLE
      See Also:
    • NID_TYPE_OUTGOING_QUEUE_TABLE

      public static final int NID_TYPE_OUTGOING_QUEUE_TABLE
      See Also:
    • NID_TYPE_HIERARCHY_TABLE

      public static final int NID_TYPE_HIERARCHY_TABLE
      See Also:
    • NID_TYPE_CONTENTS_TABLE

      public static final int NID_TYPE_CONTENTS_TABLE
      See Also:
    • NID_TYPE_ASSOC_CONTENTS_TABLE

      public static final int NID_TYPE_ASSOC_CONTENTS_TABLE
      See Also:
    • NID_TYPE_SEARCH_CONTENTS_TABLE

      public static final int NID_TYPE_SEARCH_CONTENTS_TABLE
      See Also:
    • NID_TYPE_ATTACHMENT_TABLE

      public static final int NID_TYPE_ATTACHMENT_TABLE
      See Also:
    • NID_TYPE_RECIPIENT_TABLE

      public static final int NID_TYPE_RECIPIENT_TABLE
      See Also:
    • NID_TYPE_SEARCH_TABLE_INDEX

      public static final int NID_TYPE_SEARCH_TABLE_INDEX
      See Also:
    • NID_TYPE_LTP

      public static final int NID_TYPE_LTP
      See Also:
    • pstFile

      protected PSTFile pstFile
    • data

      protected byte[] data
    • descriptorIndexNode

      protected DescriptorIndexNode descriptorIndexNode
    • items

      protected HashMap<Integer,PSTTableBCItem> items
    • localDescriptorItems

      protected HashMap<Integer,PSTDescriptorItem> localDescriptorItems
    • children

    • table

      protected PSTTableBC table
    • compEnc

      static int[] compEnc
      Static stuff below ------------------
    • EPOCH_DIFF

      private static final long EPOCH_DIFF

      The difference between the Windows epoch (1601-01-01 00:00:00) and the Unix epoch (1970-01-01 00:00:00) in milliseconds: 11644473600000L. (Use your favorite spreadsheet program to verify the correctness of this value. By the way, did you notice that you can tell from the epochs which operating system is the modern one? :-))

      See Also:
  • Constructor Details

  • Method Details

    • getItemsString

      public String getItemsString()
    • getDescriptorNode

      public DescriptorIndexNode getDescriptorNode()
      get the descriptor node for this item this identifies the location of the node in the BTree and associated info
      Returns:
      item's descriptor node
    • getDescriptorNodeId

      public long getDescriptorNodeId()
      get the descriptor identifier for this item can be used for loading objects through detectAndLoadPSTObject(PSTFile theFile, long descriptorIndex)
      Returns:
      item's descriptor node identifier
    • getNodeType

      public int getNodeType()
    • getNodeType

      public static int getNodeType(int descriptorIdentifier)
    • getIntItem

      protected int getIntItem(int identifier)
    • getIntItem

      protected int getIntItem(int identifier, int defaultValue)
    • getBooleanItem

      protected boolean getBooleanItem(int identifier)
    • getBooleanItem

      protected boolean getBooleanItem(int identifier, boolean defaultValue)
    • getDoubleItem

      protected double getDoubleItem(int identifier)
    • getDoubleItem

      protected double getDoubleItem(int identifier, double defaultValue)
    • getLongItem

      protected long getLongItem(int identifier)
    • getLongItem

      protected long getLongItem(int identifier, long defaultValue)
    • getStringItem

      protected String getStringItem(int identifier)
    • getStringItem

      protected String getStringItem(int identifier, int stringType)
    • getStringItem

      protected String getStringItem(int identifier, int stringType, String codepage)
    • createJavaString

      static String createJavaString(byte[] data, int stringType, String codepage)
    • getStringCodepage

      private String getStringCodepage()
    • getDateItem

      public Date getDateItem(int identifier)
    • getBinaryItem

      protected byte[] getBinaryItem(int identifier)
    • getTimeZoneItem

      protected PSTTimeZone getTimeZoneItem(int identifier)
    • getMessageClass

      public String getMessageClass()
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getDisplayName

      public String getDisplayName()
      get the display name
    • getAddrType

      public String getAddrType()
      Address type Known values are SMTP, EX (Exchange) and UNKNOWN
    • getEmailAddress

      public String getEmailAddress()
      E-mail address
    • getComment

      public String getComment()
      Comment
    • getCreationTime

      public Date getCreationTime()
      Creation time
    • getLastModificationTime

      public Date getLastModificationTime()
      Modification time
    • printFormattedNumber

      public static void printFormattedNumber(String pref, long number)
      Output a number in a variety of formats for easier consumption
      Parameters:
      data -
    • printFormattedNumber

      public static void printFormattedNumber(long number)
    • printHexFormatted

      public static void printHexFormatted(byte[] data, boolean pretty)
      Output a dump of data in hex format in the order it was read in
      Parameters:
      data -
      pretty -
    • printHexFormatted

      protected static void printHexFormatted(byte[] data, boolean pretty, int[] indexes)
    • decode

      protected static byte[] decode(byte[] data)
      decode a lump of data that has been encrypted with the compressible encryption
      Parameters:
      data -
      Returns:
      decoded data
    • encode

      protected static byte[] encode(byte[] data)
    • convertLittleEndianBytesToLong

      public static long convertLittleEndianBytesToLong(byte[] data)
      Utility function for converting little endian bytes into a usable java long
      Parameters:
      data -
      Returns:
      long version of the data
    • convertLittleEndianBytesToLong

      public static long convertLittleEndianBytesToLong(byte[] data, int start, int end)
      Utility function for converting little endian bytes into a usable java long
      Parameters:
      data -
      start -
      end -
      Returns:
      long version of the data
    • convertBigEndianBytesToLong

      public static long convertBigEndianBytesToLong(byte[] data, int start, int end)
      Utility function for converting big endian bytes into a usable java long
      Parameters:
      data -
      start -
      end -
      Returns:
      long version of the data
    • detectAndLoadPSTObject

      public static PSTObject detectAndLoadPSTObject(PSTFile theFile, long descriptorIndex) throws IOException, PSTException
      Detect and load a PST Object from a file with the specified descriptor index
      Parameters:
      theFile -
      descriptorIndex -
      Returns:
      PSTObject with that index
      Throws:
      IOException
      PSTException
    • detectAndLoadPSTObject

      static PSTObject detectAndLoadPSTObject(PSTFile theFile, DescriptorIndexNode folderIndexNode) throws IOException, PSTException
      Detect and load a PST Object from a file with the specified descriptor index
      Parameters:
      theFile -
      folderIndexNode -
      Returns:
      PSTObject with that index
      Throws:
      IOException
      PSTException
    • createAppropriatePSTMessageObject

      static PSTMessage createAppropriatePSTMessageObject(PSTFile theFile, DescriptorIndexNode folderIndexNode, PSTTableBC table, HashMap<Integer,PSTDescriptorItem> localDescriptorItems)
    • guessPSTObjectType

      static String guessPSTObjectType(PSTFile theFile, DescriptorIndexNode folderIndexNode) throws IOException, PSTException
      Throws:
      IOException
      PSTException
    • filetimeToDate

      protected static Date filetimeToDate(int high, int low)

      Converts a Windows FILETIME into a Date. The Windows FILETIME structure holds a date and time associated with a file. The structure identifies a 64-bit integer specifying the number of 100-nanosecond intervals which have passed since January 1, 1601. This 64-bit value is split into the two double words stored in the structure.

      Parameters:
      high - The higher double word of the FILETIME structure.
      low - The lower double word of the FILETIME structure.
      Returns:
      The Windows FILETIME as a Date.
    • apptTimeToCalendar

      public static Calendar apptTimeToCalendar(int minutes)
    • apptTimeToUTC

      public static Calendar apptTimeToUTC(int minutes, PSTTimeZone tz)