Dateiverwaltung für die WebBox
ulrich
2017-08-01 5410ce4fccf2d0c91ac914f2c4ab7d93507c3960
Dateiliste geordnet nach Datum hinzugefuegt
1 files modified
1 files added
91 ■■■■■ changed files
src/java/de/uhilger/filecms/pub/Catalog.java 38 ●●●●● patch | view | raw | blame | history
src/java/de/uhilger/filecms/pub/FileDateComparator.java 53 ●●●●● patch | view | raw | blame | history
src/java/de/uhilger/filecms/pub/Catalog.java
@@ -23,6 +23,8 @@
import de.uhilger.filecms.data.FileRef;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.logging.Logger;
@@ -67,4 +69,40 @@
    return files;
  }
  
  /**
   * Inhalte der WebBox listen. Hier wird nur ausgegeben was mit
   * einer relativen Pfadangabe ausgehend von www, der oeffentlichen
   * Ablage einer WeBox, erreichbar ist.
   *
   * Andere Inhalte werden nicht ausgegeben.
   *
   * @param relPath der relative Pfad, der von www aus gelistet werden soll, ohne www
   * @return Liste der Dateien und Ordner am Ort relPath
   */
  public List<FileRef> listOrdered(String relPath, String orderBy, String order) {
    Bild bild = new Bild();
    List<FileRef> files = new ArrayList();
    StringBuffer path = new StringBuffer(PUB_DIR_PATH); // www/
    path.append(relPath);
    File dir = new File(getBase().getAbsolutePath(), path.toString());
    if(dir.exists()) {
      File[] fileArray = dir.listFiles();
      if(orderBy != null && orderBy.equalsIgnoreCase("date")) {
        Arrays.sort(fileArray, new FileDateComparator(order));
      }
      for(int i = 0; i < fileArray.length; i++) {
        logger.fine(fileArray[i].toURI().toString());
        String fname = fileArray[i].toURI().toString().replace("file:/", "");
        if(fileArray[i].isDirectory()) {
          fname = fname.substring(0, fname.length() - 1);
        }
        logger.fine(fname);
        FileRef ref = new FileRef(fname, fileArray[i].isDirectory());
        ref.setMimetype(bild.getMimeType(fileArray[i]));
        files.add(ref);
      }
    }
    return files;
  }
}
src/java/de/uhilger/filecms/pub/FileDateComparator.java
New file
@@ -0,0 +1,53 @@
package de.uhilger.filecms.pub;
import java.io.File;
import java.util.Comparator;
/**
 *
 * @author ulrich
 */
public class FileDateComparator implements Comparator {
  private String order;
  public FileDateComparator(String order) {
    this.order = order;
  }
  @Override
  public int compare(Object obj1, Object obj2) {
    File f1 = null;
    File f2 = null;
    if(obj1 instanceof File) {
      f1 = (File) obj1;
    }
    if(obj2 instanceof File) {
      f2 = (File) obj2;
    }
    if(f1 != null && f2 != null) {
      long l1 = f1.lastModified();
      long l2 = f2.lastModified();
      if(order != null && order.equalsIgnoreCase("asc")) {
          if(l1 < l2) {
            return -1;
          } else if(l2 > l1) {
            return 1;
          } else {
            return 0;
          }
      } else {
          if(l1 < l2) {
            return 1;
          } else if(l2 > l1) {
            return -1;
          } else {
            return 0;
          }
      }
    } else {
      return 0;
    }
  }
}