Class FileManager

java.lang.Object
org.jmol.viewer.FileManager
All Implemented Interfaces:
javajs.api.BytePoster

public class FileManager extends Object implements javajs.api.BytePoster
  • Field Details

    • SIMULATION_PROTOCOL

      public static String SIMULATION_PROTOCOL
    • vwr

      public Viewer vwr
    • spartanDoc

      private SpartanUtil spartanDoc
    • jzu

    • pathForAllFiles

      private String pathForAllFiles
    • nameAsGiven

      private String nameAsGiven
    • fullPathName

      private String fullPathName
    • lastFullPathName

      private String lastFullPathName
    • lastNameAsGiven

      private String lastNameAsGiven
    • fileName

      private String fileName
    • lastFileType

      private String lastFileType
    • appletDocumentBaseURL

      private URL appletDocumentBaseURL
    • appletProxy

      private String appletProxy
    • DELPHI_BINARY_MAGIC_NUMBER

      private static final String DELPHI_BINARY_MAGIC_NUMBER
      See Also:
    • PMESH_BINARY_MAGIC_NUMBER

      public static final String PMESH_BINARY_MAGIC_NUMBER
      See Also:
    • JPEG_CONTINUE_STRING

      public static final String JPEG_CONTINUE_STRING
      See Also:
    • scriptFilePrefixes

      private static String[] scriptFilePrefixes
    • cache

      private Map<String,Object> cache
    • pngjCache

      public Map<String,Object> pngjCache
    • spardirCache

      public Map<String,byte[]> spardirCache
  • Constructor Details

    • FileManager

      FileManager(Viewer vwr)
  • Method Details

    • spartanUtil

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

      public JmolUtil getJzu()
    • 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)
    • getFileType

      public String getFileType()
    • setFileType

      public void setFileType(String fileType)
    • 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)
    • newFilesReader

      private JmolFilesReaderInterface newFilesReader(String[] fullPathNames, String[] namesAsGiven, String[] fileTypes, javajs.util.DataReader[] readers, Map<String,Object> htParams, boolean isAppend)
    • 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
    • getBufferedInputStream

      BufferedInputStream getBufferedInputStream(String fullPathName)
    • getBufferedInputStreamOrErrorMessageFromName

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

      public static BufferedReader getBufferedReaderForResource(Viewer vwr, Object resourceClass, String classPath, String resourceName) throws IOException
      Throws:
      IOException
    • urlEncode

      private String urlEncode(String name)
    • 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)
    • getFileAsMap

      public Object getFileAsMap(String name, String type, boolean asBytes)
      create a PNG or ZIP file and return it as a map or, optionally, as a byte[]
      Parameters:
      name -
      type -
      asBytes - true to return byte[] instead of a map
      Returns:
      Map or byte[]
    • 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
    • getImage

      public Object getImage(Object nameOrBytes, String echoName, boolean forceSync)
    • 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)
    • fixPath

      private static String fixPath(String path)
    • getFilePath

      public String getFilePath(String name, boolean addUrlPrefix, boolean asShortName)
    • getLocalDirectory

      public static GenericFileInterface getLocalDirectory(Viewer vwr, boolean forDialog)
    • 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)
    • isScriptType

      public static boolean isScriptType(String fname)
    • determineSurfaceFileType

      public static String determineSurfaceFileType(BufferedReader bufferedReader)
      Try to determine a surface file type based on its header. Also identifies Menu files.
      Parameters:
      bufferedReader -
      Returns:
      file type
    • 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
    • getFileReferences

      public static void getFileReferences(String script, javajs.util.Lst<String> fileList, javajs.util.Lst<String> fileListUTF)
    • 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
    • cachePut

      void cachePut(String key, Object data)
    • cacheGet

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

      void cacheClear()
    • cacheFileByNameAdd

      public int cacheFileByNameAdd(String fileName, boolean isAdd)
    • cacheList

      public Map<String,Integer> cacheList()
    • 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
    • isJmolType

      public static boolean isJmolType(String type)
      Check to see if this is a Jmol WRITE file type that might be or have attached a ZIP collection .
      Parameters:
      type - the
      Returns:
      true if PNG, PNGJ, JMOL, ZIP, or ZIPALL
    • isEmbeddable

      public static boolean isEmbeddable(String type)
      Check to see if it is possible that this file has been embedded by Jmol using JC.EMBEDDED_SCRIPT_TAG. This includes all Jmol types, JPEG images, and export types POV, POVRAY, and IDTF
      Parameters:
      type - raw extension or file name
      Returns:
      true if this file might contain an embedded script
    • getEmbeddedFileState

      public String getEmbeddedFileState(String fileName, boolean allowCached, String sptName)
      Get the specified SPT file of a Jmol zip collection or the embedded script for any other file that is embeddable.
      Parameters:
      fileName -
      allowCached -
      sptName - state.spt, movie.spt, or null
      Returns:
      embedded state.spt, movie.spt, or a script embedded using JC.EMBEDDED_SCRIPT_TAG, or "" if not found.
    • stripTypePrefix

      public static String stripTypePrefix(String fileName)
      Stip PDB::file://... from a file name
      Parameters:
      fileName -
      Returns:
      stripped name
    • getEmbeddedScript

      public static String getEmbeddedScript(String s)
      Extract a Jmol script embedded using JC.EMBEDDED_SCRIPT_TAG.
      Parameters:
      s -
      Returns:
      the embedded script or null
    • isZipStream

      public boolean isZipStream(Object br)