From 5410ce4fccf2d0c91ac914f2c4ab7d93507c3960 Mon Sep 17 00:00:00 2001
From: ulrich <undisclosed>
Date: Tue, 01 Aug 2017 12:23:59 +0000
Subject: [PATCH] Dateiliste geordnet nach Datum hinzugefuegt

---
 src/java/de/uhilger/filecms/pub/Catalog.java            |   38 +++++++++++++++++++
 src/java/de/uhilger/filecms/pub/FileDateComparator.java |   53 ++++++++++++++++++++++++++
 2 files changed, 91 insertions(+), 0 deletions(-)

diff --git a/src/java/de/uhilger/filecms/pub/Catalog.java b/src/java/de/uhilger/filecms/pub/Catalog.java
index b62a01a..c7db6c4 100644
--- a/src/java/de/uhilger/filecms/pub/Catalog.java
+++ b/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;
+  }
+  
 }
diff --git a/src/java/de/uhilger/filecms/pub/FileDateComparator.java b/src/java/de/uhilger/filecms/pub/FileDateComparator.java
new file mode 100644
index 0000000..2413790
--- /dev/null
+++ b/src/java/de/uhilger/filecms/pub/FileDateComparator.java
@@ -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;
+    }
+  }
+  
+}

--
Gitblit v1.9.3