From a9ce27642a6280f95664b0140a356e6f4ade91b1 Mon Sep 17 00:00:00 2001 From: ulrich <undisclosed> Date: Wed, 20 Nov 2024 14:58:09 +0000 Subject: [PATCH] API-Doku ergaenzt --- src/de/uhilger/neon/fm/FileManipulator.java | 100 ++++++++++++++++++++++++++++++++++++------------- 1 files changed, 73 insertions(+), 27 deletions(-) diff --git a/src/de/uhilger/neon/fm/FileManipulator.java b/src/de/uhilger/neon/fm/FileManipulator.java index 5b4d3c5..63209db 100644 --- a/src/de/uhilger/neon/fm/FileManipulator.java +++ b/src/de/uhilger/neon/fm/FileManipulator.java @@ -20,7 +20,6 @@ import com.sun.net.httpserver.HttpExchange; import de.uhilger.neon.FileServer; import de.uhilger.neon.HttpResponder; -import de.uhilger.fm.Const; import de.uhilger.fm.Duplicator; import de.uhilger.fm.Mover; import de.uhilger.fm.Renamer; @@ -29,21 +28,7 @@ import java.io.IOException; /** - * Ein Neon-Actor fuer Aenderungen an Dateien. - * - * Die folgenden Aktionen werden ausgefuehrt. - * - * PUT [url] [body] - * - * <pre> - * - Inhalt einer einzelnen Datei anlegen oder ueberschreiben: url=ziel, Dateiinhalt im Body - * - Liste mit Dateien kopieren (?copyFrom=quelle): url=ziel, Dateiliste im Body - * - Liste mit Dateien verschieben (?moveFrom=quelle): url=Ziel, Dateiliste im Body - * - einzelne Datei duplizieren (?duplicate): url=Zieldatei - * - einzelne Datei umbenennen (?renameTo=neuer Name): url=Datei oder -odner - * - Ordner packen (?zip): url=Ordner - * - Zip-Datei entpacken (?unzip): url=Datei - * </pre> + * Aenderungen an bestehenden Dateien. * * @author Ulrich Hilger * @version 0.1, 07.11.2024 @@ -57,25 +42,81 @@ private static final String P_ZIP = "zip"; private static final String P_UNZIP = "unzip"; - public void run(HttpExchange exchange) { + /** + * <p> + * Diese Methode ist als Reaktion auf einen HTTP PUT Aufruf an folgende URLs gedacht</p> + * + * <pre> + * PUT [url] + * [body] + * </pre> + * + * <pre> + * - Inhalt einer einzelnen Datei anlegen oder ueberschreiben: url=ziel, Dateiinhalt im Body + * - Liste mit Dateien kopieren (?copyFrom=quelle): url=ziel, Dateiliste im Body + * - Liste mit Dateien verschieben (?moveFrom=quelle): url=Ziel, Dateiliste im Body + * - einzelne Datei duplizieren (?duplicate): url=Zieldatei + * - einzelne Datei umbenennen (?renameTo=neuer Name): url=Datei oder -ordner + * - Ordner packen (?zip): url=Ordner + * - Zip-Datei entpacken (?unzip): url=Datei + * </pre> + * + * + * <pre> + * <p>HTTP PUT /pfad/zur/datei.txt ueberschreibt eine bestehende Datei mit dem im Body + * uebergebenen Inhalt oder legt eine Datei mit diesem Inhalt an</p> + * + * HTTP PUT /pfad/zum/zielordner?copyFrom=/pfad/zum/quellordner + * kopiert die Liste der Datei- oder Ordnernamen im Body + * der Anfrage vom Pfad in 'copyFrom' zum Pfad dieser Anfrage. Jede Datei, die + * im Ziel bereits existiert, bekommt im Ziel einen neuen Namen mit einer + * laufenden Nummer. Bei Ordnern, die im Ziel bereits existieren, bekommt der + * betreffende Ordner im Ziel zunaechst einen neuen Namen mit einer laufenden + * Nummer, dann wird der Quellordner ans Ziel kopiert. + * + * HTTP PUT /pfad/zum/zielordner?moveFrom=/pfad/zum/quellordner + * verschiebt die Liste der Datei- oder Ordnernamen im + * Body der Anfrage vom Pfad in 'moveFrom' zum Pfad dieser Anfrage. Jede Datei, + * die im Ziel bereits existiert, bekommt im Ziel einen neuen Namen mit einer + * laufenden Nummer. Bei Ordnern, die im Ziel bereits existieren, bekommt der + * betreffende Ordner im Ziel zunaechst einen neuen Namen mit einer laufenden + * Nummer, dann wird der Quellordner ans Ziel kopiert. + * + * HTTP PUT /pfad/zur/datei.txt?duplicate legt eine Kopie der Datei an + * + * HTTP PUT /pfad/zur/datei.txt?renameTo=neuer Name benennt die Datei oder den Ordner um, + * sofern der neue Name noch nicht vergeben ist + * + * HTTP PUT /pfad/zum/ordner?zip' packt den Ordner + * + * HTTP PUT /pfad/zur/datei.zip?unzip' entpackt eine Datei + * + * Eine Dateiliste im Body sieht z.B. wie folgt aus + * ["test.txt","dok","weitere-datei.bin","bild.jpg"] + * + * </pre> + * + * @param exchange das Objekt mit Infos zu HTTP-Request, -Response usw. + */ + public void change(HttpExchange exchange) { try { - super.run(exchange); + init(exchange); String query = exchange.getRequestURI().getQuery(); if (query != null) { String[] params = query.split(FileServer.STR_EQUAL); switch (params[0]) { case P_RENAME: h.inspectFileName(params[1]); - String neuerDateiName = new Renamer().umbenennen(exchange, fileName, params[1], file); + String neuerDateiName = new Renamer().rename(/*fileName, */params[1], file); antwort(exchange, HttpResponder.SC_OK, neuerDateiName); break; case P_COPY: h.inspectFileName(params[1]); - copyOrMove(exchange, params[1], fileName, Const.OP_COPY); + copyOrMove(exchange, params[1], fileName, Mover.OP_COPY); break; case P_MOVE: h.inspectFileName(params[1]); - copyOrMove(exchange, params[1], fileName, Const.OP_MOVE); + copyOrMove(exchange, params[1], fileName, Mover.OP_MOVE); break; case P_DUPLICATE: if (Boolean.parseBoolean(params[1])) { @@ -85,12 +126,12 @@ } break; case P_ZIP: - String path = exchange.getRequestURI().toString(); - zipAntwort(exchange, new Deflator().packFolder(fileName, path, base)); + //String path = exchange.getRequestURI().toString(); + zipAntwort(exchange, new Deflator().packFolder(fileName, /*path, */ base)); break; case P_UNZIP: - path = exchange.getRequestURI().toString(); - zipAntwort(exchange, new Inflator().extractZipfile(fileName, path, base)); + //String path = exchange.getRequestURI().toString(); + zipAntwort(exchange, new Inflator().extractZipfile(fileName, /*path,*/ base)); break; default: antwort(exchange, HttpResponder.SC_NOT_FOUND, "ungueltige Anfrage"); @@ -112,7 +153,12 @@ private void copyOrMove(HttpExchange exchange, String quelle, String ziel, int op) throws IOException { String[] dateiNamen = dateiliste(exchange); - new Mover().copyOrMoveFiles(quelle, ziel, dateiNamen, op, base); + if (op == Mover.OP_COPY) { + new Mover().copy(quelle, ziel, dateiNamen, base); + } else { + new Mover().move(quelle, ziel, dateiNamen, base); + } + //new Mover().copyOrMoveFiles(quelle, ziel, dateiNamen, op, base); antwort(exchange, HttpResponder.SC_OK, "Dateien verarbeitet."); } @@ -123,4 +169,4 @@ antwort(exchange, HttpResponder.SC_UNPROCESSABLE_ENTITY, antw); } } -} \ No newline at end of file +} -- Gitblit v1.9.3