- HPSFRuntimeException is thrown when the application tries to read a non-integer property with Section.getPropertyIntValue(long). - Package description updated. - ClassIDhashCode() implemented. git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353349 13f79535-47bb-0310-9956-ffa450edef68tags/PERF_BEFORE_MERGE
*/ | */ | ||||
public int hashCode() | public int hashCode() | ||||
{ | { | ||||
throw new UnsupportedOperationException("FIXME: Not yet implemented."); | |||||
return new String(bytes).hashCode(); | |||||
} | } | ||||
} | } |
import java.util.List; | import java.util.List; | ||||
import org.apache.poi.util.LittleEndian; | import org.apache.poi.util.LittleEndian; | ||||
import org.apache.poi.util.LittleEndianConsts; | |||||
/** | /** | ||||
* <p>Adds writing capability to the {@link Section} class.</p> | * <p>Adds writing capability to the {@link Section} class.</p> |
import java.io.InputStream; | import java.io.InputStream; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.rmi.UnexpectedException; | |||||
/** | /** | ||||
* <p>Factory class to create instances of {@link SummaryInformation}, | * <p>Factory class to create instances of {@link SummaryInformation}, | ||||
*/ | */ | ||||
public static PropertySet create(final InputStream stream) | public static PropertySet create(final InputStream stream) | ||||
throws NoPropertySetStreamException, MarkUnsupportedException, | throws NoPropertySetStreamException, MarkUnsupportedException, | ||||
UnexpectedPropertySetTypeException, IOException | |||||
IOException | |||||
{ | { | ||||
final PropertySet ps = new PropertySet(stream); | final PropertySet ps = new PropertySet(stream); | ||||
if (ps.isSummaryInformation()) | |||||
return new SummaryInformation(ps); | |||||
else if (ps.isDocumentSummaryInformation()) | |||||
return new DocumentSummaryInformation(ps); | |||||
else | |||||
return ps; | |||||
try | |||||
{ | |||||
if (ps.isSummaryInformation()) | |||||
return new SummaryInformation(ps); | |||||
else if (ps.isDocumentSummaryInformation()) | |||||
return new DocumentSummaryInformation(ps); | |||||
else | |||||
return ps; | |||||
} | |||||
catch (UnexpectedPropertySetTypeException ex) | |||||
{ | |||||
/* This exception will never be throws because we already checked | |||||
* explicitly for this case above. */ | |||||
throw new UnexpectedException(ex.toString()); | |||||
} | |||||
} | } | ||||
} | } |
*/ | */ | ||||
protected int getPropertyIntValue(final long id) | protected int getPropertyIntValue(final long id) | ||||
{ | { | ||||
final Long i = (Long) getProperty(id); | |||||
if (i != null) | |||||
return i.intValue(); | |||||
else | |||||
final Long i; | |||||
final Object o = getProperty(id); | |||||
if (o == null) | |||||
return 0; | return 0; | ||||
if (!(o instanceof Long)) | |||||
throw new HPSFRuntimeException | |||||
("This property is not an integer type, but " + | |||||
o.getClass().getName() + "."); | |||||
i = (Long) o; | |||||
return i.intValue(); | |||||
} | } | ||||
/** | /** | ||||
* <p>Returns the stream's edit time (or <code>null</code>).</p> | |||||
* <p>Returns the total time spent in editing the document | |||||
* (or <code>0</code>).</p> | |||||
* | * | ||||
* @return The edit time or <code>null</code> | |||||
* @return The total time spent in editing the document or 0 if the {@link | |||||
* SummaryInformation} does not contain this information. | |||||
*/ | */ | ||||
public Date getEditTime() | |||||
public long getEditTime() | |||||
{ | { | ||||
return (Date) getProperty(PropertyIDMap.PID_EDITTIME); | |||||
final Date d = (Date) getProperty(PropertyIDMap.PID_EDITTIME); | |||||
if (d == null) | |||||
return 0; | |||||
else | |||||
return Util.dateToFileTime(d); | |||||
} | } | ||||
* <p>Returns the stream's page count or 0 if the {@link | * <p>Returns the stream's page count or 0 if the {@link | ||||
* SummaryInformation} does not contain a page count.</p> | * SummaryInformation} does not contain a page count.</p> | ||||
* | * | ||||
* @return The page count or <code>null</code> | |||||
* @return The page count or 0 if the {@link SummaryInformation} does not | |||||
* contain a page count. | |||||
*/ | */ | ||||
public int getPageCount() | public int getPageCount() | ||||
{ | { |
<div> | <div> | ||||
<p>Processes streams in the Horrible Property Set Format (HPSF) in POI | <p>Processes streams in the Horrible Property Set Format (HPSF) in POI | ||||
filesystems. Microsoft Office documents, i.e. POI filesystems, usually | filesystems. Microsoft Office documents, i.e. POI filesystems, usually | ||||
contain meta data like author, title, last editing date etc. These items | |||||
contain meta data like author, title, last saving time etc. These items | |||||
are called <strong>properties</strong> and stored in | are called <strong>properties</strong> and stored in | ||||
<strong>property set streams</strong> along with the document itself. These | <strong>property set streams</strong> along with the document itself. These | ||||
streams are commonly named <tt>\005SummaryInformation</tt> and | streams are commonly named <tt>\005SummaryInformation</tt> and | ||||
the hassle of first finding out what the title's property ID is and then | the hassle of first finding out what the title's property ID is and then | ||||
using this ID to get the property's value.</p> | using this ID to get the property's value.</p> | ||||
<p>Writing properties can be done with the classes | |||||
{@link org.apache.poi.hpsf.MutablePropertySet}, {@link | |||||
org.apache.poi.hpsf.MutableSection}, and {@link | |||||
org.apache.poi.hpsf.MutableProperty}.</p> | |||||
<div> | <div> | ||||
<h2>To Do</h2> | |||||
<h2>History</h2> | |||||
<p>The following is still left to be implemented:</p> | |||||
<dl> | |||||
<dt>2003-09-11:</dt> | |||||
<ul> | |||||
<dd> | |||||
<p>{@link org.apache.poi.hpsf.PropertySetFactory#create(InputStream)} no | |||||
longer throws an | |||||
{@link org.apache.poi.hpsf.UnexpectedPropertySetTypeException}.</p></dd> | |||||
</dl> | |||||
</div> | |||||
<li> | |||||
<p>Property dictionaries</p> | |||||
</li> | |||||
<li> | |||||
<p>Writing property sets</p> | |||||
</li> | |||||
<div> | |||||
<h2>To Do</h2> | |||||
<p>The following is still left to be implemented. Sponsering could foster | |||||
these issues considerably.</p> | |||||
<ul> | |||||
<li> | <li> | ||||
<p>Codepage support</p> | |||||
<p>Convenience methods for setting summary information and document | |||||
summary information properties</p> | |||||
</li> | </li> | ||||
<li> | <li> | ||||
<p>Property type Unicode string</p> | |||||
<p>Better codepage support</p> | |||||
</li> | </li> | ||||
<li> | <li> | ||||
<p>Further property types</p> | |||||
<p>Support for more property (variant) types</p> | |||||
</li> | </li> | ||||
</ul> | </ul> |