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

@@ -236,7 +236,7 @@ public class ClassID
*/
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

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

+ 17
- 7
src/java/org/apache/poi/hpsf/PropertySetFactory.java 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());
}
}

}

+ 9
- 4
src/java/org/apache/poi/hpsf/Section.java 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();
}



+ 12
- 5
src/java/org/apache/poi/hpsf/SummaryInformation.java 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()
{

+ 26
- 13
src/java/org/apache/poi/hpsf/package.html 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>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>

Loading…
Cancel
Save