From d14d78390fda6a8604966d596ee178966262a9bc Mon Sep 17 00:00:00 2001 From: ulrich <not disclosed> Date: Sat, 23 Dec 2017 10:05:56 +0000 Subject: [PATCH] Sortierung nach Name hinzugefuegt --- src/java/de/uhilger/filecms/pub/Catalog.java | 1 src/java/de/uhilger/filecms/pub/AbstractComparator.java | 41 +++++++++++++ src/java/de/uhilger/filecms/pub/FileDateComparator.java | 10 -- src/java/de/uhilger/filecms/pub/FileNameComparator.java | 54 ++++++++++++++++++ src/java/de/uhilger/filecms/api/FileMgr.java | 30 ++++++++++ 5 files changed, 127 insertions(+), 9 deletions(-) diff --git a/src/java/de/uhilger/filecms/api/FileMgr.java b/src/java/de/uhilger/filecms/api/FileMgr.java index f45497f..48d67b5 100644 --- a/src/java/de/uhilger/filecms/api/FileMgr.java +++ b/src/java/de/uhilger/filecms/api/FileMgr.java @@ -20,6 +20,9 @@ import de.uhilger.filecms.data.Bild; import de.uhilger.filecms.data.FileRef; +import de.uhilger.filecms.pub.AbstractComparator; +import de.uhilger.filecms.pub.FileDateComparator; +import de.uhilger.filecms.pub.FileNameComparator; import java.awt.Container; import java.awt.Image; import java.awt.MediaTracker; @@ -34,6 +37,7 @@ import java.io.Reader; import java.security.Principal; import java.util.ArrayList; +import java.util.Arrays; import java.util.Enumeration; import java.util.Iterator; import java.util.List; @@ -68,6 +72,26 @@ * @return */ public List<FileRef> list(String relPath) { + return listInt(relPath, "name", AbstractComparator.ORDER_ASC); + } + + public List<FileRef> listOrdered(String relPath, String orderBy, String order) { + return listInt(relPath, orderBy, order); + } + + /** + * Inhalte der WebBox listen. Hier wird nur der relative Pfad + * ausgehend von www oder home ausgegeben sowie zudem ausgehend + * von $daten und $basis, sofern der Benutzer die Rolle wbxAdmin hat. + * + * Andere Inhalte werden nicht ausgegeben. + * + * @param relPath + * @param orderBy 'name' + * @param order AbstractComparator.ORDER_ASC oder AbstractComparator.ORDER_DESC + * @return + */ + private List<FileRef> listInt(String relPath, String orderBy, String order) { Bild bild = new Bild(); List<FileRef> files = new ArrayList(); if(relPath.length() == 0) { @@ -90,6 +114,11 @@ File dir = new File(path); if(dir.exists()) { File[] fileArray = dir.listFiles(); + if(orderBy != null && orderBy.equalsIgnoreCase("name")) { + Arrays.sort(fileArray, new FileNameComparator(order)); + } else { + Arrays.sort(fileArray, new FileNameComparator(AbstractComparator.ORDER_ASC)); + } for(int i = 0; i < fileArray.length; i++) { logger.fine(fileArray[i].toURI().toString()); String fname = fileArray[i].toURI().toString().replace("file:/", ""); @@ -106,6 +135,7 @@ return files; } + public FileRef newFolder(String relPath, String folderName) { logger.finer(relPath); String targetPath = null; diff --git a/src/java/de/uhilger/filecms/pub/AbstractComparator.java b/src/java/de/uhilger/filecms/pub/AbstractComparator.java new file mode 100644 index 0000000..05f53c4 --- /dev/null +++ b/src/java/de/uhilger/filecms/pub/AbstractComparator.java @@ -0,0 +1,41 @@ +/* + Dateiverwaltung - File management in your browser + Copyright (C) 2017 Ulrich Hilger, http://uhilger.de + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +package de.uhilger.filecms.pub; + +import java.util.Comparator; +import java.util.logging.Logger; + +/** + * + * @author ulrich + */ +public abstract class AbstractComparator implements Comparator { + + protected static final Logger logger = Logger.getLogger(AbstractComparator.class.getName()); + + public static final String ORDER_ASC = "asc"; + public static final String ORDER_DESC = "desc"; + + protected String order; + + @Override + public abstract int compare(Object o1, Object o2); + + +} diff --git a/src/java/de/uhilger/filecms/pub/Catalog.java b/src/java/de/uhilger/filecms/pub/Catalog.java index 1bc050f..9538eee 100644 --- a/src/java/de/uhilger/filecms/pub/Catalog.java +++ b/src/java/de/uhilger/filecms/pub/Catalog.java @@ -24,7 +24,6 @@ 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; diff --git a/src/java/de/uhilger/filecms/pub/FileDateComparator.java b/src/java/de/uhilger/filecms/pub/FileDateComparator.java index f94919c..4b0b689 100644 --- a/src/java/de/uhilger/filecms/pub/FileDateComparator.java +++ b/src/java/de/uhilger/filecms/pub/FileDateComparator.java @@ -1,19 +1,13 @@ package de.uhilger.filecms.pub; import java.io.File; -import java.util.Comparator; import java.util.Date; -import java.util.logging.Logger; /** * * @author ulrich */ -public class FileDateComparator implements Comparator { - - private static final Logger logger = Logger.getLogger(FileDateComparator.class.getName()); - - private String order; +public class FileDateComparator extends AbstractComparator { public FileDateComparator(String order) { this.order = order; @@ -32,7 +26,7 @@ if(f1 != null && f2 != null) { Date l1 = new Date(f1.lastModified()); Date l2 = new Date(f2.lastModified()); - if(order != null && order.equalsIgnoreCase("asc")) { + if(order != null && order.equalsIgnoreCase(ORDER_ASC)) { if(l1.before(l2)) { logger.fine("asc: " + f1.getName() + " kleiner " + f2.getName()); return -1; diff --git a/src/java/de/uhilger/filecms/pub/FileNameComparator.java b/src/java/de/uhilger/filecms/pub/FileNameComparator.java new file mode 100644 index 0000000..22a1029 --- /dev/null +++ b/src/java/de/uhilger/filecms/pub/FileNameComparator.java @@ -0,0 +1,54 @@ +/* + Dateiverwaltung - File management in your browser + Copyright (C) 2017 Ulrich Hilger, http://uhilger.de + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +package de.uhilger.filecms.pub; + +import java.io.File; + +/** + * + * @author ulrich + */ +public class FileNameComparator extends AbstractComparator { + + public FileNameComparator(String order) { + this.order = order; + } + + @Override + public int compare(Object o1, Object o2) { + File f1 = null; + File f2 = null; + if(o1 instanceof File) { + f1 = (File) o1; + } + if(o2 instanceof File) { + f2 = (File) o2; + } + if(f1 != null && f2 != null) { + if(order != null && order.equalsIgnoreCase(ORDER_ASC)) { + return f1.getName().compareToIgnoreCase(f2.getName()); + } else { + return f2.getName().compareToIgnoreCase(f1.getName()); + } + } else { + logger.fine("f1 oder f2 null"); + return 0; + } + } +} -- Gitblit v1.9.3