From 85ba4a4424f8f6ab47a3e20e5119ac8f96ed387b Mon Sep 17 00:00:00 2001 From: Picman2000 <65342372+Picman2000@users.noreply.github.com> Date: Sun, 23 Mar 2025 23:17:29 +0100 Subject: [PATCH] documentation updated --- .../domainimpl/mdb/Speech_MongoDB_Impl.java | 32 ++++++++++++++++--- .../gruppe_05_1/rest/SpeechController.java | 4 +-- .../gruppe_05_1/util/SpeechVideoUpdater.java | 2 ++ .../xml/speeches/Impls/Comment_File_Impl.java | 14 ++++++++ .../Impls/Constituency_File_Impl.java | 7 ++++ .../speeches/Impls/Fraction_File_Impl.java | 6 ++++ .../Impls/LegislativePeriod_File_Impl.java | 6 ++++ .../xml/speeches/Impls/Line_File_Impl.java | 14 ++++++++ .../Impls/MemberOfParliament_File_Impl.java | 6 ++++ .../xml/speeches/Impls/Session_File_Impl.java | 6 ++++ .../xml/speeches/Impls/Speaker_File_Impl.java | 13 ++++++++ .../xml/speeches/Impls/Speech_File_Impl.java | 23 +++++++++++++ .../xml/speeches/SpeechParser.java | 7 +++- 13 files changed, 132 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Speech_MongoDB_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Speech_MongoDB_Impl.java index eeea7ea..19a4d44 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Speech_MongoDB_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Speech_MongoDB_Impl.java @@ -55,28 +55,41 @@ public class Speech_MongoDB_Impl extends Speech_File_Impl implements Speech { } } + /** + * Gibt den vollständigen Text der Rede zurück, indem alle Zeilen- und Kommentarinhalte + * zusammengesetzt werden. Inhalte vom Typ "speaker" werden dabei ignoriert. + * + * @return Der vollständige Redetext als String + */ public String getFullText() { StringBuilder fullText = new StringBuilder(); - // Iteriere über alle Inhalte, die bereits in der Rede gespeichert wurden. + for (Object content : this.getSpeechContents()) { if (content instanceof Line_MongoDB_Impl) { - // Wir gehen davon aus, dass Line_MongoDB_Impl eine Methode getContent() hat, die den Text zurückgibt. + String lineText = ((Line_MongoDB_Impl) content).getContent(); if (lineText != null && !lineText.isEmpty()) { fullText.append(lineText).append("\n"); } } else if (content instanceof Comment_MongoDB_Impl) { - // Wir gehen davon aus, dass Comment_MongoDB_Impl eine Methode getComment() hat, die den Kommentartext liefert. + String commentText = ((Comment_MongoDB_Impl) content).getComment(); if (commentText != null && !commentText.isEmpty()) { fullText.append(commentText).append("\n"); } } - // Inhalte vom Typ "speaker" werden ignoriert. + } return fullText.toString().trim(); } + /** + * Wandelt die aktuelle Rede in ein JCas-Objekt um, um sie z. B. für NLP-Verarbeitung + * weiterzuverwenden. + * + * @return JCas mit dem Redetext und der speechKey als Metadaten + * @throws UIMAException falls ein Fehler bei der Erstellung des JCas auftritt + */ public JCas toCas() throws UIMAException { JCas jCas = JCasFactory.createJCas(); jCas.setDocumentText(this.getFullText()); @@ -86,6 +99,11 @@ public class Speech_MongoDB_Impl extends Speech_File_Impl implements Speech { return jCas; } + /** + * Exportiert die Rede im LaTeX-Format inkl. Platzhalter für Sprecher- und NLP-Informationen. + * + * @return LaTeX-Darstellung der Rede + */ public String toTeX() { StringBuilder tex = new StringBuilder(); @@ -121,6 +139,12 @@ public class Speech_MongoDB_Impl extends Speech_File_Impl implements Speech { return tex.toString(); } + /** + * Wandelt die Rede in ein XML-Element um, das in ein vollständiges XML-Dokument eingefügt werden kann. + * + * @param doc das übergeordnete XML-Dokument + * @return das XML-Element, das die Rede darstellt + */ public Element toXML(org.w3c.dom.Document doc) { Element speech = doc.createElement("speech"); speech.setAttribute("sessionId", String.valueOf(this.getSessionId())); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/SpeechController.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/SpeechController.java index 79769b5..dc9ccab 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/SpeechController.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/SpeechController.java @@ -87,7 +87,7 @@ public class SpeechController { } attributes.put("s", speech); - // Falls ein Video (GridFS-ID) vorhanden ist, abrufen und in Base64 konvertieren + if (speech.getVideo() != null && !speech.getVideo().trim().isEmpty()) { MongoDBHandler mongoDBHandler = new MongoDBHandler(); try { @@ -97,9 +97,7 @@ public class SpeechController { gridFSBucket.downloadToStream(fileId, baos); byte[] videoBytes = baos.toByteArray(); String base64Video = Base64.getEncoder().encodeToString(videoBytes); - // Speichere den Base64-String als neues Feld im Speech-Objekt oder als separates Attribut speech.setVideoData(base64Video); - // Alternativ: attributes.put("videoData", base64Video); } catch (Exception e) { System.err.println("Error fetching video from GridFS: " + e.getMessage()); } finally { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/SpeechVideoUpdater.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/SpeechVideoUpdater.java index 21db09a..82a184a 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/SpeechVideoUpdater.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/SpeechVideoUpdater.java @@ -17,6 +17,8 @@ import java.net.URL; import java.util.ArrayList; import java.util.List; +//Implementiert von Henry + public class SpeechVideoUpdater { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Comment_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Comment_File_Impl.java index 4a824b1..8a9c0d0 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Comment_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Comment_File_Impl.java @@ -45,11 +45,25 @@ public class Comment_File_Impl implements Content, Comment { return MongoDBEntryType.SPEECH_COMMENT; } + /** + * Gibt den Kommentar als LaTeX-kompatiblen String zurück. + * Der Kommentar wird farbig dargestellt (blau) mit dem Label "Kommentar". + * + * @return String im LaTeX-Format für den Kommentar + */ @Override public String toTeX() { return "\\textcolor{blue}{Kommentar}: " + this.getComment() + "\\\n"; } + /** + * Wandelt den Kommentar in ein XML-Element um. + * Das erzeugte Element enthält die contentId, speechId, den Namen des Kommentators + * sowie den eigentlichen Kommentartext als Inhalt. + * + * @param doc Das XML-Dokument, in das das Element eingebettet wird + * @return Ein XML-Element, das den Kommentar repräsentiert + */ @Override public Element toXML(Document doc) { Element comment = doc.createElement("comment"); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Constituency_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Constituency_File_Impl.java index 57e7d18..6829ed3 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Constituency_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Constituency_File_Impl.java @@ -35,6 +35,13 @@ public class Constituency_File_Impl implements Constituency { return MongoDBEntryType.CONSTIUENCY; } + + /** + * Gibt eine HTML-Darstellung des Wahlkreises zurück. + * Die HTML-Ausgabe enthält die ID, den Namen und das Bundesland des Wahlkreises. + * + * @return HTML-String mit den Details des Wahlkreises + */ @Override public String toHTML() { return "
" diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Fraction_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Fraction_File_Impl.java index 804bdbf..7375300 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Fraction_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Fraction_File_Impl.java @@ -47,6 +47,12 @@ public class Fraction_File_Impl implements Fraction { this.name = name; } + /** + * Gibt eine HTML-Darstellung der Fraktion zurück. + * Die HTML-Ausgabe enthält den Namen sowie den Langnamen der Fraktion. + * + * @return HTML-String mit den Details der Fraktion + */ @Override public String toHTML() { return "
" diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/LegislativePeriod_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/LegislativePeriod_File_Impl.java index 920b245..c7b0a7f 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/LegislativePeriod_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/LegislativePeriod_File_Impl.java @@ -42,6 +42,12 @@ public class LegislativePeriod_File_Impl implements LegislativePeriod { return MongoDBEntryType.LEGISLATIVE_PERIOD; } + /** + * Gibt eine HTML-Darstellung der aktuellen Legislaturperiode zurück. + * Die HTML-Ausgabe enthält Informationen wie ID, Start- und Enddatum sowie den Wahlkreis. + * + * @return HTML-String mit den Details der Legislaturperiode + */ @Override public String toHTML() { return "
" diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Line_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Line_File_Impl.java index 72149fc..feec9d2 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Line_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Line_File_Impl.java @@ -37,11 +37,25 @@ public class Line_File_Impl implements Content, Line { return MongoDBEntryType.SPEECH_LINE; } + /** + * Konvertiert die aktuelle Zeile (Line) in LaTeX-Format. + * Jede Zeile endet mit einem Zeilenumbruch (`\\`), wie es in LaTeX üblich ist. + * + * @return Ein String im LaTeX-Format + */ @Override public String toTeX() { return this.getContent() + "\\\n"; } + /** + * Wandelt die Zeile (Line) in ein XML-Element um. + * Dabei werden `contentId` und `speechId` als Attribute gesetzt, + * der eigentliche Inhalt wird als Text eingefügt. + * + * @param doc Das übergeordnete XML-Dokument + * @return Ein XML-Element vom Typ + */ @Override public Element toXML(Document doc) { Element line = doc.createElement("line"); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/MemberOfParliament_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/MemberOfParliament_File_Impl.java index 3ac9f77..df43d0a 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/MemberOfParliament_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/MemberOfParliament_File_Impl.java @@ -70,6 +70,12 @@ public class MemberOfParliament_File_Impl extends Individual_File_Impl implement return MongoDBEntryType.MEMBER_OF_PARLIAMENT; } + /** + * Erzeugt eine HTML-Repräsentation eines Abgeordneten mit Basisinformationen, + * Foto und Daten zu den legislativen Perioden. + * + * @return HTML-String zur Darstellung des Abgeordneten + */ @Override public String toHTML() { StringBuilder html = new StringBuilder(); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Session_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Session_File_Impl.java index 8a69053..526d4cc 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Session_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Session_File_Impl.java @@ -57,6 +57,12 @@ public class Session_File_Impl implements Session { this.agendaItems.add(item); } + /** + * Gibt die Session-Informationen als HTML-String zurück. + * Enthält Angaben zur ID, zur Legislaturperiode sowie Start- und Endzeitpunkt der Sitzung. + * + * @return HTML-Darstellung der Sitzung als String + */ @Override public String toHTML() { return "
" diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speaker_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speaker_File_Impl.java index 8959244..d060e17 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speaker_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speaker_File_Impl.java @@ -52,11 +52,24 @@ public class Speaker_File_Impl implements Content, Speaker { return MongoDBEntryType.SPEECH_SPEAKER; } + /** + * Gibt die Sprecherdaten als TeX-String zurück. + * Der Name des Redners bzw. der Rednerin wird farblich hervorgehoben. + * + * @return TeX-Darstellung des Redners/der Rednerin + */ @Override public String toTeX() { return "\\textcolor{blue}{Redner/Rednerin}: " + this.getSpeakerName() + "\\\n"; } + /** + * Erstellt ein XML-Element mit Informationen zum Redner/zur Rednerin. + * Enthält ID, Name, Fraktion und zugehörige Redeinformationen. + * + * @param doc Das übergeordnete XML-Dokument + * @return XML-Element für den Redner/die Rednerin + */ @Override public Element toXML(Document doc) { Element speaker = doc.createElement("speaker"); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speech_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speech_File_Impl.java index aa62491..3031055 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speech_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speech_File_Impl.java @@ -83,6 +83,14 @@ public class Speech_File_Impl implements Speech { //Logger.pink("Added paragraph to speech: " + paragraph); } + /** + * Gibt die Rede als HTML-Darstellung zurück. + * Die HTML-Ausgabe enthält Informationen zur Sitzung, zum Redner und zur Fraktion. + *

+ * Hinweis: Es ist geplant, die gesprochenen Textzeilen visuell hervorzuheben (siehe TODO). + * + * @return HTML-String, der die Metadaten der Rede repräsentiert + */ @Override public String toHTML() { //TODO: Implement a logic that highlights the lines that the speaker is saying @@ -105,6 +113,13 @@ public class Speech_File_Impl implements Speech { return null; } + /** + * Gibt die gesamte Rede im TeX-Format zurück. + * Der Inhalt der Rede wird Abschnitt für Abschnitt eingebunden, + * zusätzlich wird ein Platzhalter für NLP-Metadaten eingefügt. + * + * @return TeX-Darstellung der Rede inklusive NLP-Platzhalter und Redeinhalten + */ @Override public String toTeX() { StringBuilder tex = new StringBuilder(); @@ -124,6 +139,14 @@ public class Speech_File_Impl implements Speech { return tex.toString(); } + /** + * Erstellt ein XML-Element für die gesamte Rede. + * Es werden alle relevanten Metadaten der Rede sowie die Inhalte + * (z. B. Redner, Textzeilen, Kommentare) als Kindelemente hinzugefügt. + * + * @param doc Das XML-Dokument, zu dem das Element gehört + * @return XML-Element, das die Rede und deren Inhalte beschreibt + */ @Override public Element toXML(Document doc) { Element speech = doc.createElement("speech"); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/SpeechParser.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/SpeechParser.java index e7e3ede..3572151 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/SpeechParser.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/SpeechParser.java @@ -237,7 +237,12 @@ public class SpeechParser { } /** - * Konvertiert ein org.w3c.dom.Document in eine temporäre Datei. + * Konvertiert ein XML-Dokument (org.w3c.dom.Document) in eine temporäre Datei. + * Diese Datei wird zur weiteren Verarbeitung, z. B. mit XML-Parsern, verwendet. + * + * @param xmlDoc Das zu konvertierende XML-Dokument. + * @return Eine temporäre Datei, die den Inhalt des XML-Dokuments enthält. + * @throws Exception Falls beim Erstellen oder Schreiben der Datei ein Fehler auftritt. */ private File convertDocumentToFile(org.w3c.dom.Document xmlDoc) throws Exception { File tempFile = File.createTempFile("session_", ".xml");