Class DirectoryNode

java.lang.Object
org.docx4j.org.apache.poi.poifs.filesystem.EntryNode
org.docx4j.org.apache.poi.poifs.filesystem.DirectoryNode
All Implemented Interfaces:
java.lang.Iterable<Entry>, POIFSViewable, DirectoryEntry, Entry

public class DirectoryNode
extends EntryNode
implements DirectoryEntry, POIFSViewable, java.lang.Iterable<Entry>
Simple implementation of DirectoryEntry
  • Method Details

    • getPath

      public POIFSDocumentPath getPath()
      Returns:
      this directory's path representation
    • getFileSystem

      public NPOIFSFileSystem getFileSystem()
      Returns:
      the filesystem that this belongs to
    • getOFileSystem

      public OPOIFSFileSystem getOFileSystem()
      If this is OPOIFS based, return the NPOIFSFileSystem that this belong to, otherwise Null if NPOIFS based
      Returns:
      the filesystem that this belongs to
    • getNFileSystem

      public NPOIFSFileSystem getNFileSystem()
      If this is NPOIFS based, return the NPOIFSFileSystem that this belong to, otherwise Null if OPOIFS based
      Returns:
      the filesystem that this belongs to
    • createDocumentInputStream

      public DocumentInputStream createDocumentInputStream​(java.lang.String documentName) throws java.io.IOException
      open a document in the directory's entry's list of entries
      Parameters:
      documentName - the name of the document to be opened
      Returns:
      a newly opened DocumentInputStream
      Throws:
      java.io.IOException - if the document does not exist or the name is that of a DirectoryEntry
    • createDocumentInputStream

      public DocumentInputStream createDocumentInputStream​(Entry document) throws java.io.IOException
      open a document in the directory's entry's list of entries
      Parameters:
      document - the document to be opened
      Returns:
      a newly opened DocumentInputStream or NDocumentInputStream
      Throws:
      java.io.IOException - if the document does not exist or the name is that of a DirectoryEntry
    • getEntries

      public java.util.Iterator<Entry> getEntries()
      get an iterator of the Entry instances contained directly in this instance (in other words, children only; no grandchildren etc.)
      Specified by:
      getEntries in interface DirectoryEntry
      Returns:
      iterator; never null, but hasNext() may return false immediately (i.e., this DirectoryEntry is empty). All objects retrieved by next() are guaranteed to be implementations of Entry.
    • getEntryNames

      public java.util.Set<java.lang.String> getEntryNames()
      get the names of all the Entries contained directly in this instance (in other words, names of children only; no grandchildren etc).
      Specified by:
      getEntryNames in interface DirectoryEntry
      Returns:
      the names of all the entries that may be retrieved with getEntry(String), which may be empty (if this DirectoryEntry is empty)
    • isEmpty

      public boolean isEmpty()
      is this DirectoryEntry empty?
      Specified by:
      isEmpty in interface DirectoryEntry
      Returns:
      true if this instance contains no Entry instances
    • getEntryCount

      public int getEntryCount()
      find out how many Entry instances are contained directly within this DirectoryEntry
      Specified by:
      getEntryCount in interface DirectoryEntry
      Returns:
      number of immediately (no grandchildren etc.) contained Entry instances
    • hasEntry

      public boolean hasEntry​(java.lang.String name)
      Description copied from interface: DirectoryEntry
      Checks if entry with specified name present
      Specified by:
      hasEntry in interface DirectoryEntry
    • getEntry

      public Entry getEntry​(java.lang.String name) throws java.io.FileNotFoundException
      get a specified Entry by name
      Specified by:
      getEntry in interface DirectoryEntry
      Parameters:
      name - the name of the Entry to obtain.
      Returns:
      the specified Entry, if it is directly contained in this DirectoryEntry
      Throws:
      java.io.FileNotFoundException - if no Entry with the specified name exists in this DirectoryEntry
    • createDocument

      public DocumentEntry createDocument​(java.lang.String name, java.io.InputStream stream) throws java.io.IOException
      create a new DocumentEntry
      Specified by:
      createDocument in interface DirectoryEntry
      Parameters:
      name - the name of the new DocumentEntry
      stream - the InputStream from which to create the new DocumentEntry
      Returns:
      the new DocumentEntry
      Throws:
      java.io.IOException
    • createDocument

      public DocumentEntry createDocument​(java.lang.String name, int size, POIFSWriterListener writer) throws java.io.IOException
      create a new DocumentEntry; the data will be provided later
      Specified by:
      createDocument in interface DirectoryEntry
      Parameters:
      name - the name of the new DocumentEntry
      size - the size of the new DocumentEntry
      writer - the writer of the new DocumentEntry
      Returns:
      the new DocumentEntry
      Throws:
      java.io.IOException
    • createDirectory

      public DirectoryEntry createDirectory​(java.lang.String name) throws java.io.IOException
      create a new DirectoryEntry
      Specified by:
      createDirectory in interface DirectoryEntry
      Parameters:
      name - the name of the new DirectoryEntry
      Returns:
      the new DirectoryEntry
      Throws:
      java.io.IOException
    • getStorageClsid

      public ClassID getStorageClsid()
      Gets the storage clsid of the directory entry
      Specified by:
      getStorageClsid in interface DirectoryEntry
      Returns:
      storage Class ID
    • setStorageClsid

      public void setStorageClsid​(ClassID clsidStorage)
      Sets the storage clsid for the directory entry
      Specified by:
      setStorageClsid in interface DirectoryEntry
      Parameters:
      clsidStorage - storage Class ID
    • isDirectoryEntry

      public boolean isDirectoryEntry()
      is this a DirectoryEntry?
      Specified by:
      isDirectoryEntry in interface Entry
      Overrides:
      isDirectoryEntry in class EntryNode
      Returns:
      true if the Entry is a DirectoryEntry, else false
    • isDeleteOK

      protected boolean isDeleteOK()
      extensions use this method to verify internal rules regarding deletion of the underlying store.
      Specified by:
      isDeleteOK in class EntryNode
      Returns:
      true if it's ok to delete the underlying store, else false
    • getViewableArray

      public java.lang.Object[] getViewableArray()
      Get an array of objects, some of which may implement POIFSViewable
      Specified by:
      getViewableArray in interface POIFSViewable
      Returns:
      an array of Object; may not be null, but may be empty
    • getViewableIterator

      public java.util.Iterator<java.lang.Object> getViewableIterator()
      Get an Iterator of objects, some of which may implement POIFSViewable
      Specified by:
      getViewableIterator in interface POIFSViewable
      Returns:
      an Iterator; may not be null, but may have an empty back end store
    • preferArray

      public boolean preferArray()
      Give viewers a hint as to whether to call getViewableArray or getViewableIterator
      Specified by:
      preferArray in interface POIFSViewable
      Returns:
      true if a viewer should call getViewableArray, false if a viewer should call getViewableIterator
    • getShortDescription

      public java.lang.String getShortDescription()
      Provides a short description of the object, to be used when a POIFSViewable object has not provided its contents.
      Specified by:
      getShortDescription in interface POIFSViewable
      Returns:
      short description
    • iterator

      public java.util.Iterator<Entry> iterator()
      Returns an Iterator over all the entries
      Specified by:
      iterator in interface java.lang.Iterable<Entry>