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