From 933df31a8a40183b03a79a9f5c786b4c4ca3a1c6 Mon Sep 17 00:00:00 2001 From: ulrich Date: Sun, 11 Apr 2021 16:03:44 +0000 Subject: [PATCH] Hauptmenue aktualisiert --- src/de/uhilger/mediaz/store/Storage.java | 70 ++++++++++++++++++++++++++++++++-- 1 files changed, 65 insertions(+), 5 deletions(-) diff --git a/src/de/uhilger/mediaz/store/Storage.java b/src/de/uhilger/mediaz/store/Storage.java index 8e66c8a..3f63bc8 100644 --- a/src/de/uhilger/mediaz/store/Storage.java +++ b/src/de/uhilger/mediaz/store/Storage.java @@ -1,21 +1,50 @@ /* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. + Mediazentrale - Personal Media Center + Copyright (C) 2021 Ulrich Hilger + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. */ package de.uhilger.mediaz.store; +import com.google.gson.reflect.TypeToken; import de.uhilger.mediaz.entity.Entity; import java.util.List; /** - * Eine Ablage, die wie folgt organisiert ist + * Eine Ablage fuer serialisierte Objekte, die wie folgt organisiert ist * * [Ort]/[Typ]/[Name] * * Ort ist der Ablagort, an dem sich die folgende Struktur findet * Typ ist eine der Klassen der Package entity * Name muss identisch mit dem Element laut Entity.getName() sein + * + * Einzelne Objekte werden nach JSON serialisiert und in Dateien oder je nach + * Typ der Storage aehnliche 'Behaeltnisse' geschrieben. Die Dateinamen werden + * ohne Dateierweiterung geschrieben. + * + * In einer Gruppe identischer Typen muss jede Entitaet eindeutig benannt sein. + * Als weitere Konvention soll jede Entitaet nur Buchstaben, Zahlen + * oder Bindestrich (-) im Namen enthalten. + * + * Erlaubter-1-Name-123<br> + * <br> + * Nicht-erlaubter-Name.1-4 (Punkt)<br> + * Nicht erlaubt (Leerzeichen)<br> + * AuchNicht?erlaubt (Fragezeichen)<br> + * Ebenfalls&verboten (&)<br> + * usw. * * @author Ulrich Hilger * @version 1, 5.4.2021 @@ -27,7 +56,7 @@ * @param e das Objekt, das geschrieben werden soll * @return ein Antwortobjekt oder null */ - public Object write(Entity e); + public Object write(Entity e, boolean overwrite); /** * Ein Objekt aus der Ablage lesen @@ -38,10 +67,41 @@ public Entity read(String typ, String name); /** + * Ein Objekt als JSON lesen + * @param typ + * @param name + * @return das gewuenschte Objekt als JSON + */ + public String readJson(String typ, String name); + + /** * Die Namen der Elemente eines gegebenen Typs auflisten * @param typ der gewuenschte Typ * @return die Liste mit Namen */ public List<String> list(String typ); + /** + * Alle Objekte eines Typs auflisten + * @param typ der gewuenschte Typ + * @return die Liste mit Objekten + */ + public List listObjects(String typ); + + /** + * Fuer einen gegebenen Namen den Typ bestimmen + * @param name der Name des gewuenschten Typs + * @return der Typ zum Namen + */ + public TypeToken typeFromName(String name); + + /** + * Ein Objekt aus der Ablage loeschen + * @param typ Objekttyp + * @param name Name des Objekts, das geloscht werden soll + * @return true, wenn geloeschn, false wenn nicht + */ + public boolean delete(String typ, String name); + + public boolean exists(String typ, String name); } -- Gitblit v1.9.3