Class FileManager

  • All Implemented Interfaces:
    javajs.api.BytePoster

    public class FileManager
    extends Object
    implements javajs.api.BytePoster
    • Constructor Detail

      • FileManager

        FileManager​(Viewer vwr)
    • Method Detail

      • spartanUtil

        public SpartanUtil spartanUtil()
        An isolated class to retrieve Spartan file data from compound documents, zip files, and directories
        Returns:
        a SpartanUtil
      • clear

        void clear()
      • setLoadState

        private void setLoadState​(Map<String,​Object> htParams)
      • getPathForAllFiles

        public String getPathForAllFiles()
      • setPathForAllFiles

        String setPathForAllFiles​(String value)
      • setFileInfo

        public void setFileInfo​(String[] fileInfo)
        Set fullPathName, fileName, and nameAsGiven
        Parameters:
        fileInfo - if null, replace fullPathName and nameAsGiven with last version of such
      • getFileInfo

        public String[] getFileInfo()
      • getFullPathName

        public String getFullPathName​(boolean orPrevious)
      • getFileName

        public String getFileName()
      • getAppletDocumentBase

        String getAppletDocumentBase()
      • setAppletContext

        void setAppletContext​(String documentBase)
      • setAppletProxy

        void setAppletProxy​(String appletProxy)
      • createAtomSetCollectionFromFile

        Object createAtomSetCollectionFromFile​(String name,
                                               Map<String,​Object> htParams,
                                               boolean isAppend)
      • createAtomSetCollectionFromFiles

        Object createAtomSetCollectionFromFiles​(String[] fileNames,
                                                Map<String,​Object> htParams,
                                                boolean isAppend)
      • createAtomSetCollectionFromString

        Object createAtomSetCollectionFromString​(String strModel,
                                                 Map<String,​Object> htParams,
                                                 boolean isAppend)
      • createAtomSeCollectionFromStrings

        Object createAtomSeCollectionFromStrings​(String[] arrayModels,
                                                 javajs.util.SB loadScript,
                                                 Map<String,​Object> htParams,
                                                 boolean isAppend)
      • createAtomSeCollectionFromArrayData

        Object createAtomSeCollectionFromArrayData​(javajs.util.Lst<Object> arrayData,
                                                   Map<String,​Object> htParams,
                                                   boolean isAppend)
      • newDataReader

        static javajs.util.DataReader newDataReader​(Viewer vwr,
                                                    Object data)
      • createAtomSetCollectionFromReader

        Object createAtomSetCollectionFromReader​(String fullPathName,
                                                 String name,
                                                 Object reader,
                                                 Map<String,​Object> htParams)
        not used in Jmol project -- will close reader
        Parameters:
        fullPathName -
        name -
        reader - could be a Reader, or a BufferedInputStream or byte[]
        htParams -
        Returns:
        fileData
      • getBufferedInputStreamOrErrorMessageFromName

        public Object getBufferedInputStreamOrErrorMessageFromName​(String name,
                                                                   String fullName,
                                                                   boolean showMsg,
                                                                   boolean checkOnly,
                                                                   byte[] outputBytes,
                                                                   boolean allowReader,
                                                                   boolean allowCached)
      • getEmbeddedFileState

        public String getEmbeddedFileState​(String fileName,
                                           boolean allowCached,
                                           String sptName)
      • getFullPathNameOrError

        Object getFullPathNameOrError​(String filename,
                                      boolean getStream,
                                      String[] ret)
        just check for a file as being readable. Do not go into a zip file
        Parameters:
        filename -
        getStream -
        ret -
        Returns:
        String[2] where [0] is fullpathname and [1] is error message or null
      • getBufferedReaderOrErrorMessageFromName

        public Object getBufferedReaderOrErrorMessageFromName​(String name,
                                                              String[] fullPathNameReturn,
                                                              boolean isBinary,
                                                              boolean doSpecialLoad)
      • getUnzippedReaderOrStreamFromName

        public Object getUnzippedReaderOrStreamFromName​(String name,
                                                        Object bytesOrStream,
                                                        boolean allowZipStream,
                                                        boolean forceInputStream,
                                                        boolean isTypeCheckOnly,
                                                        boolean doSpecialLoad,
                                                        Map<String,​Object> htParams)
        Parameters:
        name -
        bytesOrStream - cached bytes or a BufferedInputStream
        allowZipStream - if the file is a zip file, allow a return that is a ZipInputStream
        forceInputStream - always return a raw BufferedInputStream, not a BufferedReader, and do not process PNGJ files
        isTypeCheckOnly - when possibly reading a spartan file for content (doSpecialLoad == true), just return the compound document's file list
        doSpecialLoad - check for a Spartan file
        htParams -
        Returns:
        String if error or String[] if a type check or BufferedReader or BufferedInputStream
      • getZipDirectory

        public String[] getZipDirectory​(String fileName,
                                        boolean addManifest,
                                        boolean allowCached)
        Parameters:
        fileName -
        addManifest -
        allowCached -
        Returns:
        [] if not a zip file;
      • getFileAsBytes

        public Object getFileAsBytes​(String name,
                                     javajs.util.OC out)
      • getFileDataAsString

        public boolean getFileDataAsString​(String[] data,
                                           int nBytesMax,
                                           boolean doSpecialLoad,
                                           boolean allowBinary,
                                           boolean checkProtected)
        Parameters:
        data - [0] initially path name, but returned as full path name; [1]file contents (directory listing for a ZIP/JAR file) or error string
        nBytesMax - or -1
        doSpecialLoad -
        allowBinary -
        checkProtected - TODO
        Returns:
        true if successful; false on error
      • checkSecurity

        private boolean checkSecurity​(String f)
      • loadImage

        public boolean loadImage​(Object nameOrBytes,
                                 String echoName,
                                 boolean forceSync)
        Load an image
        Parameters:
        nameOrBytes -
        echoName -
        forceSync - TODO
        Returns:
        true if asynchronous
      • getClassifiedName

        private String[] getClassifiedName​(String name,
                                           boolean isFullLoad)
        [0] and [2] may return same as [1] in the case of a local unsigned applet.
        Parameters:
        name -
        isFullLoad - false only when just checking path
        Returns:
        [0] full path name, [1] file name without path, [2] full URL
      • addDirectory

        private static String addDirectory​(String defaultDirectory,
                                           String name)
      • getDefaultDirectory

        String getDefaultDirectory​(String name)
      • getFilePath

        public String getFilePath​(String name,
                                  boolean addUrlPrefix,
                                  boolean asShortName)
      • setLocalPath

        public static void setLocalPath​(Viewer vwr,
                                        String path,
                                        boolean forDialog)
        called by getImageFileNameFromDialog called by getOpenFileNameFromDialog called by getSaveFileNameFromDialog called by classifyName for any full file load called from the CD command currentLocalPath is set in all cases and is used specifically for dialogs as a first try defaultDirectoryLocal is set only when not from a dialog and is used only in getLocalPathForWritingFile or from an open/save dialog. In this way, saving a file from a dialog doesn't change the "CD" directory. Neither of these is saved in the state, but
        Parameters:
        vwr -
        path -
        forDialog -
      • getLocalPathForWritingFile

        public static String getLocalPathForWritingFile​(Viewer vwr,
                                                        String file)
      • fixDOSName

        public static String fixDOSName​(String fileName)
        Switch \ for / only for DOS names such as C:\temp\t.xyz, not names like http://cactus.nci.nih.gov/chemical/structure/CC/C=C\CC
        Parameters:
        fileName -
        Returns:
        fixed name
      • stripPath

        public static String stripPath​(String name)
      • determineSurfaceTypeIs

        public static String determineSurfaceTypeIs​(InputStream is)
      • isScriptType

        public static boolean isScriptType​(String fname)
      • isSurfaceType

        public static boolean isSurfaceType​(String fname)
      • determineSurfaceFileType

        public static String determineSurfaceFileType​(BufferedReader bufferedReader)
      • getManifestScriptPath

        public static String getManifestScriptPath​(String manifest)
        check a JmolManifest for a reference to a script file (.spt)
        Parameters:
        manifest -
        Returns:
        null, "", or a directory entry in the ZIP file
      • getEmbeddedScript

        public static String getEmbeddedScript​(String script)
      • getFileReferences

        public static void getFileReferences​(String script,
                                             javajs.util.Lst<String> fileList)
      • setScriptFileReferences

        public static String setScriptFileReferences​(String script,
                                                     String localPath,
                                                     String remotePath,
                                                     String scriptPath)
      • setScriptFileRefs

        private static String setScriptFileRefs​(String script,
                                                String dataPath,
                                                boolean isLocal)
        Sets all local file references in a script file to point to files within dataPath. If a file reference contains dataPath, then the file reference is left with that RELATIVE path. Otherwise, it is changed to a relative file name within that dataPath. Only file references starting with "file://" are changed.
        Parameters:
        script -
        dataPath -
        isLocal -
        Returns:
        revised script
      • cacheGet

        public Object cacheGet​(String key,
                               boolean bytesOnly)
      • cacheClear

        void cacheClear()
      • cacheFileByNameAdd

        public int cacheFileByNameAdd​(String fileName,
                                      boolean isAdd)
      • getCanonicalName

        public String getCanonicalName​(String pathName)
      • recachePngjBytes

        public void recachePngjBytes​(String fileName,
                                     byte[] bytes)
      • getPngjOrDroppedBytes

        private byte[] getPngjOrDroppedBytes​(String fullName,
                                             String name)
      • getCachedPngjBytes

        private byte[] getCachedPngjBytes​(String pathName)
      • postByteArray

        public String postByteArray​(String fileName,
                                    byte[] bytes)
        Specified by:
        postByteArray in interface javajs.api.BytePoster