From 4b78ccbbd94c7298e07e1cbf7db79eb3ad696094 Mon Sep 17 00:00:00 2001 From: Joss Date: Mon, 31 Mar 2025 21:11:37 +0200 Subject: [PATCH] Initial Commit --- .gitignore | 2 ++ README.txt | 39 +++++++++++++++++++++++++++++++++++++++ build.xml | 39 +++++++++++++++++++++++++++++++++++++++ src/Main.java | 26 ++++++++++++++++++++++++++ src/Model.java | 26 ++++++++++++++++++++++++++ src/Resource.java | 13 +++++++++++++ src/Student.java | 13 +++++++++++++ src/views/StartView.java | 21 +++++++++++++++++++++ 8 files changed, 179 insertions(+) create mode 100644 .gitignore create mode 100644 README.txt create mode 100644 build.xml create mode 100644 src/Main.java create mode 100644 src/Model.java create mode 100644 src/Resource.java create mode 100644 src/Student.java create mode 100644 src/views/StartView.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a91c53a --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +build/ +doc/ diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..babe3a7 --- /dev/null +++ b/README.txt @@ -0,0 +1,39 @@ +Beleg SoSe 2025 +=============== + +EINLEITUNG + +In diesem Ordner befinden sich fast alle notwendigen Dateien um die vorliegende +Belegarbeit zu kompilieren. Für zusätzliche Abhängigkeiten siehe KOMPILIEREN. + +Im Ordner src befindet sich der Java-Quellcode der Anwendung und im Ordner doc +wird die Javadoc-Dokumentation ausgegeben. + + + +AUSFÜHREN + +Da die Anwendung keine grafische Oberfläche im klassischen Sinne nutzt +empfiehlt sich ein Starten über die Komandozeile mit + + java -jar build/jar/beleg.jar + +Beendet werden kann die Anwendung mit Ctrl+C. + +Zum Vergleich mit einer "getesteten Instanz" gibt es mindestens bis zum Anfang +des WiSe 25/26 noch eine von mir gehostete Version unter + + http://beleg.infra.jossco.de. + + + +KOMPILIEREN + +Die folgenden Schritte beschreiben das Kompilieren der Anwendung sowie der +Dokumentation und zusätzlich der schriftlichen Belegarbeit. + +Abhängigkeiten für die Anwendung: +* Apache ANT +* Das Java JDK, mindestens in Version 8 + +Für die Dokumentation wird zusätzlich Javadoc benötigt. diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..6cbfbe2 --- /dev/null +++ b/build.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Main.java b/src/Main.java new file mode 100644 index 0000000..699f9d2 --- /dev/null +++ b/src/Main.java @@ -0,0 +1,26 @@ +package hsmw.jotto5.beleg; + +import hsmw.jotto5.beleg.views.*; + +import com.sun.net.httpserver.*; +import java.net.InetSocketAddress; + +/** + * Die Main-Klasse mit dem Einstiegspunkt der Anwendung + */ +public class Main { + + /** + * Main-Methode + * @param args Die Programmargumente + */ + public static void main(String[] args) throws Exception { + HttpServer s = HttpServer.create(new InetSocketAddress(8000), 0); + + s.createContext("/main", new StartView()); + + s.setExecutor(null); + s.start(); + } + +} diff --git a/src/Model.java b/src/Model.java new file mode 100644 index 0000000..5dbb7b4 --- /dev/null +++ b/src/Model.java @@ -0,0 +1,26 @@ +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. + */ +public class Model { + + private ArrayList students; + private ArrayList resources; + + /** + * Initialisiert ein leeres Model. + */ + public Model() { + students = new ArrayList(); + resources = new ArrayList(); + } + +} diff --git a/src/Resource.java b/src/Resource.java new file mode 100644 index 0000000..d3be5e9 --- /dev/null +++ b/src/Resource.java @@ -0,0 +1,13 @@ +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 new file mode 100644 index 0000000..f8e1dc0 --- /dev/null +++ b/src/Student.java @@ -0,0 +1,13 @@ +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/views/StartView.java b/src/views/StartView.java new file mode 100644 index 0000000..d342b39 --- /dev/null +++ b/src/views/StartView.java @@ -0,0 +1,21 @@ +package hsmw.jotto5.beleg.views; + +import java.io.IOException; +import java.io.OutputStream; +import com.sun.net.httpserver.*; + +public class StartView implements HttpHandler { + + public void handle(HttpExchange t) throws IOException { + String response; + OutputStream os; + + response = "

Beleg - Startseite!

Bitte waehle aus einer der nachstehenden Optionen.

"; + od = t.getResponseBody(); + + t.sendResponseHeaders(200, response.length()); + os.write(response.getBytes()); + os.close(); + } + +}