- 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
This commit is contained in:
Rainer Klute 2003-09-13 12:31:28 +00:00
parent 4572e39df6
commit d99a03d6d9
6 changed files with 65 additions and 31 deletions

View File

@ -236,7 +236,7 @@ public class ClassID
*/
public int hashCode()
{
throw new UnsupportedOperationException("FIXME: Not yet implemented.");
return new String(bytes).hashCode();
}
}

View File

@ -62,7 +62,6 @@ import java.util.LinkedList;
import java.util.List;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.LittleEndianConsts;
/**
* <p>Adds writing capability to the {@link Section} class.</p>

View File

@ -56,6 +56,7 @@ package org.apache.poi.hpsf;
import java.io.InputStream;
import java.io.IOException;
import java.rmi.UnexpectedException;
/**
* <p>Factory class to create instances of {@link SummaryInformation},
@ -89,15 +90,24 @@ public class PropertySetFactory
*/
public static PropertySet create(final InputStream stream)
throws NoPropertySetStreamException, MarkUnsupportedException,
UnexpectedPropertySetTypeException, IOException
IOException
{
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());
}
}
}

View File

@ -401,11 +401,16 @@ public class Section
*/
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;
if (!(o instanceof Long))
throw new HPSFRuntimeException
("This property is not an integer type, but " +
o.getClass().getName() + ".");
i = (Long) o;
return i.intValue();
}

View File

@ -204,13 +204,19 @@ public class SummaryInformation extends SpecialPropertySet
/**
* <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);
}
@ -258,7 +264,8 @@ public class SummaryInformation extends SpecialPropertySet
* <p>Returns the stream's page count or 0 if the {@link
* 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()
{

View File

@ -9,7 +9,7 @@
<div>
<p>Processes streams in the Horrible Property Set Format (HPSF) in POI
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
<strong>property set streams</strong> along with the document itself. These
streams are commonly named <tt>\005SummaryInformation</tt> and
@ -71,31 +71,44 @@
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>
<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>
<h2>History</h2>
<dl>
<dt>2003-09-11:</dt>
<dd>
<p>{@link org.apache.poi.hpsf.PropertySetFactory#create(InputStream)} no
longer throws an
{@link org.apache.poi.hpsf.UnexpectedPropertySetTypeException}.</p></dd>
</dl>
</div>
<div>
<h2>To Do</h2>
<p>The following is still left to be implemented:</p>
<p>The following is still left to be implemented. Sponsering could foster
these issues considerably.</p>
<ul>
<li>
<p>Property dictionaries</p>
<p>Convenience methods for setting summary information and document
summary information properties</p>
</li>
<li>
<p>Writing property sets</p>
<p>Better codepage support</p>
</li>
<li>
<p>Codepage support</p>
</li>
<li>
<p>Property type Unicode string</p>
</li>
<li>
<p>Further property types</p>
<p>Support for more property (variant) types</p>
</li>
</ul>