From 8bde6f998b7112a15624e24e2ee070ebf24a9172 Mon Sep 17 00:00:00 2001 From: ulrich Date: Thu, 14 Nov 2024 08:58:10 +0000 Subject: [PATCH] Dokumentation in Arbeit --- src/de/uhilger/fm/Renamer.java | 3 - src/de/uhilger/fm/Deflator.java | 4 +- src/de/uhilger/fm/DirList.java | 18 ++++---- src/de/uhilger/fm/FileRef.java | 2 src/de/uhilger/fm/package-info.java | 53 +++++++++++++++++++++++--- src/de/uhilger/fm/Catalog.java | 22 +++++----- 6 files changed, 71 insertions(+), 31 deletions(-) diff --git a/src/de/uhilger/fm/Lister.java b/src/de/uhilger/fm/Catalog.java similarity index 79% rename from src/de/uhilger/fm/Lister.java rename to src/de/uhilger/fm/Catalog.java index ea367a2..7d2413f 100644 --- a/src/de/uhilger/fm/Lister.java +++ b/src/de/uhilger/fm/Catalog.java @@ -37,32 +37,32 @@ * @author Ulrich Hilger * @version 0.1, 05.11.2024 */ -public class Lister { +public class Catalog { public static final String STR_DOT = "."; /** * - * @param fName Name und relativer Pfad des Ordners, dessen Inhalt aufgelistet werden soll - * @param ctxPath Kontext Pfad zur Bildung des URL, der auf die Miniaturansicht verweist + * @param relPathAndName Name und relativer Pfad des Ordners, dessen Inhalt aufgelistet werden soll + * @param urlBase Kontext Pfad zur Bildung des URL fuer Miniaturansicht und imgsrc bei Bilddateien * (koennte evtl. im Client gebildet werden, hier dann nur Mini-Dateiname zurueckgeben) * @param base Basisverzeichnis, gegen das der relative Pfad aufgeloest werden soll * @return die Dateiliste als JSON String * @throws IOException */ - public String liste(String fName, String ctxPath, String base/*, String path*/) throws IOException { - File[] files = new File(base, fName).listFiles(new ImageFileFilter()); + public String list(String relPathAndName, String urlBase, String base) throws IOException { + File[] files = new File(base, relPathAndName).listFiles(new ImageFileFilter()); if (files != null && files.length > 0) { Arrays.sort(files); ArrayList liste = new ArrayList(); for (File file : files) { - Datei datei = new Datei(); + FileRef datei = new FileRef(); String dateiName = file.getName(); datei.setName(dateiName); if (file.isDirectory()) { - datei.setTyp(Datei.TYP_ORDNER); + datei.setTyp(FileRef.TYP_ORDNER); } else { - datei.setTyp(Datei.TYP_DATEI); + datei.setTyp(FileRef.TYP_DATEI); } String lowerName = dateiName.toLowerCase(); if (lowerName.endsWith(ImageFileFilter.JPEG) @@ -71,7 +71,7 @@ datei.setBild(true); String ext = dateiName.substring(dateiName.lastIndexOf(STR_DOT)); String ohneExt = dateiName.substring(0, dateiName.lastIndexOf(STR_DOT)); - datei.setMiniurl(ctxPath + /*"/" + */ fName + ohneExt + ImageFileFilter.TN + ext); + datei.setMiniurl(urlBase + /*"/" + */ relPathAndName + ohneExt + ImageFileFilter.TN + ext); //buildImgSrc(file, datei, ohneExt, ext); } liste.add(datei); @@ -85,8 +85,8 @@ //} if (!liste.isEmpty()) { DirList list = new DirList(); - list.setPfad(ctxPath + fName); - list.setDateien(liste); + list.setDirectory(urlBase + relPathAndName); + list.setFiles(liste); Gson gson = new Gson(); String json = gson.toJson(list); return json; diff --git a/src/de/uhilger/fm/Deflator.java b/src/de/uhilger/fm/Deflator.java index b4e3689..8b66b10 100644 --- a/src/de/uhilger/fm/Deflator.java +++ b/src/de/uhilger/fm/Deflator.java @@ -27,7 +27,7 @@ import java.util.zip.ZipOutputStream; /** - * Eine Klasse mit Methoden zum Packen von Dateien # + * Packen von Dateien * * @author Ulrich Hilger, 15. Januar 2024 */ @@ -40,7 +40,7 @@ * Einen Ordner packen. * * Als Ziel wird eine neue Datei mit Dateiendung '.zip' erzeugt, die so heisst wie der Ordner, der - * gapckt werden soll. Die Datei mit dem gepackten Ordnerinhalt wird in dem Ordner angelegt, der + * gepackt werden soll. Die Datei mit dem gepackten Ordnerinhalt wird in dem Ordner angelegt, der * den zu packenden Ordner enthaelt. * * @param fName Name des zu packenden Ordners diff --git a/src/de/uhilger/fm/DirList.java b/src/de/uhilger/fm/DirList.java index 60be8b8..56e3ff7 100644 --- a/src/de/uhilger/fm/DirList.java +++ b/src/de/uhilger/fm/DirList.java @@ -25,23 +25,23 @@ * @author Ulrich Hilger, 15. Januar 2024 */ public class DirList { - private String pfad; - private List<Datei> dateien; + private String dir; + private List<FileRef> dateien; - public String getPfad() { - return pfad; + public String getDirectory() { + return dir; } - public void setPfad(String pfad) { - this.pfad = pfad; + public void setDirectory(String path) { + this.dir = path; } - public List<Datei> getDateien() { + public List<FileRef> getFiles() { return dateien; } - public void setDateien(List<Datei> dateien) { - this.dateien = dateien; + public void setFiles(List<FileRef> files) { + this.dateien = files; } diff --git a/src/de/uhilger/fm/Datei.java b/src/de/uhilger/fm/FileRef.java similarity index 98% rename from src/de/uhilger/fm/Datei.java rename to src/de/uhilger/fm/FileRef.java index c8e6fed..11471ef 100644 --- a/src/de/uhilger/fm/Datei.java +++ b/src/de/uhilger/fm/FileRef.java @@ -23,7 +23,7 @@ * @author Ulrich Hilger * @version 1, 11. Mai 2021 */ -public class Datei { +public class FileRef { public static final String TYP_DATEI = "datei"; public static final String TYP_ORDNER = "ordner"; diff --git a/src/de/uhilger/fm/Renamer.java b/src/de/uhilger/fm/Renamer.java index 85e0d08..83a1e87 100644 --- a/src/de/uhilger/fm/Renamer.java +++ b/src/de/uhilger/fm/Renamer.java @@ -17,7 +17,6 @@ */ package de.uhilger.fm; -import com.sun.net.httpserver.HttpExchange; import java.io.File; import java.io.IOException; import java.nio.file.DirectoryStream; @@ -33,7 +32,7 @@ public static final String STR_DOT = "."; - public String umbenennen(/*HttpExchange exchange, */String relPfad, String neuerName, File file) + public String rename(/*HttpExchange exchange, */String relPfad, String neuerName, File file) throws IOException { File neueDatei; String fname = file.getName().toLowerCase(); diff --git a/src/de/uhilger/fm/package-info.java b/src/de/uhilger/fm/package-info.java index 291bed9..375d662 100644 --- a/src/de/uhilger/fm/package-info.java +++ b/src/de/uhilger/fm/package-info.java @@ -1,19 +1,17 @@ /** - * Klassen fuer das Dateimanagement mit java.nio.file. + * Klassen fuer das Dateimanagement mit <code>java.nio.file</code>. * * Die folgenden Funktionen sind enthalten: * * <pre> * Ordnerinhalt auflisten: - * Lister().liste(ordnerName, ctx, basisOrdner) - * - * TODO: JSON-Liste und Miniurl sowie Handhabung von Bilddateien ueberpruefen + * Catalog().list(relPathAndName, miniUrlBase, baseDir) * * Datei speichern: - * Writer.speichern(file, content) + * Writer().speichern(file, content) * * Dateien und Ordner loeschen: - * Eraser.deleteFiles(relPfad, dateiname, basis) + * Eraser().deleteFiles(relPfad, dateiname, basis) * * Kopieren von Dateien und Ordnern: * Mover().copyOrMoveFiles(quelle, ziel, dateiNamen, op, base) @@ -33,5 +31,48 @@ * Entpacken einer ZIP-Datei: * Inflator().extractZipfile(fileName, path, base) * </pre> + * + * <p>Die folgenden Funktionalitaeten sind in dieser Auspraegung einer + * Dateiverwaltung fest angelegt. Sie sind damit Kandidaten fuer eine + * Erweiterung dieser Klassenbibliothek um andere evtl. benoetigte + * Auspraegungen.</p> + * + * <p>Handhabung von Bilddateien</p> + * + * Neben der Datei eines Bildes in Originalgroesse werden weitere Dateien als Varianten + * eines Bildes unterstuetzt. + * + * In Dateilisten werden diese Varianten ausgeblendet und nur das Originalbild gezeigt. + * + * Die Dateinamen von Varianten eines Bildes muessen dazu einen mit Unterstrich beginnenden + * Namenszusatz enthalten wie bspw. <code>_tn</code> fuer thumbnail oder <code>_sm</code> + * fuer small usw. Gleichsam lassen sich damit Eigenschaften wie zum Beispiel + * eine Base64-Kodierung kombinieren. Hier waere der Namenszusatz dann eine Kombination + * aus Groesse und Kodierung wie mit <code>_sm_b64</code>, so dass sich fuer ein Bild stets + * eine ganze Gruppe von Datien ergibt, z.B.: + * + * <pre> + * bild.jpg + * bild_sm.jpg + * bild_sm_b64.jpg + * </pre> + * + * Alle Dateioperationen dieser Klassenbibliothek wirken dennoch stets auf + * alle Varianten des Bildes, wie es auf der Kommandozeile mit einem Wildcard-Operator + * gemacht wuerde, z.B. + * + * <pre> + * cp /pfad/zum/bild*.jpg /pfad/zum/zielordner + * </pre> + * + * Eine Dateiliste enthaelt aus diesem Grund fuer Bilddateien die beiden zusaetzlichen Angaben + * <code>miniurl</code> und <code>imgsrc</code>. + * + * <p>Ordnerliste im JSON-Format</p> + * + * Die Liste mit Dateien eines Ordners wird im JSON-Format ausgegeben. Ueber eine + * entsprechende Erweiterung koennte die Ausgabe in verschiedenen waehlbaren Formaten + * erfolgen. + * */ package de.uhilger.fm; \ No newline at end of file -- Gitblit v1.9.3