*/
public int hashCode()
{
- throw new UnsupportedOperationException("FIXME: Not yet implemented.");
+ return new String(bytes).hashCode();
}
}
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>
import java.io.InputStream;
import java.io.IOException;
+import java.rmi.UnexpectedException;
/**
* <p>Factory class to create instances of {@link SummaryInformation},
*/
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());
+ }
}
}
*/
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();
}
/**
- * <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
* 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()
{
<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
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>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>
- <p>Codepage support</p>
+ <p>Convenience methods for setting summary information and document
+ summary information properties</p>
</li>
<li>
- <p>Property type Unicode string</p>
+ <p>Better codepage support</p>
</li>
<li>
- <p>Further property types</p>
+ <p>Support for more property (variant) types</p>
</li>
</ul>