changed more stuff
This commit is contained in:
parent
cd9a49a19a
commit
29d3ec8268
8 changed files with 146 additions and 79 deletions
|
@ -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);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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>();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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
|
|
||||||
|
|
||||||
}
|
|
|
@ -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
42
src/data/DataObject.java
Normal 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
18
src/data/Group.java
Normal 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
42
src/data/Model.java
Normal 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
44
src/data/Student.java
Normal 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue