From 29d3ec826897ec678d5e8de0be7908669a016adb Mon Sep 17 00:00:00 2001 From: joss Date: Tue, 8 Apr 2025 21:31:13 +0200 Subject: [PATCH] changed more stuff --- src/Group.java | 23 --------------------- src/Model.java | 30 --------------------------- src/Resource.java | 13 ------------ src/Student.java | 13 ------------ src/data/DataObject.java | 42 ++++++++++++++++++++++++++++++++++++++ src/data/Group.java | 18 ++++++++++++++++ src/data/Model.java | 42 ++++++++++++++++++++++++++++++++++++++ src/data/Student.java | 44 ++++++++++++++++++++++++++++++++++++++++ 8 files changed, 146 insertions(+), 79 deletions(-) delete mode 100644 src/Group.java delete mode 100644 src/Model.java delete mode 100644 src/Resource.java delete mode 100644 src/Student.java create mode 100644 src/data/DataObject.java create mode 100644 src/data/Group.java create mode 100644 src/data/Model.java create mode 100644 src/data/Student.java diff --git a/src/Group.java b/src/Group.java deleted file mode 100644 index 68d9631..0000000 --- a/src/Group.java +++ /dev/null @@ -1,23 +0,0 @@ -package hsmw.jotto5.beleg; - -import java.util.ArrayList; - -/** - * Beschreibt eine Gruppe von Resourcen. - * - * Speichert Referenzen auf die Elemente als UIDs in einem Array. - */ -public class Group extends Resource { - - private ArrayList members; - - /** - * Fügt eine Ressource in die Gruppe zu. - * - * Prüft nicht, ob die Ressource bereits in der Gruppe enthalten ist. - */ - public void addMember(String uid) { - members.add(uid); - } - -} diff --git a/src/Model.java b/src/Model.java deleted file mode 100644 index c5aaf67..0000000 --- a/src/Model.java +++ /dev/null @@ -1,30 +0,0 @@ -package hsmw.jotto5.beleg; - -import java.util.ArrayList; - -/** - * Das Model der Anwendung. - * - * Stellt einfache Abfragen bereit und verwaltet die Anbindung an ein Speicher-Backend. - * Zugriff auf Daten ist Thread-sicher. Um ständiges Zusammenbauen von Objekten - * zu vermeiden und um besser vom eigentlichen Backend zu abstrahieren sind viele - * einfache Abfragen als Methode umgesetzt. - *

- * Denkbar ist zum Beispiel eine Implementation auf LDAP-Basis. - */ -public class Model { - - private ArrayList students; - private ArrayList resources; - private ArrayList groups; - - /** - * Initialisiert ein leeres Model. - */ - public Model() { - students = new ArrayList(); - resources = new ArrayList(); - groups = new ArrayList(); - } - -} diff --git a/src/Resource.java b/src/Resource.java deleted file mode 100644 index d3be5e9..0000000 --- a/src/Resource.java +++ /dev/null @@ -1,13 +0,0 @@ -package hsmw.jotto5.beleg; - -/** - * Basisklasse für eine beliebige Ressource. - * - * Alle spezifischen Ressourcen erben von dieser Klasse. - */ -public abstract class Resource { - - private String displayName; - private String uid; // UID String, ähnlich "CN" in LDAP - -} diff --git a/src/Student.java b/src/Student.java deleted file mode 100644 index f8e1dc0..0000000 --- a/src/Student.java +++ /dev/null @@ -1,13 +0,0 @@ -package hsmw.jotto5.beleg; - -/** - * Beschreibt eine Studierende Person. - * - * Aus verwaltungstechnischen Gründen zählen Studierende auch als Ressourcen. - */ -public class Student extends Resource { - - private String name; - private String lastName; - -} diff --git a/src/data/DataObject.java b/src/data/DataObject.java new file mode 100644 index 0000000..0d83074 --- /dev/null +++ b/src/data/DataObject.java @@ -0,0 +1,42 @@ +package hsmw.jotto5.beleg.data; + +/** + * Basisklasse für ein beliebiges DataObject. + * + * Alle spezifischen Objekte (im Sinne dieser Anwendung) erben von dieser Klasse. + * DataObjects haben eine UID. Diese wird im Model vergeben, und ist einmalig. + * Vorgesehen ist die UID als Pfad-formatierter String mit "/" als Trennsymbol, um + * DataObjects hierarchisch zu gliedern - der Inhalt ist aber eigentlich egal + * (solange eindeutig). + */ +public abstract class DataObject { + + private Model model; // DataObjects speichern eine Referenz auf das Modell zu dem sie gehören + protected String uid; // einmalige UID des Objektes + private String displayName; + + /** + * Konstruktor für manuelles Erzeugen. + * + * Wird nur von Kindklassen verwendet. Dient dazu, ein temporäres + * DataObject ohne Model-Bindung zu erzeugen. + * @param uid Die vorgegebene UID des Objektes (wird beim Binden an ein Model verwendet) + * @param displayName Der Anzeigename des Objektes + */ + protected DataObject(String uid, String displayName) { + this.model = null; + this.uid = uid; + this.displayName = displayName; + } + + /** + * Bindet das DataObject an ein Model. + * + * Ältere Bindings gehen dabei verloren. + */ + public void bind(Model m) { + m.add(this); + this.model = m; + } + +} diff --git a/src/data/Group.java b/src/data/Group.java new file mode 100644 index 0000000..810ac54 --- /dev/null +++ b/src/data/Group.java @@ -0,0 +1,18 @@ +package hsmw.jotto5.beleg.data; + +import java.util.ArrayList; + +/** + * Beschreibt eine Gruppe von DataObjects. + * + * Zwischen der Gruppe und ihrem "Inhalt" besteht eine m-zu-n-Beziehung: + * Ein DataObject kann in beliebig vielen Gruppen sein; genau so wie in + * einer Gruppe beliebig viele DataObjects sein können. + */ +public class Group extends DataObject { + + public Group(String uid, String displayName) { + super(uid, displayName); + } + +} diff --git a/src/data/Model.java b/src/data/Model.java new file mode 100644 index 0000000..5b4e65f --- /dev/null +++ b/src/data/Model.java @@ -0,0 +1,42 @@ +package hsmw.jotto5.beleg.data; + +import java.util.HashMap; + +/** + * Das Model der Anwendung. + * + * Stellt einfache Abfragen bereit und verwaltet die Anbindung an ein Speicher-Backend. + * Zugriff auf Daten ist Thread-sicher. Um ständiges Zusammenbauen von Objekten + * zu vermeiden und um besser vom eigentlichen Backend zu abstrahieren sind viele + * einfache Abfragen als Methode umgesetzt. + *

+ * Denkbar ist zum Beispiel eine Implementation auf LDAP-Basis, oder in einer relationalen + * Datenbank. + *

+ * Die aktuelle Implementierung speichert alle DataObjects in einer HashMap, mit ihrer + * UID als Key. + */ +public class Model { + + private HashMap objs; + private HashMap relations; + + /** + * Initialisiert ein leeres Model. + */ + public Model() { + objs = new HashMap(); + relations = new HashMap(); + } + + public void add(DataObject a) { + // TODO: Auf doppelte UIDs überprüfen! + this.objs.put(a.uid, a); + } + + public void addRelation(String a, String b) { + // TODO: Prüfen ob die Objekte existieren! + this.relations.put(a, b); + } + +} diff --git a/src/data/Student.java b/src/data/Student.java new file mode 100644 index 0000000..915942b --- /dev/null +++ b/src/data/Student.java @@ -0,0 +1,44 @@ +package hsmw.jotto5.beleg.data; + +/** + * Beschreibt eine studierende Person. + */ +public class Student extends DataObject { + + private String name; + private String lastName; + + /** + * Konstruktor zum manuellen Erzeugen. + * + * Bindet das Objekt nicht an ein Model, das sollte getan werden! + *

+ * Der displayName wird aus Vor- und Nachname zusammengesetzt. Beim Ändern der + * Namensattribute wird die UID NICHT neu vergeben! + * @param uid Die zu vergebende UID + * @param name Der Vorname + * @param lastName Der Nachname + */ + public Student(String uid, String name, String lastName) { + super(uid, lastName + ", " + name); + this.name = name; + this.lastName = lastName; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getLastName() { + return this.lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + +}