Package org.apache.poi.hpsf
Class Section
java.lang.Object
org.apache.poi.hpsf.Section
Represents a section in a
PropertySet
.-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
clear()
Removes all properties from the section including 0 (dictionary) and 1 (codepage).boolean
Checks whether this section is equal to another object.int
Gets the section's codepage, if any.Gets the section's dictionary.Returns the format ID.long
Returns the offset of the section in the stream.getPIDString
(long pid) Returns the PID string associated with a property ID.Property[]
Returns this section's properties.getProperty
(long id) Returns the value of the property with the specified ID.int
Returns the number of properties in this section.int
getSize()
int
hashCode()
void
removeProperty
(long id) Removes a property.void
setCodepage
(int codepage) Sets the codepage.void
setDictionary
(Map<Long, String> dictionary) Sets the section's dictionary.void
setFormatID
(byte[] formatID) Sets the section's format ID.void
setFormatID
(ClassID formatID) Sets the section's format ID.void
setProperties
(Property[] properties) Sets this section's properties.void
setProperty
(int id, boolean value) Sets the boolean value of the property with the specified ID.void
setProperty
(int id, int value) Sets the int value of the property with the specified ID.void
setProperty
(int id, long value) Sets the long value of the property with the specified ID.void
setProperty
(int id, long variantType, Object value) Sets the value and the variant type of the property with the specified ID.void
setProperty
(int id, Object value) Sets a property.void
setProperty
(int id, String value) Sets the string value of the property with the specified ID.void
Sets a property.protected void
setPropertyBooleanValue
(int id, boolean value) Sets the value of the boolean property with the specified ID.toString()
toString
(PropertyIDMap idMap) boolean
wasNull()
Checks whether the property which the last call togetPropertyIntValue(long)
orgetProperty(long)
tried to access was available or not.int
write
(OutputStream out) Writes this section into an output stream.
-
Constructor Details
-
Section
public Section()Creates an emptySection
. -
Section
Constructs aSection
by doing a deep copy of an existingSection
. All nestedProperty
instances, will be their mutable counterparts in the newMutableSection
.- Parameters:
s
- The section set to copy
-
Section
Creates aSection
instance from a byte array.- Parameters:
src
- Contains the complete property set stream.offset
- The position in the stream that points to the section's format ID.- Throws:
UnsupportedEncodingException
- if the section's codepage is not supported.
-
-
Method Details
-
getFormatID
Returns the format ID. The format ID is the "type" of the section. For example, if the format ID of the firstSection
contains the bytes specified byorg.apache.poi.hpsf.wellknown.SectionIDMap.SUMMARY_INFORMATION_ID
the section (and thus the property set) is a SummaryInformation.- Returns:
- The format ID
-
setFormatID
Sets the section's format ID.- Parameters:
formatID
- The section's format ID
-
setFormatID
public void setFormatID(byte[] formatID) Sets the section's format ID.- Parameters:
formatID
- The section's format ID as a byte array. It components are in big-endian format.
-
getOffset
public long getOffset()Returns the offset of the section in the stream.- Returns:
- The offset of the section in the stream.
-
getPropertyCount
public int getPropertyCount()Returns the number of properties in this section.- Returns:
- The number of properties in this section.
-
getProperties
Returns this section's properties.- Returns:
- This section's properties.
-
setProperties
Sets this section's properties. Any former values are overwritten.- Parameters:
properties
- This section's new properties.
-
getProperty
Returns the value of the property with the specified ID. If the property is not available,null
is returned and a subsequent call towasNull
will returntrue
.- Parameters:
id
- The property's ID- Returns:
- The property's value
-
setProperty
Sets the string value of the property with the specified ID.- Parameters:
id
- The property's IDvalue
- The property's value.
-
setProperty
public void setProperty(int id, int value) Sets the int value of the property with the specified ID.- Parameters:
id
- The property's IDvalue
- The property's value.- See Also:
-
setProperty
public void setProperty(int id, long value) Sets the long value of the property with the specified ID.- Parameters:
id
- The property's IDvalue
- The property's value.- See Also:
-
setProperty
public void setProperty(int id, boolean value) Sets the boolean value of the property with the specified ID.- Parameters:
id
- The property's IDvalue
- The property's value.- See Also:
-
setProperty
Sets the value and the variant type of the property with the specified ID. If a property with this ID is not yet present in the section, it will be added. An already present property with the specified ID will be overwritten. A default mapping will be used to choose the property's type.- Parameters:
id
- The property's ID.variantType
- The property's variant type.value
- The property's value.- See Also:
-
setProperty
Sets a property.- Parameters:
p
- The property to be set.- See Also:
-
setProperty
Sets a property.- Parameters:
id
- The property ID.value
- The property's value. The value's class must be one of those supported by HPSF.
-
setPropertyBooleanValue
protected void setPropertyBooleanValue(int id, boolean value) Sets the value of the boolean property with the specified ID.- Parameters:
id
- The property's IDvalue
- The property's value- See Also:
-
getSize
public int getSize()- Returns:
- the section's size in bytes.
-
wasNull
public boolean wasNull()Checks whether the property which the last call togetPropertyIntValue(long)
orgetProperty(long)
tried to access was available or not. This information might be important for callers ofgetPropertyIntValue(long)
since the latter returns 0 if the property does not exist. UsingwasNull
the caller can distiguish this case from a property's real value of 0.- Returns:
true
if the last call togetPropertyIntValue(long)
orgetProperty(long)
tried to access a property that was not available, elsefalse
.
-
getPIDString
Returns the PID string associated with a property ID. The ID is first looked up in theSections
private dictionary. If it is not found there, the property PID string is taken from sections format IDs namespace. If the PID is also undefined there, i.e. it is not well-known,"[undefined]"
is returned.- Parameters:
pid
- The property ID- Returns:
- The well-known property ID string associated with the
property ID
pid
-
clear
public void clear()Removes all properties from the section including 0 (dictionary) and 1 (codepage). -
equals
Checks whether this section is equal to another object. The result isfalse
if one of the the following conditions holds:- The other object is not a
Section
. - The format IDs of the two sections are not equal.
- The sections have a different number of properties. However, properties with ID 1 (codepage) are not counted.
- The other object is not a
Section
. - The properties have different values. The order of the properties is irrelevant.
- The other object is not a
-
removeProperty
public void removeProperty(long id) Removes a property.- Parameters:
id
- The ID of the property to be removed
-
write
Writes this section into an output stream.Internally this is done by writing into three byte array output streams: one for the properties, one for the property list and one for the section as such. The two former are appended to the latter when they have received all their data.
- Parameters:
out
- The stream to write into.- Returns:
- The number of bytes written, i.e. the section's size.
- Throws:
IOException
- if an I/O error occursWritingNotSupportedException
- if HPSF does not yet support writing a property's variant type.
-
setDictionary
Sets the section's dictionary. All keys in the dictionary must beLong
instances, all values must beString
s. This method overwrites the properties with IDs 0 and 1 since they are reserved for the dictionary and the dictionary's codepage. Setting these properties explicitly might have surprising effects. An application should never do this but always use this method.- Parameters:
dictionary
- The dictionary- Throws:
IllegalPropertySetDataException
- if the dictionary's key and value types are not correct.- See Also:
-
hashCode
public int hashCode() -
toString
-
toString
-
getDictionary
Gets the section's dictionary. A dictionary allows an application to use human-readable property names instead of numeric property IDs. It contains mappings from property IDs to their associated string values. The dictionary is stored as the property with ID 0. The codepage for the strings in the dictionary is defined by property with ID 1.- Returns:
- the dictionary or
null
if the section does not have a dictionary.
-
getCodepage
public int getCodepage()Gets the section's codepage, if any.- Returns:
- The section's codepage if one is defined, else -1.
-
setCodepage
public void setCodepage(int codepage) Sets the codepage.- Parameters:
codepage
- the codepage
-