aboutsummaryrefslogtreecommitdiffstats
path: root/src/testcases/org/apache/poi/hpsf
diff options
context:
space:
mode:
Diffstat (limited to 'src/testcases/org/apache/poi/hpsf')
-rw-r--r--src/testcases/org/apache/poi/hpsf/basic/Util.java73
1 files changed, 70 insertions, 3 deletions
diff --git a/src/testcases/org/apache/poi/hpsf/basic/Util.java b/src/testcases/org/apache/poi/hpsf/basic/Util.java
index 75e7aa72e5..7c30fd9f07 100644
--- a/src/testcases/org/apache/poi/hpsf/basic/Util.java
+++ b/src/testcases/org/apache/poi/hpsf/basic/Util.java
@@ -69,6 +69,11 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Properties;
+import org.apache.poi.hpsf.MarkUnsupportedException;
+import org.apache.poi.hpsf.NoPropertySetStreamException;
+import org.apache.poi.hpsf.PropertySet;
+import org.apache.poi.hpsf.PropertySetFactory;
+import org.apache.poi.hpsf.UnexpectedPropertySetTypeException;
import org.apache.poi.poifs.eventfilesystem.POIFSReader;
import org.apache.poi.poifs.eventfilesystem.POIFSReaderEvent;
import org.apache.poi.poifs.eventfilesystem.POIFSReaderListener;
@@ -177,11 +182,11 @@ public class Util
{
try
{
- POIFile f = new POIFile();
+ final POIFile f = new POIFile();
f.setName(event.getName());
f.setPath(event.getPath());
- InputStream in = event.getStream();
- ByteArrayOutputStream out = new ByteArrayOutputStream();
+ final InputStream in = event.getStream();
+ final ByteArrayOutputStream out = new ByteArrayOutputStream();
Util.copy(in, out);
out.close();
f.setBytes(out.toByteArray());
@@ -214,6 +219,68 @@ public class Util
/**
+ * <p>Read all files from a POI filesystem which are property set streams
+ * and returns them as an array of {@link org.apache.poi.hpsf.PropertySet}
+ * instances.</p>
+ *
+ * @param poiFs The name of the POI filesystem as seen by the
+ * operating system. (This is the "filename".)
+ *
+ * @return The property sets. The elements are ordered in the same way
+ * as the files in the POI filesystem.
+ *
+ * @exception FileNotFoundException if the file containing the POI
+ * filesystem does not exist
+ *
+ * @exception IOException if an I/O exception occurs
+ */
+ public static POIFile[] readPropertySets(final File poiFs)
+ throws FileNotFoundException, IOException
+ {
+ final List files = new ArrayList(7);
+ final POIFSReader r = new POIFSReader();
+ POIFSReaderListener pfl = new POIFSReaderListener()
+ {
+ public void processPOIFSReaderEvent(final POIFSReaderEvent event)
+ {
+ try
+ {
+ final POIFile f = new POIFile();
+ f.setName(event.getName());
+ f.setPath(event.getPath());
+ final InputStream in = event.getStream();
+ if (PropertySet.isPropertySetStream(in))
+ {
+ final ByteArrayOutputStream out =
+ new ByteArrayOutputStream();
+ Util.copy(in, out);
+ out.close();
+ f.setBytes(out.toByteArray());
+ files.add(f);
+ }
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ throw new RuntimeException(ex.getMessage());
+ }
+ }
+ };
+
+ /* Register the listener for all POI files. */
+ r.registerListener(pfl);
+
+ /* Read the POI filesystem. */
+ r.read(new FileInputStream(poiFs));
+ POIFile[] result = new POIFile[files.size()];
+ for (int i = 0; i < result.length; i++)
+ result[i] = (POIFile) files.get(i);
+ return result;
+ }
+
+
+
+ /**
* <p>Prints the system properties to System.out.</p>
*/
public static void printSystemProperties()