changed more stuff

This commit is contained in:
joss 2025-04-08 21:31:13 +02:00
parent cd9a49a19a
commit 29d3ec8268
8 changed files with 146 additions and 79 deletions

View file

@ -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<String> 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);
}
}

View file

@ -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.
* <p>
* Denkbar ist zum Beispiel eine Implementation auf LDAP-Basis.
*/
public class Model {
private ArrayList<Student> students;
private ArrayList<Resource> resources;
private ArrayList<Group> groups;
/**
* Initialisiert ein leeres Model.
*/
public Model() {
students = new ArrayList<Student>();
resources = new ArrayList<Resource>();
groups = new ArrayList<Group>();
}
}

View file

@ -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
}

View file

@ -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;
}

42
src/data/DataObject.java Normal file
View file

@ -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;
}
}

18
src/data/Group.java Normal file
View file

@ -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);
}
}

42
src/data/Model.java Normal file
View file

@ -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.
* <p>
* Denkbar ist zum Beispiel eine Implementation auf LDAP-Basis, oder in einer relationalen
* Datenbank.
* <p>
* Die aktuelle Implementierung speichert alle DataObjects in einer HashMap, mit ihrer
* UID als Key.
*/
public class Model {
private HashMap<String, DataObject> objs;
private HashMap<String, String> relations;
/**
* Initialisiert ein leeres Model.
*/
public Model() {
objs = new HashMap<String, DataObject>();
relations = new HashMap<String, String>();
}
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);
}
}

44
src/data/Student.java Normal file
View file

@ -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!
* <p>
* 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;
}
}