Browse Source

- PropertySetFactory.create(InputStream) no longer throws an UnexpectedPropertySetTypeException.

- 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-ffa450edef68
tags/PERF_BEFORE_MERGE
Rainer Klute 21 years ago
parent
commit
d99a03d6d9

+ 1
- 1
src/java/org/apache/poi/hpsf/ClassID.java View File

*/ */
public int hashCode() public int hashCode()
{ {
throw new UnsupportedOperationException("FIXME: Not yet implemented.");
return new String(bytes).hashCode();
} }


} }

+ 0
- 1
src/java/org/apache/poi/hpsf/MutableSection.java View File

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>

+ 17
- 7
src/java/org/apache/poi/hpsf/PropertySetFactory.java View File



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());
}
} }


} }

+ 9
- 4
src/java/org/apache/poi/hpsf/Section.java View File

*/ */
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();
} }





+ 12
- 5
src/java/org/apache/poi/hpsf/SummaryInformation.java View File





/** /**
* <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()
{ {

+ 26
- 13
src/java/org/apache/poi/hpsf/package.html View File

<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>

Loading…
Cancel
Save