From 3d0c6d50d341c393890f54704543810563ea5eda Mon Sep 17 00:00:00 2001
From: ulrich <undisclosed>
Date: Sat, 03 Mar 2018 19:13:47 +0000
Subject: [PATCH] Bug mit relativen Pfaden entfernt

---
 src/java/de/uhilger/filecms/pub/Catalog.java |   56 ++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 40 insertions(+), 16 deletions(-)

diff --git a/src/java/de/uhilger/filecms/pub/Catalog.java b/src/java/de/uhilger/filecms/pub/Catalog.java
index b62a01a..2e8153b 100644
--- a/src/java/de/uhilger/filecms/pub/Catalog.java
+++ b/src/java/de/uhilger/filecms/pub/Catalog.java
@@ -23,6 +23,7 @@
 import de.uhilger.filecms.data.FileRef;
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.logging.Logger;
 
@@ -45,26 +46,49 @@
    * @return Liste der Dateien und Ordner am Ort relPath
    */
   public List<FileRef> list(String relPath) {
-    Bild bild = new Bild();
+    return listInt(relPath, null, null);
+  }
+  
+  /**
+   * 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) {
+    return listInt(relPath, orderBy, order);
+  }
+  
+  private List<FileRef> listInt(String relPath, String orderBy, String order) {
     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();
-      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);
+    if(!relPath.startsWith(".")) {
+      Bild bild = new Bild();
+      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));
         }
-        logger.fine(fname);
-        FileRef ref = new FileRef(fname, fileArray[i].isDirectory());
-        ref.setMimetype(bild.getMimeType(fileArray[i]));
-        files.add(ref);
+        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;
-  }
+ }
   
 }

--
Gitblit v1.9.3