Class AbstractFileObject

    • Method Detail

      • doAttach

        protected void doAttach()
                         throws java.lang.Exception
        Attaches this file object to its file resource. This method is called before any of the doBlah() or onBlah() methods. Sub-classes can use this method to perform lazy initialisation.

        This implementation does nothing.

        Throws:
        java.lang.Exception
      • doDetach

        protected void doDetach()
                         throws java.lang.Exception
        Detaches this file object from its file resource.

        Called when this file is closed. Note that the file object may be reused later, so should be able to be reattached.

        This implementation does nothing.

        Throws:
        java.lang.Exception
      • doGetType

        protected abstract FileType doGetType()
                                       throws java.lang.Exception
        Determines the type of this file. Must not return null. The return value of this method is cached, so the implementation can be expensive.
        Throws:
        java.lang.Exception
      • doIsHidden

        protected boolean doIsHidden()
                              throws java.lang.Exception
        Determines if this file is hidden. Is only called if doGetType() does not return FileType.IMAGINARY.

        This implementation always returns false.

        Throws:
        java.lang.Exception
      • doIsReadable

        protected boolean doIsReadable()
                                throws java.lang.Exception
        Determines if this file can be read. Is only called if doGetType() does not return FileType.IMAGINARY.

        This implementation always returns true.

        Throws:
        java.lang.Exception
      • doIsWriteable

        protected boolean doIsWriteable()
                                 throws java.lang.Exception
        Determines if this file can be written to. Is only called if doGetType() does not return FileType.IMAGINARY.

        This implementation always returns true.

        Throws:
        java.lang.Exception
      • doListChildren

        protected abstract java.lang.String[] doListChildren()
                                                      throws java.lang.Exception
        Lists the children of this file. Is only called if doGetType() returns FileType.FOLDER. The return value of this method is cached, so the implementation can be expensive.
        Throws:
        java.lang.Exception
      • doListChildrenResolved

        protected FileObject[] doListChildrenResolved()
                                               throws java.lang.Exception
        Lists the children of this file. Is only called if doGetType() returns FileType.FOLDER. The return value of this method is cached, so the implementation can be expensive.
        Other than doListChildren you could return FileObject's to e.g. reinitialize the type of the file.
        (Introduced for Webdav: "permission denied on resource" during getType())
        Throws:
        java.lang.Exception
      • doDelete

        protected void doDelete()
                         throws java.lang.Exception
        Deletes the file. Is only called when:

        This implementation throws an exception.

        Throws:
        java.lang.Exception
      • doRename

        protected void doRename​(FileObject newfile)
                         throws java.lang.Exception
        Renames the file. Is only called when:

        This implementation throws an exception.

        Throws:
        java.lang.Exception
      • doCreateFolder

        protected void doCreateFolder()
                               throws java.lang.Exception
        Creates this file as a folder. Is only called when:

        This implementation throws an exception.

        Throws:
        java.lang.Exception
      • onChildrenChanged

        protected void onChildrenChanged​(FileName child,
                                         FileType newType)
                                  throws java.lang.Exception
        Called when the children of this file change. Allows subclasses to refresh any cached information about the children of this file.

        This implementation does nothing.

        Throws:
        java.lang.Exception
      • onChange

        protected void onChange()
                         throws java.lang.Exception
        Called when the type or content of this file changes.

        This implementation does nothing.

        Throws:
        java.lang.Exception
      • doGetLastModifiedTime

        protected long doGetLastModifiedTime()
                                      throws java.lang.Exception
        Returns the last modified time of this file. Is only called if doGetType() does not return FileType.IMAGINARY.

        This implementation throws an exception.

        Throws:
        java.lang.Exception
      • doSetLastModifiedTime

        protected void doSetLastModifiedTime​(long modtime)
                                      throws java.lang.Exception
        Sets the last modified time of this file. Is only called if doGetType() does not return FileType.IMAGINARY.

        This implementation throws an exception.

        Throws:
        java.lang.Exception
      • doGetAttributes

        protected java.util.Map doGetAttributes()
                                         throws java.lang.Exception
        Returns the attributes of this file. Is only called if doGetType() does not return FileType.IMAGINARY.

        This implementation always returns an empty map.

        Throws:
        java.lang.Exception
      • doSetAttribute

        protected void doSetAttribute​(java.lang.String atttrName,
                                      java.lang.Object value)
                               throws java.lang.Exception
        Sets an attribute of this file. Is only called if doGetType() does not return FileType.IMAGINARY.

        This implementation throws an exception.

        Throws:
        java.lang.Exception
      • doGetCertificates

        protected java.security.cert.Certificate[] doGetCertificates()
                                                              throws java.lang.Exception
        Returns the certificates used to sign this file. Is only called if doGetType() does not return FileType.IMAGINARY.

        This implementation always returns null.

        Throws:
        java.lang.Exception
      • doGetContentSize

        protected abstract long doGetContentSize()
                                          throws java.lang.Exception
        Returns the size of the file content (in bytes). Is only called if doGetType() returns FileType.FILE.
        Throws:
        java.lang.Exception
      • doGetInputStream

        protected abstract java.io.InputStream doGetInputStream()
                                                         throws java.lang.Exception
        Creates an input stream to read the file content from. Is only called if doGetType() returns FileType.FILE.

        It is guaranteed that there are no open output streams for this file when this method is called.

        The returned stream does not have to be buffered.

        Throws:
        java.lang.Exception
      • doGetRandomAccessContent

        protected RandomAccessContent doGetRandomAccessContent​(RandomAccessMode mode)
                                                        throws java.lang.Exception
        Creates access to the file for random i/o. Is only called if doGetType() returns FileType.FILE.

        It is guaranteed that there are no open output streams for this file when this method is called.

        Throws:
        java.lang.Exception
      • doGetOutputStream

        protected java.io.OutputStream doGetOutputStream​(boolean bAppend)
                                                  throws java.lang.Exception
        Creates an output stream to write the file content to. Is only called if:

        It is guaranteed that there are no open stream (input or output) for this file when this method is called.

        The returned stream does not have to be buffered.

        This implementation throws an exception.

        Throws:
        java.lang.Exception
      • toString

        public java.lang.String toString()
        Returns the URI of the file.
        Overrides:
        toString in class java.lang.Object
      • getFileSystem

        public FileSystem getFileSystem()
        Returns the file system this file belongs to.
        Specified by:
        getFileSystem in interface FileObject
        Returns:
        The file system.
      • getChildren

        public FileObject[] getChildren()
                                 throws FileSystemException
        Returns the children of the file.
        Specified by:
        getChildren in interface FileObject
        Returns:
        An array containing the children of this file. The array is unordered. If the file does not have any children, a zero-length array is returned. This method never returns null.
        Throws:
        FileSystemException - If this file does not exist, or is not a folder, or on error listing this file's children.
      • getChild

        public FileObject getChild​(java.lang.String name)
                            throws FileSystemException
        Returns a child of this file.
        Specified by:
        getChild in interface FileObject
        Parameters:
        name - The name of the child.
        Returns:
        The child, or null if there is no such child.
        Throws:
        FileSystemException - If this file does not exist, or is not a folder, or on error determining this file's children.
      • resolveFile

        public FileObject resolveFile​(java.lang.String path)
                               throws FileSystemException
        Finds a file, relative to this file.
        Specified by:
        resolveFile in interface FileObject
        Parameters:
        path - The path of the file to locate. Can either be a relative path, which is resolved relative to this file, or an absolute path, which is resolved relative to the file system that contains this file.
        Returns:
        The file.
        Throws:
        FileSystemException - On error parsing the path, or on error finding the file.
      • delete

        public boolean delete()
                       throws FileSystemException
        Deletes this file.
        Specified by:
        delete in interface FileObject
        Returns:
        true if this object has been deleted
        Throws:
        FileSystemException - If this file is a non-empty folder, or if this file is read-only, or on error deleteing this file.
      • delete

        public int delete​(FileSelector selector)
                   throws FileSystemException
        Deletes this file, and all children.
        Specified by:
        delete in interface FileObject
        Parameters:
        selector - The selector to use to select which files to delete.
        Returns:
        the number of deleted files
        Throws:
        FileSystemException - If this file or one of its descendents is read-only, or on error deleting this file or one of its descendents.
      • createFile

        public void createFile()
                        throws FileSystemException
        Creates this file, if it does not exist.
        Specified by:
        createFile in interface FileObject
        Throws:
        FileSystemException - If the file already exists with the wrong type, or the parent folder is read-only, or on error creating this file or one of its ancestors.
      • createFolder

        public void createFolder()
                          throws FileSystemException
        Creates this folder, if it does not exist. Also creates any ancestor files which do not exist.
        Specified by:
        createFolder in interface FileObject
        Throws:
        FileSystemException - If the folder already exists with the wrong type, or the parent folder is read-only, or on error creating this folder or one of its ancestors.
      • copyFrom

        public void copyFrom​(FileObject file,
                             FileSelector selector)
                      throws FileSystemException
        Copies another file to this file.
        Specified by:
        copyFrom in interface FileObject
        Parameters:
        file - The source file to copy.
        selector - The selector to use to select which files to copy.
        Throws:
        FileSystemException - If this file is read-only, or if the source file does not exist, or on error copying the file.
      • moveTo

        public void moveTo​(FileObject destFile)
                    throws FileSystemException
        Moves (rename) the file to another one
        Specified by:
        moveTo in interface FileObject
        Parameters:
        destFile - the New filename.
        Throws:
        FileSystemException - If this file is read-only, or if the source file does not exist, or on error copying the file.
      • isSameFile

        protected boolean isSameFile​(FileObject destFile)
                              throws FileSystemException
        Checks if this fileObject is the same file as destFile just with a different name.
        E.g. for case insensitive filesystems like windows.
        Throws:
        FileSystemException
      • doIsSameFile

        protected boolean doIsSameFile​(FileObject destFile)
                                throws FileSystemException
        Checks if this fileObject is the same file as destFile just with a different name.
        E.g. for case insensitive filesystems like windows.
        Throws:
        FileSystemException
      • canRenameTo

        public boolean canRenameTo​(FileObject newfile)
        Queries the object if a simple rename to the filename of newfile is possible.
        Specified by:
        canRenameTo in interface FileObject
        Parameters:
        newfile - the new filename
        Returns:
        true if rename is possible
      • getOutputStream

        public java.io.OutputStream getOutputStream()
                                             throws FileSystemException
        Prepares this file for writing. Makes sure it is either a file, or its parent folder exists. Returns an output stream to use to write the content of the file to.
        Throws:
        FileSystemException
      • getOutputStream

        public java.io.OutputStream getOutputStream​(boolean bAppend)
                                             throws FileSystemException
        Prepares this file for writing. Makes sure it is either a file, or its parent folder exists. Returns an output stream to use to write the content of the file to.
        Parameters:
        bAppend - true when append to the file.
        Note: If the underlaying filesystem do not support this, it wont work.
        Throws:
        FileSystemException
      • endOutput

        protected void endOutput()
                          throws java.lang.Exception
        Called when the ouput stream for this file is closed.
        Throws:
        java.lang.Exception
      • handleCreate

        protected void handleCreate​(FileType newType)
                             throws java.lang.Exception
        Called when this file is created. Updates cached info and notifies the parent and file system.
        Throws:
        java.lang.Exception
      • handleDelete

        protected void handleDelete()
                             throws java.lang.Exception
        Called when this file is deleted. Updates cached info and notifies subclasses, parent and file system.
        Throws:
        java.lang.Exception
      • handleChanged

        protected void handleChanged()
                              throws java.lang.Exception
        Called when this file is changed.
        This will only happen if you monitor the file using FileMonitor.
        Throws:
        java.lang.Exception
      • childrenChanged

        protected void childrenChanged()
                                throws java.lang.Exception
        Notifies the file that its children have changed.
        Throws:
        java.lang.Exception
      • childrenChanged

        protected void childrenChanged​(FileName childName,
                                       FileType newType)
                                throws java.lang.Exception
        Notifies the file that its children have changed.
        Throws:
        java.lang.Exception
      • findFiles

        public void findFiles​(FileSelector selector,
                              boolean depthwise,
                              java.util.List selected)
                       throws FileSystemException
        Traverses the descendents of this file, and builds a list of selected files.
        Specified by:
        findFiles in interface FileObject
        Parameters:
        selector - the selector used to determine if the file should be selected
        depthwise - controls the ordering in the list. e.g. deepest first
        selected - container for selected files. list needs not to be empty.
        Throws:
        FileSystemException
      • isContentOpen

        public boolean isContentOpen()
        Check if the content stream is open
        Specified by:
        isContentOpen in interface FileObject
        Returns:
        true if this is the case
      • isAttached

        public boolean isAttached()
        Check if the internal state is "attached"
        Specified by:
        isAttached in interface FileObject
        Returns:
        true if this is the case
      • getFileContentInfoFactory

        protected FileContentInfoFactory getFileContentInfoFactory()
        create the filecontentinfo implementation
      • injectType

        protected void injectType​(FileType fileType)
      • holdObject

        public void holdObject​(java.lang.Object strongRef)
        This method is meant to add a object where this object holds a strong reference then. E.g. a archive-filesystem creates a list of all childs and they shouldnt get garbage collected until the container is garbage collected
        Parameters:
        strongRef -
      • notifyAllStreamsClosed

        protected void notifyAllStreamsClosed()
        will be called after this file-object closed all its streams.
      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        Overrides:
        finalize in class java.lang.Object
        Throws:
        java.lang.Throwable