Dateiverwaltung fuer neon
ulrich
2024-11-19 b3d917571a5f952531ce3e060861e1a158bc04c7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/**
 * Die Package de.uhilger.neon.fm stellt eine Schnittstelle via HTTP bereit, 
 * ueber die Dateien verwaltet werden koennen. In dieser Package sind die 
 * Klassen enthalten, die den HTTP-Teil einer solchen Schnittstelle abdecken.
 * 
 * Fuer die Ausfuehrung der auf diese Weise via HTTP bereitgestellten Dateioperationen 
 * werden die Klassen der Package de.uhilger.fm verwendet.
 * 
 * <pre>
 * GET (Klasse FileList)
 *  - Dateiinhalt ausliefern (URL ohne Slash am Ende) FileContent + FileList
 *  - Ordnerinhalt auflisten (URL mit Slash am Ende) FileList
 * 
 * PUT (Klasse FileManipulator)
 *  - Inhalt einer einzelnen Datei anlegen oder ueberschreiben Writer
 *  - Liste mit Dateien kopieren (?copyFrom) Mover
 *  - Liste mit Dateien verschieben (?moveFrom) Mover
 *  - einzelne Datei duplizieren (?duplicate) Duplicator
 *  - einzelne Datei umbenennen (?renameTo) Renamer
 *  - Ordner packen (?zip) Deflator
 *  - Zip-Datei entpacken (?unzip) Inflator
 * 
 * POST (Klasse FileCreator)
 *  - Datei neu anlegen, unter neuem Namen, wenn schon existent (URL ohne Slash am Ende)
 *  - Ordner anlegen oder Fehler 422, wenn schon existent (URL mit Slash am Ende)
 * 
 * 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;