aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/org/apache/poi/hpsf
diff options
context:
space:
mode:
authorRainer Klute <klute@apache.org>2003-09-13 12:31:28 +0000
committerRainer Klute <klute@apache.org>2003-09-13 12:31:28 +0000
commitd99a03d6d9a7617af4f1a0c7f8b2cca60c5ba843 (patch)
treea062da70a5c1cc4720934aa6a5288da14d6c4517 /src/java/org/apache/poi/hpsf
parent4572e39df6c3630f9550cfc1d35941d06212bc2d (diff)
downloadpoi-d99a03d6d9a7617af4f1a0c7f8b2cca60c5ba843.tar.gz
poi-d99a03d6d9a7617af4f1a0c7f8b2cca60c5ba843.zip
- 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
Diffstat (limited to 'src/java/org/apache/poi/hpsf')
-rw-r--r--src/java/org/apache/poi/hpsf/ClassID.java2
-rw-r--r--src/java/org/apache/poi/hpsf/MutableSection.java1
-rw-r--r--src/java/org/apache/poi/hpsf/PropertySetFactory.java24
-rw-r--r--src/java/org/apache/poi/hpsf/Section.java13
-rw-r--r--src/java/org/apache/poi/hpsf/SummaryInformation.java17
-rw-r--r--src/java/org/apache/poi/hpsf/package.html39
6 files changed, 65 insertions, 31 deletions
diff --git a/src/java/org/apache/poi/hpsf/ClassID.java b/src/java/org/apache/poi/hpsf/ClassID.java
index e179a6352b..ddd52c686e 100644
--- a/src/java/org/apache/poi/hpsf/ClassID.java
+++ b/src/java/org/apache/poi/hpsf/ClassID.java
@@ -236,7 +236,7 @@ public class ClassID
*/
public int hashCode()
{
- throw new UnsupportedOperationException("FIXME: Not yet implemented.");
+ return new String(bytes).hashCode();
}
}
diff --git a/src/java/org/apache/poi/hpsf/MutableSection.java b/src/java/org/apache/poi/hpsf/MutableSection.java
index 0249269a88..10945426ac 100644
--- a/src/java/org/apache/poi/hpsf/MutableSection.java
+++ b/src/java/org/apache/poi/hpsf/MutableSection.java
@@ -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>
diff --git a/src/java/org/apache/poi/hpsf/PropertySetFactory.java b/src/java/org/apache/poi/hpsf/PropertySetFactory.java
index 39b4ac88a2..6f6d8e6ed2 100644
--- a/src/java/org/apache/poi/hpsf/PropertySetFactory.java
+++ b/src/java/org/apache/poi/hpsf/PropertySetFactory.java
@@ -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());
+ }
}
}
diff --git a/src/java/org/apache/poi/hpsf/Section.java b/src/java/org/apache/poi/hpsf/Section.java
index a85894dcf1..9a27a3dedc 100644
--- a/src/java/org/apache/poi/hpsf/Section.java
+++ b/src/java/org/apache/poi/hpsf/Section.java
@@ -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();
}
diff --git a/src/java/org/apache/poi/hpsf/SummaryInformation.java b/src/java/org/apache/poi/hpsf/SummaryInformation.java
index 5384ae4eee..2b32f3fc34 100644
--- a/src/java/org/apache/poi/hpsf/SummaryInformation.java
+++ b/src/java/org/apache/poi/hpsf/SummaryInformation.java
@@ -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()
{
diff --git a/src/java/org/apache/poi/hpsf/package.html b/src/java/org/apache/poi/hpsf/package.html
index 31fcb05bf0..346b5c1bc1 100644
--- a/src/java/org/apache/poi/hpsf/package.html
+++ b/src/java/org/apache/poi/hpsf/package.html
@@ -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>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>