Exemplo n.º 1
0
 @Override
 public SB getAllDataFiles(String binaryFileList, String firstFile) {
   if (firstFile != null) {
     for (int i = 0; i < directory.size(); i++) {
       CompoundDocDirEntry thisEntry = directory.get(i);
       if (thisEntry.entryName.equals(firstFile)) {
         directory.remove(i);
         directory.add(1, thisEntry); // after ROOT_ENTRY
         break;
       }
     }
   }
   data = new SB();
   data.append("Compound Document File Directory: ");
   data.append(getDirectoryListing("|"));
   data.append("\n");
   binaryFileList = "|" + binaryFileList + "|";
   for (int i = 0; i < directory.size(); i++) {
     CompoundDocDirEntry thisEntry = directory.get(i);
     Logger.info("reading " + thisEntry.entryName);
     if (!thisEntry.isEmpty && thisEntry.entryType != 5) {
       String name = thisEntry.entryName;
       if (name.endsWith(".gz")) name = name.substring(0, name.length() - 3);
       data.append("BEGIN Directory Entry ").append(name).append("\n");
       data.appendSB(
           getEntryAsString(
               thisEntry, binaryFileList.indexOf("|" + thisEntry.entryName + "|") >= 0));
       data.append("\n");
       data.append("END Directory Entry ").append(thisEntry.entryName).append("\n");
     }
   }
   close();
   return data;
 }
Exemplo n.º 2
0
 Object createAtomSeCollectionFromStrings(
     String[] arrayModels, SB loadScript, Map<String, Object> htParams, boolean isAppend) {
   if (!htParams.containsKey("isData")) {
     String oldSep = "\"" + viewer.getDataSeparator() + "\"";
     String tag = "\"" + (isAppend ? "append" : "model") + " inline\"";
     SB sb = new SB();
     sb.append("set dataSeparator \"~~~next file~~~\";\ndata ").append(tag);
     for (int i = 0; i < arrayModels.length; i++) {
       if (i > 0) sb.append("~~~next file~~~");
       sb.append(arrayModels[i]);
     }
     sb.append("end ").append(tag).append(";set dataSeparator ").append(oldSep);
     loadScript.appendSB(sb);
   }
   setLoadState(htParams);
   Logger.info("FileManager.getAtomSetCollectionFromStrings(string[])");
   String[] fullPathNames = new String[arrayModels.length];
   DataReader[] readers = new DataReader[arrayModels.length];
   for (int i = 0; i < arrayModels.length; i++) {
     fullPathNames[i] = "string[" + i + "]";
     readers[i] = newDataReader(arrayModels[i]);
   }
   JmolFilesReaderInterface filesReader =
       newFilesReader(fullPathNames, fullPathNames, null, readers, htParams, isAppend);
   filesReader.run();
   return filesReader.getAtomSetCollection();
 }
Exemplo n.º 3
0
 /**
  * reads a compound document directory and saves all data in a Hashtable so that the files may be
  * organized later in a different order. Also adds a #Directory_Listing entry.
  *
  * <p>Files are bracketed by BEGIN Directory Entry and END Directory Entry lines, similar to
  * ZipUtil.getAllData.
  *
  * @param prefix
  * @param binaryFileList |-separated list of files that should be saved as xx xx xx hex byte
  *     strings. The directory listing is appended with ":asBinaryString"
  * @param fileData
  */
 @Override
 public void getAllDataMapped(String prefix, String binaryFileList, Map<String, String> fileData) {
   fileData.put("#Directory_Listing", getDirectoryListing("|"));
   binaryFileList = "|" + binaryFileList + "|";
   for (int i = 0; i < directory.size(); i++) {
     CompoundDocDirEntry thisEntry = directory.get(i);
     if (!thisEntry.isEmpty && thisEntry.entryType != 5) {
       String name = thisEntry.entryName;
       Logger.info("CompoundDocument file " + name);
       boolean isBinary = (binaryFileList.indexOf("|" + name + "|") >= 0);
       if (isBinary) name += ":asBinaryString";
       SB data = new SB();
       data.append("BEGIN Directory Entry ").append(name).append("\n");
       data.appendSB(getEntryAsString(thisEntry, isBinary));
       data.append("\nEND Directory Entry ").append(name).append("\n");
       fileData.put(prefix + "/" + name, data.toString());
     }
   }
   close();
 }