diff --git a/src/views/TreeView.java b/src/views/TreeView.java index 272d427..964a90c 100644 --- a/src/views/TreeView.java +++ b/src/views/TreeView.java @@ -2,26 +2,92 @@ package hsmw.jotto5.beleg.views; import hsmw.jotto5.beleg.data.Model; +import java.util.Arrays; +import java.util.ArrayList; import java.io.IOException; import java.io.OutputStream; import com.sun.net.httpserver.*; public class TreeView implements HttpHandler { + /** + * Generiert HTML-Code für einen Baum aus dem gegebenen mehrstufigen Array. + * Damit der Baum "richtig" aussieht sollte das Eingabearray zumindest gruppiert + * sein (nach den Ast-Knoten). + */ + private String makeObjectTree(String[][] data) { + String result; + ArrayList stack; + int levels; + + result = ""; + } + } + + // Jetzt gehen wir einfach so viele Stufen nach unten wie wir müssen + // Es ist jetzt garantiert dass e = stack oder e > stack + // Auch hier überspringen wir das letzte Element in e, um es nicht auszugeben + // Hilfsvariable da wir stack verändern + levels = e.length - 1 - stack.size(); + for ( int i = 0; i < levels; i++ ) { + result += "
  • " + e[stack.size() + i] + ""; + + return result; + } + public void handle(HttpExchange t) throws IOException { String response; OutputStream os; Model m; - + String[] uids; // enthält alle UIDs als String + String[][] objPaths; // enthält alle Objekt-IDs, aufgeteilt in ihre Pfadelemente + m = Model.getModel(); + uids = m.getAllUids(); + // Array noch sortieren, da es zum Baum generieren sortiert sein muss und sich String[]s + // aus irgendeinem Grund nur SEHR schlecht sortieren lassen :( + Arrays.sort(uids); + + // Wir nutzen Javas Lambda-Notation um mit einem Mapping zu arbeiten. + // Außerdem müssen wir den Allokator überschreiben um ein Array des richtigen Typs zu bekommen, siehe + // https://stackoverflow.com/questions/52416381/how-can-i-map-over-an-array-in-java + objPaths = Arrays.stream(uids).map(uid -> uid.split("/")).toArray(size -> new String[size][]); response = Defaults.HTMLHEADER + "

    Beleg - Objektübersicht

    " + Defaults.HTMLFOOTER; + try { response += makeObjectTree(objPaths); } catch(Exception e) { e.printStackTrace(); } + response += Defaults.HTMLFOOTER; os = t.getResponseBody();