Example #1
0
  public static UniFile getGalleryDownloadDir(GalleryInfo galleryInfo) {
    UniFile dir = Settings.getDownloadLocation();
    if (dir != null) {
      // Read from DB
      String dirname = EhDB.getDownloadDirname(galleryInfo.gid);
      if (null != dirname) {
        // Some dirname may be invalid in some version
        dirname = FileUtils.sanitizeFilename(dirname);
        EhDB.putDownloadDirname(galleryInfo.gid, dirname);
      }

      // Find it
      if (null == dirname) {
        UniFile[] files = dir.listFiles(new StartWithFilenameFilter(galleryInfo.gid + "-"));
        if (null != files) {
          // Get max-length-name dir
          int maxLength = -1;
          for (UniFile file : files) {
            if (file.isDirectory()) {
              String name = file.getName();
              int length = name.length();
              if (length > maxLength) {
                maxLength = length;
                dirname = name;
              }
            }
          }
          if (null != dirname) {
            EhDB.putDownloadDirname(galleryInfo.gid, dirname);
          }
        }
      }

      // Create it
      if (null == dirname) {
        dirname =
            FileUtils.sanitizeFilename(
                galleryInfo.gid + "-" + EhUtils.getSuitableTitle(galleryInfo));
        EhDB.putDownloadDirname(galleryInfo.gid, dirname);
      }

      return dir.subFile(dirname);
    } else {
      return null;
    }
  }