public class PropertySet extends Object
Represents a property set in the Horrible Property Set Format (HPSF). These are usually metadata of a Microsoft Office document.
An application that wants to access these metadata should create
an instance of this class or one of its subclasses by calling the
factory method PropertySetFactory.create(java.io.InputStream)
and then retrieve
the information its needs by calling appropriate methods.
PropertySetFactory.create(java.io.InputStream)
does its work by calling one
of the constructors PropertySet(InputStream)
or
PropertySet(byte[])
. If the constructor's
argument is not in the Horrible Property Set Format, i.e. not a
property set stream, or if any other error occurs, an appropriate
exception is thrown.
A PropertySet
has a list of Section
s, and each
Section
has a Property
array. Use getSections()
to retrieve the Section
s, then call Section.getProperties()
for each Section
to get hold of the
Property
arrays.
PropertySet
s contains only a single Section
, the
convenience method getProperties()
returns the properties of
a PropertySet
's Section
(throwing a NoSingleSectionException
if the PropertySet
contains more
(or less) than exactly one Section
).Modifier and Type | Field and Description |
---|---|
(package private) static byte[] |
BYTE_ORDER_ASSERTION
The "byteOrder" field must equal this value.
|
protected int |
byteOrder
Specifies this
PropertySet 's byte order. |
protected ClassID |
classID
Specifies this
PropertySet 's "classID" field. |
protected int |
format
Specifies this
PropertySet 's format. |
(package private) static byte[] |
FORMAT_ASSERTION
The "format" field must equal this value.
|
static int |
OS_MACINTOSH
If the OS version field holds this value the property set stream was
created on a Macintosh system.
|
static int |
OS_WIN16
If the OS version field holds this value the property set stream was
created on a 16-bit Windows system.
|
static int |
OS_WIN32
If the OS version field holds this value the property set stream was
created on a 32-bit Windows system.
|
protected int |
osVersion
Specifies the version of the operating system that created
this
PropertySet . |
protected List |
sections
The sections in this
PropertySet . |
Modifier | Constructor and Description |
---|---|
protected |
PropertySet()
Creates an empty (uninitialized)
PropertySet . |
|
PropertySet(byte[] stream)
Creates a
PropertySet instance from a byte array
that represents a stream in the Horrible Property Set
Format. |
|
PropertySet(byte[] stream,
int offset,
int length)
Creates a
PropertySet instance from a byte array
that represents a stream in the Horrible Property Set
Format. |
|
PropertySet(InputStream stream)
Creates a
PropertySet instance from an InputStream in the Horrible Property Set Format. |
Modifier and Type | Method and Description |
---|---|
boolean |
equals(Object o)
Returns
true if the PropertySet is equal
to the specified parameter, else false . |
int |
getByteOrder()
Returns the property set stream's low-level "byte order"
field.
|
ClassID |
getClassID()
Returns the property set stream's low-level "class ID"
field.
|
Section |
getFirstSection()
Gets the
PropertySet 's first section. |
int |
getFormat()
Returns the property set stream's low-level "format"
field.
|
int |
getOSVersion()
Returns the property set stream's low-level "OS version"
field.
|
Property[] |
getProperties()
Convenience method returning the
Property array
contained in this property set. |
protected Object |
getProperty(int id)
Convenience method returning the value of the property with
the specified ID.
|
protected boolean |
getPropertyBooleanValue(int id)
Convenience method returning the value of a boolean property
with the specified ID.
|
protected int |
getPropertyIntValue(int id)
Convenience method returning the value of the numeric
property with the specified ID.
|
int |
getSectionCount()
Returns the number of
Section s in the property
set. |
List |
getSections()
Returns the
Section s in the property set. |
Section |
getSingleSection()
If the
PropertySet has only a single section this
method returns it. |
int |
hashCode() |
private void |
init(byte[] src,
int offset,
int length)
Initializes this
PropertySet instance from a byte
array. |
boolean |
isDocumentSummaryInformation()
Checks whether this
PropertySet is a Document
Summary Information. |
static boolean |
isPropertySetStream(byte[] src,
int offset,
int length)
Checks whether a byte array is in the Horrible Property Set
Format.
|
static boolean |
isPropertySetStream(InputStream stream)
Checks whether an
InputStream is in the Horrible
Property Set Format. |
boolean |
isSummaryInformation()
Checks whether this
PropertySet represents a Summary
Information. |
String |
toString() |
boolean |
wasNull()
Checks whether the property which the last call to
getPropertyIntValue(int) or getProperty(int) tried to access
was available or not. |
static final byte[] BYTE_ORDER_ASSERTION
The "byteOrder" field must equal this value.
protected int byteOrder
Specifies this PropertySet
's byte order. See the
HPFS documentation for details!
static final byte[] FORMAT_ASSERTION
The "format" field must equal this value.
protected int format
Specifies this PropertySet
's format. See the HPFS
documentation for details!
protected int osVersion
Specifies the version of the operating system that created
this PropertySet
. See the HPFS documentation for
details!
public static final int OS_WIN16
If the OS version field holds this value the property set stream was created on a 16-bit Windows system.
public static final int OS_MACINTOSH
If the OS version field holds this value the property set stream was created on a Macintosh system.
public static final int OS_WIN32
If the OS version field holds this value the property set stream was created on a 32-bit Windows system.
protected ClassID classID
Specifies this PropertySet
's "classID" field. See
the HPFS documentation for details!
protected List sections
The sections in this PropertySet
.
protected PropertySet()
Creates an empty (uninitialized) PropertySet
.
Please note: For the time being this constructor is protected since it is used for internal purposes only, but expect it to become public once the property set's writing functionality is implemented.
public PropertySet(InputStream stream) throws NoPropertySetStreamException, MarkUnsupportedException, IOException, UnsupportedEncodingException
Creates a PropertySet
instance from an InputStream
in the Horrible Property Set Format.
The constructor reads the first few bytes from the stream and determines whether it is really a property set stream. If it is, it parses the rest of the stream. If it is not, it resets the stream to its beginning in order to let other components mess around with the data and throws an exception.
stream
- Holds the data making out the property set
stream.MarkUnsupportedException
- if the stream does not support
the InputStream.markSupported()
method.IOException
- if the InputStream
cannot not be
accessed as needed.NoPropertySetStreamException
- if the input stream does not
contain a property set.UnsupportedEncodingException
- if a character encoding is not
supported.public PropertySet(byte[] stream, int offset, int length) throws NoPropertySetStreamException, UnsupportedEncodingException
Creates a PropertySet
instance from a byte array
that represents a stream in the Horrible Property Set
Format.
stream
- The byte array holding the stream data.offset
- The offset in stream where the stream
data begin. If the stream data begin with the first byte in the
array, the offset is 0.length
- The length of the stream data.NoPropertySetStreamException
- if the byte array is not a
property set stream.UnsupportedEncodingException
- if the codepage is not supported.public PropertySet(byte[] stream) throws NoPropertySetStreamException, UnsupportedEncodingException
Creates a PropertySet
instance from a byte array
that represents a stream in the Horrible Property Set
Format.
stream
- The byte array holding the stream data. The
complete byte array contents is the stream data.NoPropertySetStreamException
- if the byte array is not a
property set stream.UnsupportedEncodingException
- if the codepage is not supported.public int getByteOrder()
Returns the property set stream's low-level "byte order" field. It is always 0xFFFE .
public int getFormat()
Returns the property set stream's low-level "format" field. It is always 0x0000 .
public int getOSVersion()
Returns the property set stream's low-level "OS version" field.
public ClassID getClassID()
Returns the property set stream's low-level "class ID" field.
public int getSectionCount()
Returns the number of Section
s in the property
set.
Section
s in the property set.public List getSections()
Returns the Section
s in the property set.
Section
s in the property set.public static boolean isPropertySetStream(InputStream stream) throws MarkUnsupportedException, IOException
Checks whether an InputStream
is in the Horrible
Property Set Format.
stream
- The InputStream
to check. In order to
perform the check, the method reads the first bytes from the
stream. After reading, the stream is reset to the position it
had before reading. The InputStream
must support the
InputStream.mark(int)
method.true
if the stream is a property set
stream, else false
.MarkUnsupportedException
- if the InputStream
does not support the InputStream.mark(int)
method.IOException
- if an I/O error occurspublic static boolean isPropertySetStream(byte[] src, int offset, int length)
Checks whether a byte array is in the Horrible Property Set Format.
src
- The byte array to check.offset
- The offset in the byte array.length
- The significant number of bytes in the byte
array. Only this number of bytes will be checked.true
if the byte array is a property set
stream, false
if not.private void init(byte[] src, int offset, int length) throws UnsupportedEncodingException
Initializes this PropertySet
instance from a byte
array. The method assumes that it has been checked already that
the byte array indeed represents a property set stream. It does
no more checks on its own.
src
- Byte array containing the property set streamoffset
- The property set stream starts at this offset
from the beginning of srclength
- Length of the property set stream.UnsupportedEncodingException
- if HPSF does not (yet) support the
property set's character encoding.public boolean isSummaryInformation()
Checks whether this PropertySet
represents a Summary
Information.
true
if this PropertySet
represents a Summary Information, else false
.public boolean isDocumentSummaryInformation()
Checks whether this PropertySet
is a Document
Summary Information.
true
if this PropertySet
represents a Document Summary Information, else false
.public Property[] getProperties() throws NoSingleSectionException
Convenience method returning the Property
array
contained in this property set. It is a shortcut for getting
the PropertySet
's Section
s list and then
getting the Property
array from the first Section
.
Section
of this
PropertySet
.NoSingleSectionException
- if the PropertySet
has
more or less than one Section
.protected Object getProperty(int id) throws NoSingleSectionException
Convenience method returning the value of the property with
the specified ID. If the property is not available,
null
is returned and a subsequent call to wasNull()
will return true
.
id
- The property IDNoSingleSectionException
- if the PropertySet
has
more or less than one Section
.protected boolean getPropertyBooleanValue(int id) throws NoSingleSectionException
Convenience method returning the value of a boolean property
with the specified ID. If the property is not available,
false
is returned. A subsequent call to wasNull()
will return true
to let the caller
distinguish that case from a real property value of
false
.
id
- The property IDNoSingleSectionException
- if the PropertySet
has
more or less than one Section
.protected int getPropertyIntValue(int id) throws NoSingleSectionException
Convenience method returning the value of the numeric
property with the specified ID. If the property is not
available, 0 is returned. A subsequent call to wasNull()
will return true
to let the caller distinguish
that case from a real property value of 0.
id
- The property IDNoSingleSectionException
- if the PropertySet
has
more or less than one Section
.public boolean wasNull() throws NoSingleSectionException
Checks whether the property which the last call to getPropertyIntValue(int)
or getProperty(int)
tried to access
was available or not. This information might be important for
callers of getPropertyIntValue(int)
since the latter
returns 0 if the property does not exist. Using wasNull()
, the caller can distiguish this case from a
property's real value of 0.
true
if the last call to getPropertyIntValue(int)
or getProperty(int)
tried to access a
property that was not available, else false
.NoSingleSectionException
- if the PropertySet
has
more than one Section
.public Section getFirstSection()
Gets the PropertySet
's first section.
PropertySet
's first section.public Section getSingleSection()
If the PropertySet
has only a single section this
method returns it.
public boolean equals(Object o)
Returns true
if the PropertySet
is equal
to the specified parameter, else false
.
public int hashCode()
hashCode
in class Object
Object.hashCode()
public String toString()
toString
in class Object
Object.toString()
Copyright © 2015 Open Microscopy Environment