]> source.dussan.org Git - poi.git/commitdiff
- PropertySetFactory.create(InputStream) no longer throws an UnexpectedPropertySetTyp...
authorRainer Klute <klute@apache.org>
Sat, 13 Sep 2003 12:31:28 +0000 (12:31 +0000)
committerRainer Klute <klute@apache.org>
Sat, 13 Sep 2003 12:31:28 +0000 (12:31 +0000)
- 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

src/java/org/apache/poi/hpsf/ClassID.java
src/java/org/apache/poi/hpsf/MutableSection.java
src/java/org/apache/poi/hpsf/PropertySetFactory.java
src/java/org/apache/poi/hpsf/Section.java
src/java/org/apache/poi/hpsf/SummaryInformation.java
src/java/org/apache/poi/hpsf/package.html

index e179a6352b9374fe791ebe7e7df10967f2446a41..ddd52c686ed0150f3ca62d91f0542c2a43980aff 100644 (file)
@@ -236,7 +236,7 @@ public class ClassID
      */
     public int hashCode()
     {
-        throw new UnsupportedOperationException("FIXME: Not yet implemented.");
+        return new String(bytes).hashCode();
     }
 
 }
index 0249269a88f7caa31c78b66aee2b604918511a39..10945426acc0225c05ab3a8c5b14687ef9d6b8e7 100644 (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>
index 39b4ac88a27e4b89ae2e8ec36747a22e10cbb244..6f6d8e6ed25b5726d5cb7abc72f325c2762313f4 100644 (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());
+        }
     }
 
 }
index a85894dcf1f9fcc0650839422185ffa63efa09f0..9a27a3dedc67f8794a7b6db49a3f8a12a6b697d3 100644 (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();
     }
 
 
index 5384ae4eee298e74cd3fccfac855e7f34ffac11b..2b32f3fc34b5fcd2f4bd9f6316f67e1d6096b8a7 100644 (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()
     {
index 31fcb05bf0f3a2043da0da7f7bc2ce3be83a57ba..346b5c1bc1261fbccd4d809c7d4b7da312235f53 100644 (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
     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>