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