Klassenbiliothek fuer Dateiverwaltung
ulrich
2 days ago e1fae256e29eb7a317d5a810d7e24751eb6032eb
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 
31  * mein-bild.jpg
32  * mein-bild_tn.jpg
33  * mein-bild_kl.jpg
34  * erscheint nur die Datei mein-bild.jpg in der Liste.
35  * 
36  * 
37  * @author Ulrich Hilger
38  * @version 0.1, 05.11.2024
39  */
40 public class Lister {
41
42   public static final String STR_DOT = ".";
43
269203 44   /**
U 45    * 
46    * @param fName Name und relativer Pfad des Ordners, dessen Inhalt aufgelistet werden soll
47    * @param ctxPath  Kontext Pfad zur Bildung des URL, der auf die Miniaturansicht verweist 
48    * (koennte evtl. im Client gebildet werden, hier dann nur Mini-Dateiname zurueckgeben)
49    * @param base  Basisverzeichnis, gegen das der relative Pfad aufgeloest werden soll
50    * @return die Dateiliste als JSON String
51    * @throws IOException 
52    */
e369b9 53   public String liste(String fName, String ctxPath, String base/*, String path*/) throws IOException {
U 54     File[] files = new File(base, fName).listFiles(new ImageFileFilter());
55     if (files != null && files.length > 0) {
56       Arrays.sort(files);
57       ArrayList liste = new ArrayList();
58       for (File file : files) {
59         Datei datei = new Datei();
60         String dateiName = file.getName();
61         datei.setName(dateiName);
62         if (file.isDirectory()) {
63           datei.setTyp(Datei.TYP_ORDNER);
64         } else {
65           datei.setTyp(Datei.TYP_DATEI);
66         }
67         String lowerName = dateiName.toLowerCase();
973951 68         if (lowerName.endsWith(ImageFileFilter.JPEG)
U 69                 || lowerName.endsWith(ImageFileFilter.JPG)
70                 || lowerName.endsWith(ImageFileFilter.PNG)) {
e369b9 71           datei.setBild(true);
U 72           String ext = dateiName.substring(dateiName.lastIndexOf(STR_DOT));
73           String ohneExt = dateiName.substring(0, dateiName.lastIndexOf(STR_DOT));
973951 74           datei.setMiniurl(ctxPath + /*"/" + */ fName + ohneExt + ImageFileFilter.TN + ext);
e369b9 75           //buildImgSrc(file, datei, ohneExt, ext);
U 76         }
77         liste.add(datei);
78       }
79       //while(threadCount > 0) {
80       //  try {
81       //    Thread.sleep(50);
82       //  } catch (InterruptedException ex) {
83       //    Logger.getLogger(FileManager.class.getName()).log(Level.SEVERE, null, ex);
84       //  }
85       //}
86       if (!liste.isEmpty()) {
87         DirList list = new DirList();
88         list.setPfad(ctxPath + fName);
89         list.setDateien(liste);
90         Gson gson = new Gson();
91         String json = gson.toJson(list);
92         return json;
93       } else {
94         return null;
95       }
96     } else {
97       return null;
98     }
99     //} else {
100     //}
101   }
102
103 }