diff --git a/src/Main.java b/src/Main.java index 998ecc4..3c21cf5 100644 --- a/src/Main.java +++ b/src/Main.java @@ -1,9 +1,11 @@ package hsmw.jotto5.beleg; import hsmw.jotto5.beleg.views.*; +import hsmw.jotto5.beleg.data.*; -import com.sun.net.httpserver.*; import java.net.InetSocketAddress; +import com.sun.net.httpserver.*; +import java.io.IOException; /** * Die Main-Klasse mit dem Einstiegspunkt der Anwendung. @@ -14,19 +16,31 @@ public class Main { * Main-Methode * @param args Die Programmargumente */ - public static void main(String[] args) throws Exception { - HttpServer s = HttpServer.create(new InetSocketAddress("127.0.0.1", 8000), 0); + public static void main(String[] args) { + Model m; - // Kontexts werden nach längstem Matching ausgewählt (wieso?) - // Alle unbekannten Anfragen die mit / starten werden also an die RootView gegeben - // Statische Dateien werden auch von der RootView verarbeitet - // TODO: Error Handling!!! - s.createContext("/", new RootView()); - s.createContext("/main", new StartView()); - s.createContext("/auth", new AuthView()); + m = new Model(); + m.fillMockData(); - s.setExecutor(null); - s.start(); + + /**HttpServer s = null; + + try { + s = HttpServer.create(new InetSocketAddress("127.0.0.1", 8000), 0); + // Kontexts werden nach längstem Matching ausgewählt (wieso?) + // Alle unbekannten Anfragen die mit / starten werden also an die RootView gegeben + // Statische Dateien werden auch von der RootView verarbeitet + s.createContext("/", new RootView()); + s.createContext("/main", new StartView()); + s.createContext("/auth", new AuthView()); + s.setExecutor(null); + s.start(); + } catch (IOException e) { + System.err.println("IOException bei der Erstellung des HTTP Servers. Stack Trace folgt."); + e.printStackTrace(); + return; + }**/ + // schließen ist nicht nötig, da beim Beenden die ganze JVM zerstört wird } } diff --git a/src/data/DataObject.java b/src/data/DataObject.java index 0d83074..3025d49 100644 --- a/src/data/DataObject.java +++ b/src/data/DataObject.java @@ -8,12 +8,15 @@ package hsmw.jotto5.beleg.data; * Vorgesehen ist die UID als Pfad-formatierter String mit "/" als Trennsymbol, um * DataObjects hierarchisch zu gliedern - der Inhalt ist aber eigentlich egal * (solange eindeutig). + *
+ * Für alle DataObjects gilt, dass der Zugriff auf Methoden und Felder der Objekte + * nicht definiert ist, solange sie nicht an ein Modell gebunden sind. */ public abstract class DataObject { - private Model model; // DataObjects speichern eine Referenz auf das Modell zu dem sie gehören + protected Model model; // DataObjects speichern eine Referenz auf das Modell zu dem sie gehören protected String uid; // einmalige UID des Objektes - private String displayName; + protected String displayName; /** * Konstruktor für manuelles Erzeugen. @@ -39,4 +42,16 @@ public abstract class DataObject { this.model = m; } + public Model getModel() { + return this.model; + } + + public String getDisplayName() { + return this.displayName; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + } diff --git a/src/data/Group.java b/src/data/Group.java index 810ac54..8ff3e45 100644 --- a/src/data/Group.java +++ b/src/data/Group.java @@ -15,4 +15,11 @@ public class Group extends DataObject { super(uid, displayName); } + /** + * Fügt das DataObject mit der gegebenen UID zu der Gruppe hinzu. + */ + public void addMember(String uid) { + this.model.addRelation(this.uid, uid); + } + } diff --git a/src/data/Model.java b/src/data/Model.java index 5b4e65f..6b2300e 100644 --- a/src/data/Model.java +++ b/src/data/Model.java @@ -14,7 +14,8 @@ import java.util.HashMap; * Datenbank. *
* Die aktuelle Implementierung speichert alle DataObjects in einer HashMap, mit ihrer
- * UID als Key.
+ * UID als Key. Das erlaubt schnelle forward-lookups (also Suche nach Obj mit gegebener UID),
+ * was die deutlich häufiger ausgeführte Operation sein sollte.
*/
public class Model {
@@ -29,12 +30,53 @@ public class Model {
relations = new HashMap
* Der displayName wird aus Vor- und Nachname zusammengesetzt. Beim Ändern der
* Namensattribute wird die UID NICHT neu vergeben!
* @param uid Die zu vergebende UID
diff --git a/src/views/Defaults.java b/src/views/Defaults.java
index 48f4f8d..5fd99c7 100644
--- a/src/views/Defaults.java
+++ b/src/views/Defaults.java
@@ -5,7 +5,7 @@ package hsmw.jotto5.beleg.views;
*/
public class Defaults {
- public static final String HTMLHEADER = "