@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; }
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(); }
/** * 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(); }