/* 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 . */ package de.uhilger.filecms.pub; import de.uhilger.filecms.api.Api; import de.uhilger.wbx.Bild; 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; /** * Methoden zur Arbeit mit Inhalten in der oeffentlichen * Ablage einer WebBox */ public class Catalog extends Api { private static final Logger logger = Logger.getLogger(Catalog.class.getName()); /** * 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 list(String relPath) { 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 listOrdered(String relPath, String orderBy, String order) { return listInt(relPath, orderBy, order); } private List listInt(String relPath, String orderBy, String order) { List files = new ArrayList(); 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)); } 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; } }