public static FsFolder createFolder( FsFolder parent, String folderName, ZipFileAndURLUnion composite, ZipEntry entry) { FsFolder folder; FsEntry elem = composite.getInstance(parent, entry); if (elem instanceof FsFolder) { folder = (FsFolder) elem; } else if (elem instanceof FsFile) { folder = null; } else { folder = new FsFolder(parent, folderName, composite, entry); } return folder; }
public static FsEntry createElement( FsFolder parent, ZipFileAndURLUnion composite, ZipEntry entry) { FsEntry element = null; String prefix = parent.getQualifiedName(); boolean directory = entry.isDirectory(); String entryName = entry.getName(); if (entryName.startsWith(prefix)) { String subEntryName = prefix; String suffix = entryName.substring(prefix.length()); StringTokenizer st = new StringTokenizer(suffix, "/"); while (st.hasMoreTokens()) { String token = st.nextToken(); String elementName = (st.hasMoreTokens() || directory) ? (token + "/") : token; subEntryName += elementName; if (st.hasMoreTokens()) { ZipEntry subEntry = composite.getEntry(subEntryName); if (subEntry == null) { int i = 0; i++; } FsEntry elem = composite.getInstance(parent, subEntry); if (elem == null) { elem = createFolder(parent, subEntryName, composite, subEntry); } if (elem instanceof FsFolder) { parent = (FsFolder) elem; } } else { // boolean directory = entry.isDirectory(); element = directory ? createFolder(parent, elementName, composite, entry) : FsFile.createFile(parent, elementName, composite, entry); } } } else { String subEntryName = ""; ; StringTokenizer st = new StringTokenizer(entryName, "/"); while (st.hasMoreTokens()) { String token = st.nextToken(); String elementName = (st.hasMoreTokens() || directory) ? (token + "/") : token; subEntryName += elementName; if (st.hasMoreTokens()) { ZipEntry subEntry = composite.getEntry(subEntryName); FsEntry elem = composite.getInstance(parent, subEntry); if (elem == null) { elem = createFolder(parent, subEntryName, composite, subEntry); } if (elem instanceof FsFolder) { parent = (FsFolder) elem; } } else { // boolean directory = entry.isDirectory(); element = directory ? createFolder(parent, elementName, composite, entry) : FsFile.createFile(parent, elementName, composite, entry); } } // end while } return element; }