Ejemplo n.º 1
0
  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;
  }