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