Dateiverwaltung fuer neon
ulrich
2024-11-20 a9ce27642a6280f95664b0140a356e6f4ade91b1
API-Doku ergaenzt
3 files modified
89 ■■■■ changed files
src/de/uhilger/neon/fm/FileCatalog.java 5 ●●●● patch | view | raw | blame | history
src/de/uhilger/neon/fm/FileManipulator.java 37 ●●●●● patch | view | raw | blame | history
src/de/uhilger/neon/fm/package-info.java 47 ●●●●● patch | view | raw | blame | history
src/de/uhilger/neon/fm/FileCatalog.java
@@ -36,13 +36,16 @@
  /**
   * <p>Diese Methode ist als Reaktion auf einen HTTP GET Aufruf an 
   * folgenden URL gedacht und liefert eine Liste des Ordnerinhalts 
   * im JSON-Format</p>
   * im JSON-Format in der HTTP-Antwort aus</p>
   * 
   * <pre>
   * Ordnerinhalt auflisten:    
   * http://localhost:[port]/[kontext]/pfad/zum/ordner/
   * </pre>
   * 
   * Die Methode liefert den Dateiinhalt in der HTTP-Antwort aus,
   * wenn der URL eine Datei bezeichnet
   *
   * @param exchange das Objekt mit Infos zu HTTP-Request, -Response usw.
   */
  public void list(HttpExchange exchange) {
src/de/uhilger/neon/fm/FileManipulator.java
@@ -56,11 +56,46 @@
   * - 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
   * - 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) {
src/de/uhilger/neon/fm/package-info.java
@@ -9,7 +9,7 @@
 * Die folgenden HTTP-Aufrufe werden von dieser Package als HTTP-Aufrufe implementiert:
 * 
 * <pre>
 * GET (Klasse FileList)
 * GET (Klasse FileCatalog)
 *  - Dateiinhalt ausliefern (URL ohne Slash am Ende) FileContent + FileList
 *  - Ordnerinhalt auflisten (URL mit Slash am Ende) FileList
 * 
@@ -29,51 +29,6 @@
 * DELETE (Klasse FileEraser)
 *  - Liste mit Dateien und Ordnern loeschen (rekursiv!)  
 * </pre>
 *
 * <p>HTTP-Beispiele</p>
 *
 * <p>HTTP GET fuer eine Datei innerhalb dieses Ordners liefert den Dateiinhalt aus</p>
 *
 * <p>HTTP GET fuer einen Ordner liefert eine Liste von dessen Inhalt in JSON</p>
 *
 * <p>HTTP PUT fuer eine Datei ueberschreibt eine bestehende Datei mit dem im Body
 * uebergebenen Inhalt oder legt eine Datei mit diesem Inhalt an</p>
 *
 * <p>HTTP POST fuer eine Datei legt eine neue Datei mit dem im Body uebergebenen
 * Inhalt an oder erzeugt eine neue Datei mit einer laufenden Nummer, falls
 * diese Datei schon existiert</p>
 *
 * <p>HTTP POST fuer einen Ordner legt einen neuen Ordner an wenn er noch nicht
 * existiert oder erzeugt einen HTTP-Fehler 422</p>
 *
 * <p>HTTP DELETE loescht die Liste der Dateien und Ordner im Body</p>
 *
 * <p>HTTP PUT ?copyFrom=pfad 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.</p>
 *
 * <p>HTTP PUT ?moveFrom=pfad 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.</p>
 *
 * <p>HTTP PUT mit ?duplicate legt eine Kopie der Datei an</p>
 *
 * <p>HTTP PUT mit '?renameTo=neuer Name' benennt die Datei oder den Ordner um,
 * sofern der neue Name noch nicht vergeben ist</p>
 *
 * <p>HTTP PUT mit '?zip' packt den Ordner</p>
 *
 * <p>HTTP PUT mit '?unzip' entpackt eine Datei</p>
 *
 * <p>Namenskonventionen:<br>
 * Ein Pfad mit Schraegstrich ('/') am Ende bezeichnet einen Ordner<br>
 * Ein Pfad ohne Schraegstrich ('/') am Ende bezeichnet eine Datei</p> *
 * 
 */
package de.uhilger.neon.fm;