Klassenbiliothek fuer Dateiverwaltung
ulrich
20 hours ago ae2c6967c551cdc3783b8431a3bf615b833f1c12
commit | author | age
e369b9 1 /*
c45b52 2   fm - File management class library
e369b9 3   Copyright (C) 2024  Ulrich Hilger
U 4
5   This program is free software: you can redistribute it and/or modify
6   it under the terms of the GNU Affero General Public License as
7   published by the Free Software Foundation, either version 3 of the
8   License, or (at your option) any later version.
9
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU Affero General Public License for more details.
14
15   You should have received a copy of the GNU Affero General Public License
16   along with this program.  If not, see <https://www.gnu.org/licenses/>.
17  */
18 package de.uhilger.fm;
19
20 import com.google.gson.Gson;
21 import java.io.File;
22 import java.io.IOException;
23 import java.util.ArrayList;
24 import java.util.Arrays;
25
26
27 /**
28  * Eine Klasse zur Bildung einer Liste mit den Dateien eines Verzeichnisses.
29  * 
30  * Varianten von Bilddateien werden ausgeblendet. Enthaelt ein Ordner die Dateien 
d618b8 31  * 
U 32  * <pre>
e369b9 33  * mein-bild.jpg
U 34  * mein-bild_tn.jpg
35  * mein-bild_kl.jpg
d618b8 36  * </pre>
e369b9 37  * 
d618b8 38  * erscheint nur die Datei mein-bild.jpg in der Liste.
e369b9 39  * 
U 40  * @author Ulrich Hilger
41  * @version 0.1, 05.11.2024
42  */
8bde6f 43 public class Catalog {
e369b9 44
d618b8 45   private static final String STR_DOT = ".";
e369b9 46
269203 47   /**
d618b8 48    * Eine Liste des Inhalts eines Ordners erstellen
269203 49    * 
8bde6f 50    * @param relPathAndName Name und relativer Pfad des Ordners, dessen Inhalt aufgelistet werden soll
U 51    * @param urlBase  Kontext Pfad zur Bildung des URL fuer Miniaturansicht und imgsrc bei Bilddateien
269203 52    * (koennte evtl. im Client gebildet werden, hier dann nur Mini-Dateiname zurueckgeben)
U 53    * @param base  Basisverzeichnis, gegen das der relative Pfad aufgeloest werden soll
54    * @return die Dateiliste als JSON String
55    * @throws IOException 
56    */
8bde6f 57   public String list(String relPathAndName, String urlBase, String base) throws IOException {
U 58     File[] files = new File(base, relPathAndName).listFiles(new ImageFileFilter());
e369b9 59     if (files != null && files.length > 0) {
U 60       Arrays.sort(files);
61       ArrayList liste = new ArrayList();
62       for (File file : files) {
8bde6f 63         FileRef datei = new FileRef();
e369b9 64         String dateiName = file.getName();
U 65         datei.setName(dateiName);
66         if (file.isDirectory()) {
8bde6f 67           datei.setTyp(FileRef.TYP_ORDNER);
e369b9 68         } else {
8bde6f 69           datei.setTyp(FileRef.TYP_DATEI);
e369b9 70         }
U 71         String lowerName = dateiName.toLowerCase();
973951 72         if (lowerName.endsWith(ImageFileFilter.JPEG)
U 73                 || lowerName.endsWith(ImageFileFilter.JPG)
74                 || lowerName.endsWith(ImageFileFilter.PNG)) {
e369b9 75           datei.setBild(true);
U 76           String ext = dateiName.substring(dateiName.lastIndexOf(STR_DOT));
77           String ohneExt = dateiName.substring(0, dateiName.lastIndexOf(STR_DOT));
8bde6f 78           datei.setMiniurl(urlBase + /*"/" + */ relPathAndName + ohneExt + ImageFileFilter.TN + ext);
e369b9 79           //buildImgSrc(file, datei, ohneExt, ext);
U 80         }
81         liste.add(datei);
82       }
83       //while(threadCount > 0) {
84       //  try {
85       //    Thread.sleep(50);
86       //  } catch (InterruptedException ex) {
87       //    Logger.getLogger(FileManager.class.getName()).log(Level.SEVERE, null, ex);
88       //  }
89       //}
90       if (!liste.isEmpty()) {
91         DirList list = new DirList();
8bde6f 92         list.setDirectory(urlBase + relPathAndName);
U 93         list.setFiles(liste);
e369b9 94         Gson gson = new Gson();
U 95         String json = gson.toJson(list);
96         return json;
97       } else {
98         return null;
99       }
100     } else {
101       return null;
102     }
103     //} else {
104     //}
105   }
106
107 }