|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.poi.hpsf.PropertySet
public class PropertySet
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(org.apache.poi.poifs.filesystem.DirectoryEntry, java.lang.String)
and then retrieve
the information its needs by calling appropriate methods.
PropertySetFactory.create(org.apache.poi.poifs.filesystem.DirectoryEntry, java.lang.String)
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.
Since the vast majority of 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
).
Field Summary | |
---|---|
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. |
Constructor Summary | |
---|---|
PropertySet()
Constructs a PropertySet instance. |
|
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(java.io.InputStream stream)
Creates a PropertySet instance from an InputStream in the Horrible Property Set Format. |
|
PropertySet(PropertySet ps)
Constructs a PropertySet by doing a deep copy of
an existing PropertySet . |
Method Summary | |
---|---|
void |
addSection(Section section)
Adds a section to this property set. |
void |
clearSections()
Removes all sections from this property set. |
boolean |
equals(java.lang.Object o)
Returns true if the PropertySet is equal
to the specified parameter, else false . |
int |
getByteOrder()
|
ClassID |
getClassID()
|
Section |
getFirstSection()
Gets the PropertySet 's first section. |
int |
getFormat()
|
int |
getOSVersion()
|
Property[] |
getProperties()
Convenience method returning the Property array contained in this
property set. |
protected java.lang.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. |
PropertyIDMap |
getPropertySetIDMap()
The id to name mapping of the properties in this set. |
protected java.lang.String |
getPropertyStringValue(int propertyId)
Fetches the property with the given ID, then does its best to return it as a String |
static java.lang.String |
getPropertyStringValue(java.lang.Object propertyValue)
Return the string representation of a property value |
int |
getSectionCount()
|
java.util.List<Section> |
getSections()
|
Section |
getSingleSection()
If the PropertySet has only a single section this method returns it. |
int |
hashCode()
|
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(java.io.InputStream stream)
Checks whether an InputStream is in the Horrible
Property Set Format. |
boolean |
isSummaryInformation()
Checks whether this PropertySet represents a Summary Information. |
protected void |
remove1stProperty(long id)
|
protected void |
set1stProperty(long id,
boolean value)
|
protected void |
set1stProperty(long id,
byte[] value)
|
protected void |
set1stProperty(long id,
int value)
|
protected void |
set1stProperty(long id,
java.lang.String value)
|
void |
setByteOrder(int byteOrder)
Returns the property set stream's low-level "byte order" field. |
void |
setClassID(ClassID classID)
Sets the property set stream's low-level "class ID" field. |
void |
setFormat(int format)
Sets the property set stream's low-level "format" field. |
void |
setOSVersion(int osVersion)
Sets the property set stream's low-level "OS version" field. |
java.io.InputStream |
toInputStream()
Returns the contents of this property set stream as an input stream. |
java.lang.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. |
void |
write(DirectoryEntry dir,
java.lang.String name)
Writes a property set to a document in a POI filesystem directory. |
void |
write(java.io.OutputStream out)
Writes the property set to an output stream. |
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final int OS_WIN16
public static final int OS_MACINTOSH
public static final int OS_WIN32
Constructor Detail |
---|
public PropertySet()
PropertySet
instance. Its
primary task is to initialize the field with their proper values.
It also sets fields that might change to reasonable defaults.
public PropertySet(java.io.InputStream stream) throws NoPropertySetStreamException, MarkUnsupportedException, java.io.IOException, java.io.UnsupportedEncodingException
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.
java.io.IOException
- if the InputStream
cannot be accessed as needed.
NoPropertySetStreamException
- if the input stream does not contain a property set.
java.io.UnsupportedEncodingException
- if a character encoding is not supported.public PropertySet(byte[] stream, int offset, int length) throws NoPropertySetStreamException, java.io.UnsupportedEncodingException
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.
java.io.UnsupportedEncodingException
- if the codepage is not supported.public PropertySet(byte[] stream) throws NoPropertySetStreamException, java.io.UnsupportedEncodingException
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.
java.io.UnsupportedEncodingException
- if the codepage is not supported.public PropertySet(PropertySet ps)
PropertySet
by doing a deep copy of
an existing PropertySet
. All nested elements, i.e.
Section
s and Property
instances, will be their
counterparts in the new PropertySet
.
ps
- The property set to copyMethod Detail |
---|
public int getByteOrder()
0xFFFE
.public void setByteOrder(int byteOrder)
byteOrder
- The property set stream's low-level "byte order" field.public int getFormat()
0x0000
.public void setFormat(int format)
format
- The property set stream's low-level "format" field.public int getOSVersion()
public void setOSVersion(int osVersion)
osVersion
- The property set stream's low-level "OS version" field.public ClassID getClassID()
public void setClassID(ClassID classID)
classID
- The property set stream's low-level "class ID" field.public int getSectionCount()
Section
s in the property set.public java.util.List<Section> getSections()
Section
s in the property set.public void addSection(Section section)
section
- The Section
to add. It will be appended
after any sections that are already present in the property set
and thus become the last section.public void clearSections()
public PropertyIDMap getPropertySetIDMap()
null
if not applicablepublic static boolean isPropertySetStream(java.io.InputStream stream) throws MarkUnsupportedException, java.io.IOException
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.
java.io.IOException
- if an I/O error occurspublic static boolean isPropertySetStream(byte[] src, int offset, int length)
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.public void write(java.io.OutputStream out) throws WritingNotSupportedException, java.io.IOException
out
- the output stream to write the section to
java.io.IOException
- if an error when writing to the output stream
occurs
WritingNotSupportedException
- if HPSF does not yet support
writing a property's variant type.public void write(DirectoryEntry dir, java.lang.String name) throws WritingNotSupportedException, java.io.IOException
dir
- The directory in the POI filesystem to write the document to.name
- The document's name. If there is already a document with the
same name in the directory the latter will be overwritten.
WritingNotSupportedException
- if the filesystem doesn't support writing
java.io.IOException
- if the old entry can't be deleted or the new entry be writtenpublic java.io.InputStream toInputStream() throws java.io.IOException, WritingNotSupportedException
MutablePropertySet
only.
WritingNotSupportedException
- if HPSF does not yet support writing
of a property's variant type.
java.io.IOException
- if an I/O exception occurs.protected java.lang.String getPropertyStringValue(int propertyId)
propertyId
- the property id
public static java.lang.String getPropertyStringValue(java.lang.Object propertyValue)
propertyValue
- the property value
public boolean isSummaryInformation()
PropertySet
represents a Summary Information.
true
if this PropertySet
represents a Summary Information, else false
.public boolean isDocumentSummaryInformation()
PropertySet
is a Document Summary Information.
true
if this PropertySet
represents a Document Summary Information, else false
.public Property[] getProperties() throws NoSingleSectionException
Property
array contained in this
property set. It is a shortcut for getting he 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 java.lang.Object getProperty(int id) throws NoSingleSectionException
null
is returned and a subsequent
call to wasNull()
will return true
.
id
- The property ID
NoSingleSectionException
- if the PropertySet
has
more or less than one Section
.protected boolean getPropertyBooleanValue(int id) throws NoSingleSectionException
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 ID
NoSingleSectionException
- if the PropertySet
has
more or less than one Section
.protected int getPropertyIntValue(int id) throws NoSingleSectionException
wasNull()
will return true
to let the caller distinguish
that case from a real property value of 0.
id
- The property ID
NoSingleSectionException
- if the PropertySet
has
more or less than one Section
.public boolean wasNull() throws NoSingleSectionException
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()
PropertySet
's first section.
PropertySet
's first section.public Section getSingleSection()
PropertySet
has only a single section this method returns it.
public boolean equals(java.lang.Object o)
true
if the PropertySet
is equal
to the specified parameter, else false
.
equals
in class java.lang.Object
o
- the object to compare this PropertySet
with
true
if the objects are equal, false
if not@NotImplemented public int hashCode()
hashCode
in class java.lang.Object
Object.hashCode()
public java.lang.String toString()
toString
in class java.lang.Object
Object.toString()
protected void remove1stProperty(long id)
protected void set1stProperty(long id, java.lang.String value)
protected void set1stProperty(long id, int value)
protected void set1stProperty(long id, boolean value)
protected void set1stProperty(long id, byte[] value)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |