]> source.dussan.org Git - poi.git/commitdiff
Add a getEntryNames() method to POIFS/NPOIFS directory entries, to make listing easier
authorNick Burch <nick@apache.org>
Fri, 25 Apr 2014 21:10:52 +0000 (21:10 +0000)
committerNick Burch <nick@apache.org>
Fri, 25 Apr 2014 21:10:52 +0000 (21:10 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1590148 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/poifs/filesystem/DirectoryEntry.java
src/java/org/apache/poi/poifs/filesystem/DirectoryNode.java
src/java/org/apache/poi/poifs/filesystem/FilteringDirectoryNode.java

index bb50a7557112ef97422d8660189f87c24f61e969..7148fda3cfd264e0a72771046c3a1357e36a7834 100644 (file)
@@ -23,6 +23,7 @@ import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.apache.poi.hpsf.ClassID;
 
@@ -49,6 +50,17 @@ public interface DirectoryEntry
      */
 
     public Iterator<Entry> getEntries();
+    
+    /**
+     * get the names of all the Entries contained directly in this
+     * instance (in other words, names of children only; no grandchildren
+     * etc).
+     *
+     * @return the names of all the entries that may be retrieved with
+     *         getEntry(String), which may be empty (if this 
+     *         DirectoryEntry is empty)
+     */
+    public Set<String> getEntryNames();
 
     /**
      * is this DirectoryEntry empty?
index cb705ff073f84121ed25831bf4d55b545cf3997a..84eca0507c3042acbd5b28b223a12dba521f1da2 100644 (file)
@@ -27,6 +27,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import org.apache.poi.hpsf.ClassID;
 import org.apache.poi.poifs.dev.POIFSViewable;
@@ -317,6 +318,20 @@ public class DirectoryNode
     {
         return _entries.iterator();
     }
+    
+    /**
+     * get the names of all the Entries contained directly in this
+     * instance (in other words, names of children only; no grandchildren
+     * etc).
+     *
+     * @return the names of all the entries that may be retrieved with
+     *         getEntry(String), which may be empty (if this 
+     *         DirectoryEntry is empty)
+     */
+    public Set<String> getEntryNames()
+    {
+        return _byname.keySet();
+    }
 
     /**
      * is this DirectoryEntry empty?
index 861768aee7e2a802098bba911a717be0ebe94221..3296ddb8888df6b85f1829f8414e36bb4feb5918 100644 (file)
@@ -114,6 +114,16 @@ public class FilteringDirectoryNode implements DirectoryEntry
       }
       return size;
    }
+   
+   public Set<String> getEntryNames() {
+       Set<String> names = new HashSet<String>();
+       for (String name : directory.getEntryNames()) {
+           if (!excludes.contains(name)) {
+               names.add(name);
+           }
+       }
+       return names;
+   }
 
    public boolean isEmpty() {
       return (getEntryCount() == 0);