From a35d259fd83a08376ee7261a3765897ff4050f7c Mon Sep 17 00:00:00 2001 From: Joss Date: Tue, 20 May 2025 20:35:47 +0200 Subject: [PATCH] Added TreeView and ObjectView --- src/Main.java | 2 ++ src/views/Defaults.java | 4 +-- src/views/ObjectView.java | 57 +++++++++++++++++++++++++++++++++++++++ src/views/TreeView.java | 21 +++++++++++++++ 4 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 src/views/ObjectView.java create mode 100644 src/views/TreeView.java diff --git a/src/Main.java b/src/Main.java index 599280a..db98c2c 100644 --- a/src/Main.java +++ b/src/Main.java @@ -29,6 +29,8 @@ public class Main { s.createContext("/", new RootView()); s.createContext("/main", new StartView()); s.createContext("/auth", new AuthView()); + s.createContext("/tree", new TreeView()); + s.createContext("/object", new ObjectView()); s.setExecutor(null); s.start(); } catch (IOException e) { diff --git a/src/views/Defaults.java b/src/views/Defaults.java index 5fd99c7..4c4b678 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 = "Beleg SoSe 2025
"; - public static final String HTMLFOOTER = "
"; + public static final String HTMLHEADER = "Beleg SoSe 2025

"; + public static final String HTMLFOOTER = "
Hier könnte ihr Text stehen!
"; } diff --git a/src/views/ObjectView.java b/src/views/ObjectView.java new file mode 100644 index 0000000..b5674ce --- /dev/null +++ b/src/views/ObjectView.java @@ -0,0 +1,57 @@ +package hsmw.jotto5.beleg.views; + +import hsmw.jotto5.beleg.data.DataObject; +import hsmw.jotto5.beleg.data.Model; + +import java.io.IOException; +import java.io.OutputStream; +import com.sun.net.httpserver.*; +import java.lang.reflect.*; + +public class ObjectView implements HttpHandler { + + public void handle(HttpExchange t) throws IOException { + String response; + String objectPath; + OutputStream os; + Model m = Model.getModel(); + DataObject obj = null; + + // Das angefragte Objekt finden + objectPath = t.getRequestURI().toString(); + if (objectPath.length() >= 9) { + objectPath = objectPath.substring(8); + obj = m.get(objectPath); + } + + if ( obj == null ) return; // TODO: 404 oder 500 zurückgeben! + + // Die Tabelle ausgeben + response = Defaults.HTMLHEADER + "

Beleg - Objektansicht

"; + response += ""; + try { + for (Field f : obj.getClass().getFields()) { + if (f.isAnnotationPresent(DataObject.WebField.class)) { + // Das Feld hat die "WebField"-Annotation, ist also anzuzeigen + response += ""; + // Feld anzeigen + response += ""; + } + } + } catch(IllegalAccessException e) { + // hier sollten wir niemals her kommen + // TODO: 500 werfen + e.printStackTrace(); + } + + response += "
" + f.getAnnotation(DataObject.WebField.class).displayAs() + "
"; + + response += Defaults.HTMLFOOTER; + os = t.getResponseBody(); + + t.sendResponseHeaders(200, response.length()); + os.write(response.getBytes()); + os.close(); + } + +} diff --git a/src/views/TreeView.java b/src/views/TreeView.java new file mode 100644 index 0000000..dc0406d --- /dev/null +++ b/src/views/TreeView.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 TreeView implements HttpHandler { + + public void handle(HttpExchange t) throws IOException { + String response; + OutputStream os; + + response = Defaults.HTMLHEADER + "

Beleg - Objektübersicht

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