Class WSFileProvider


  • public class WSFileProvider
    extends java.lang.Object
    The class is used to provide files to the web server for various contexts:
    • Server session,
    • Per application (and version),
    • Per user (all sessions),
    • Per application session (on user basis),
    • Per client session.

    The server places these files in subdirectories in the file provider directory configured for the server (default "wsfiles" in ServerSettings.DEFAULT_FILE_PROVIDER_ROOT).

    Author:
    Christopher Mindus
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean deleteAllFiles​(java.util.Map<java.io.File,​java.io.IOException> errorsMap)
      Deletes all the files.
      boolean deleteAllFiles​(java.util.Map<java.io.File,​java.io.IOException> errorsMap, boolean logErrors)
      Deletes all the files.
      void dispose​(boolean doDeleteAllFiles, boolean throwError)
      Disposes of the file provider and optionally deletes all files from its root.
      void disposeNoThrow​(boolean doDeleteAllFiles)
      Disposes of the file provider and optionally deletes all files from its root.
      void downloadFiles​(AppSessionGyro appGyro, WSFileDownload[] files, java.lang.Runnable completed)
      Downloads the collection of files.
      WSFile getFileFromFileName​(java.lang.String fileName)
      Gets a WSFile from a file name that is located inside the root of the provider.
      java.io.File getRoot()
      Gets the root directory.
      URNResourceType getType()
      Returns the file type.
      java.lang.String getURLPath()
      Gets the URL path to the provider in the web server.
      boolean isDisposed()
      Checks if the provider is disposed of.
      WSFile reserveFile​(java.io.File file, java.lang.String descr, java.lang.Object id)
      Reserves an existing file on disk, i.e.
      java.lang.String toString()
      Gets the debug information string.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Method Detail

      • getRoot

        public java.io.File getRoot()
                             throws java.io.IOException
        Gets the root directory.
        Returns:
        The canonical root directory.
        Throws:
        java.io.IOException - If the root doesn't exist anymore or the provider is disposed of, or if the root doesn't exist and the directory cannot be created.
      • isDisposed

        public boolean isDisposed()
        Checks if the provider is disposed of.
        Returns:
        true if disposed, false otherwise.
      • deleteAllFiles

        public boolean deleteAllFiles​(java.util.Map<java.io.File,​java.io.IOException> errorsMap)
                               throws java.io.IOException
        Deletes all the files.
        Parameters:
        errorsMap - Error map that is filled in for unsuccessful operations, null for none.
        Returns:
        The success flag.
        Throws:
        java.io.IOException - If the errorMap is null and an exception deleting a file occurs.
      • deleteAllFiles

        public boolean deleteAllFiles​(java.util.Map<java.io.File,​java.io.IOException> errorsMap,
                                      boolean logErrors)
                               throws java.io.IOException
        Deletes all the files.
        Parameters:
        errorsMap - Error map that is filled in for unsuccessful operations, null for none.
        logErrors - Flag to log all errors.
        Returns:
        The success flag.
        Throws:
        java.io.IOException - If the errorMap is null and an exception deleting a file occurs.
      • disposeNoThrow

        public void disposeNoThrow​(boolean doDeleteAllFiles)
        Disposes of the file provider and optionally deletes all files from its root. If already disposed of, nothing will happen.
        Parameters:
        doDeleteAllFiles - Flag to delete all files.
      • dispose

        public void dispose​(boolean doDeleteAllFiles,
                            boolean throwError)
                     throws java.io.IOException
        Disposes of the file provider and optionally deletes all files from its root. If already disposed of, nothing will happen.
        Parameters:
        doDeleteAllFiles - Flag to delete all files.
        throwError - Flag to throw an error for failures, otherwise it is logged in the server.
        Throws:
        java.io.IOException - Upon delete failures and throwError is true.
      • downloadFiles

        public void downloadFiles​(AppSessionGyro appGyro,
                                  WSFileDownload[] files,
                                  java.lang.Runnable completed)
        Downloads the collection of files. Once all downloads a completed, the callback is invoked. If the application session is disposed of, the callback is not called.
        Parameters:
        appGyro - The application session gyro, or null for system.
        files - The array of files to download. The results are placed in the respective instances.
        completed - Callback invoked upon completion of the downloads (with error or not).
      • reserveFile

        public WSFile reserveFile​(java.io.File file,
                                  java.lang.String descr,
                                  java.lang.Object id)
                           throws NotFoundException,
                                  java.lang.IllegalArgumentException,
                                  java.io.IOException
        Reserves an existing file on disk, i.e. inside the root. If the file already is reserved, the previous WSFile instance is returned and no new reservation is done.
        Parameters:
        file - The file.
        descr - The description.
        id - When a backing database is used, specify the user or group identifier as a Long, the Application ID as a String, or null when there is no special identifier, i.e. for global files.
        Returns:
        A new WSFile instance with a reserved name.
        Throws:
        NotFoundException - If the file doesn't exist.
        java.lang.IllegalArgumentException - If the file parent is not this providers root directory, or if the ID does not match the database ID type (Long or String).
        java.io.IOException - For read errors of the file, or if the filename is not "compatible" with the database table.
      • getURLPath

        public java.lang.String getURLPath()
        Gets the URL path to the provider in the web server.
        Returns:
        The path on the web server, starting and ending with '/'.
      • getFileFromFileName

        public WSFile getFileFromFileName​(java.lang.String fileName)
        Gets a WSFile from a file name that is located inside the root of the provider.
        Parameters:
        fileName - The file name to look up.
        Returns:
        The WSFile instance, or null if not found.
      • toString

        public java.lang.String toString()
        Gets the debug information string.
        Overrides:
        toString in class java.lang.Object
        Returns:
        Used for logging, etc.