Provide a convenience method for creating a PropertySet from a Directory + Entry
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1590650 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
52c6fd587c
commit
ba4225395f
@ -26,14 +26,11 @@ import org.apache.poi.hpsf.CustomProperties;
|
|||||||
import org.apache.poi.hpsf.DocumentSummaryInformation;
|
import org.apache.poi.hpsf.DocumentSummaryInformation;
|
||||||
import org.apache.poi.hpsf.MarkUnsupportedException;
|
import org.apache.poi.hpsf.MarkUnsupportedException;
|
||||||
import org.apache.poi.hpsf.NoPropertySetStreamException;
|
import org.apache.poi.hpsf.NoPropertySetStreamException;
|
||||||
import org.apache.poi.hpsf.PropertySet;
|
|
||||||
import org.apache.poi.hpsf.PropertySetFactory;
|
import org.apache.poi.hpsf.PropertySetFactory;
|
||||||
import org.apache.poi.hpsf.SummaryInformation;
|
import org.apache.poi.hpsf.SummaryInformation;
|
||||||
import org.apache.poi.hpsf.UnexpectedPropertySetTypeException;
|
import org.apache.poi.hpsf.UnexpectedPropertySetTypeException;
|
||||||
import org.apache.poi.hpsf.WritingNotSupportedException;
|
import org.apache.poi.hpsf.WritingNotSupportedException;
|
||||||
import org.apache.poi.poifs.filesystem.DirectoryEntry;
|
import org.apache.poi.poifs.filesystem.DirectoryEntry;
|
||||||
import org.apache.poi.poifs.filesystem.DocumentEntry;
|
|
||||||
import org.apache.poi.poifs.filesystem.DocumentInputStream;
|
|
||||||
import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
|
import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -105,17 +102,12 @@ public class ModifyDocumentSummaryInformation {
|
|||||||
SummaryInformation si;
|
SummaryInformation si;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
DocumentEntry siEntry = (DocumentEntry)
|
si = (SummaryInformation)PropertySetFactory.create(
|
||||||
dir.getEntry(SummaryInformation.DEFAULT_STREAM_NAME);
|
dir, SummaryInformation.DEFAULT_STREAM_NAME);
|
||||||
DocumentInputStream dis = new DocumentInputStream(siEntry);
|
|
||||||
PropertySet ps = new PropertySet(dis);
|
|
||||||
dis.close();
|
|
||||||
si = new SummaryInformation(ps);
|
|
||||||
}
|
}
|
||||||
catch (FileNotFoundException ex)
|
catch (FileNotFoundException ex)
|
||||||
{
|
{
|
||||||
/* There is no summary information yet. We have to create a new
|
// There is no summary information yet. We have to create a new one
|
||||||
* one. */
|
|
||||||
si = PropertySetFactory.newSummaryInformation();
|
si = PropertySetFactory.newSummaryInformation();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -133,12 +125,8 @@ public class ModifyDocumentSummaryInformation {
|
|||||||
DocumentSummaryInformation dsi;
|
DocumentSummaryInformation dsi;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
DocumentEntry dsiEntry = (DocumentEntry)
|
dsi = (DocumentSummaryInformation)PropertySetFactory.create(
|
||||||
dir.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME);
|
dir, DocumentSummaryInformation.DEFAULT_STREAM_NAME);
|
||||||
DocumentInputStream dis = new DocumentInputStream(dsiEntry);
|
|
||||||
PropertySet ps = new PropertySet(dis);
|
|
||||||
dis.close();
|
|
||||||
dsi = new DocumentSummaryInformation(ps);
|
|
||||||
}
|
}
|
||||||
catch (FileNotFoundException ex)
|
catch (FileNotFoundException ex)
|
||||||
{
|
{
|
||||||
|
@ -17,21 +17,55 @@
|
|||||||
|
|
||||||
package org.apache.poi.hpsf;
|
package org.apache.poi.hpsf;
|
||||||
|
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
|
|
||||||
import org.apache.poi.hpsf.wellknown.SectionIDMap;
|
import org.apache.poi.hpsf.wellknown.SectionIDMap;
|
||||||
|
import org.apache.poi.poifs.filesystem.DirectoryEntry;
|
||||||
|
import org.apache.poi.poifs.filesystem.DocumentEntry;
|
||||||
|
import org.apache.poi.poifs.filesystem.DocumentInputStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>Factory class to create instances of {@link SummaryInformation},
|
* <p>Factory class to create instances of {@link SummaryInformation},
|
||||||
* {@link DocumentSummaryInformation} and {@link PropertySet}.</p>
|
* {@link DocumentSummaryInformation} and {@link PropertySet}.</p>
|
||||||
*
|
|
||||||
* @author Rainer Klute <a
|
|
||||||
* href="mailto:klute@rainer-klute.de"><klute@rainer-klute.de></a>
|
|
||||||
*/
|
*/
|
||||||
public class PropertySetFactory
|
public class PropertySetFactory
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* <p>Creates the most specific {@link PropertySet} from an entry
|
||||||
|
* in the specified POIFS Directory. This is preferrably a {@link
|
||||||
|
* DocumentSummaryInformation} or a {@link SummaryInformation}. If
|
||||||
|
* the specified entry does not contain a property set stream, an
|
||||||
|
* exception is thrown. If no entry is found with the given name,
|
||||||
|
* an exception is thrown.</p>
|
||||||
|
*
|
||||||
|
* @param dir The directory to find the PropertySet in
|
||||||
|
* @param name The name of the entry containing the PropertySet
|
||||||
|
* @return The created {@link PropertySet}.
|
||||||
|
* @throws FileNotFoundException if there is no entry with that name
|
||||||
|
* @throws NoPropertySetStreamException if the stream does not
|
||||||
|
* contain a property set.
|
||||||
|
* @throws IOException if some I/O problem occurs.
|
||||||
|
* @exception UnsupportedEncodingException if the specified codepage is not
|
||||||
|
* supported.
|
||||||
|
*/
|
||||||
|
public static PropertySet create(final DirectoryEntry dir, final String name)
|
||||||
|
throws FileNotFoundException, NoPropertySetStreamException,
|
||||||
|
IOException, UnsupportedEncodingException
|
||||||
|
{
|
||||||
|
InputStream inp = null;
|
||||||
|
try {
|
||||||
|
DocumentEntry entry = (DocumentEntry)dir.getEntry(name);
|
||||||
|
inp = new DocumentInputStream(entry);
|
||||||
|
try {
|
||||||
|
return create(inp);
|
||||||
|
} catch (MarkUnsupportedException e) { return null; }
|
||||||
|
} finally {
|
||||||
|
if (inp != null) inp.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>Creates the most specific {@link PropertySet} from an {@link
|
* <p>Creates the most specific {@link PropertySet} from an {@link
|
||||||
@ -73,8 +107,6 @@ public class PropertySetFactory
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>Creates a new summary information.</p>
|
* <p>Creates a new summary information.</p>
|
||||||
*
|
*
|
||||||
@ -96,8 +128,6 @@ public class PropertySetFactory
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>Creates a new document summary information.</p>
|
* <p>Creates a new document summary information.</p>
|
||||||
*
|
*
|
||||||
@ -118,5 +148,4 @@ public class PropertySetFactory
|
|||||||
throw new HPSFRuntimeException(ex);
|
throw new HPSFRuntimeException(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user