documentation updated

This commit is contained in:
Picman2000 2025-03-23 23:17:29 +01:00
parent f5cbbb8197
commit 85ba4a4424
13 changed files with 132 additions and 8 deletions

View file

@ -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()));

View file

@ -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 {

View file

@ -17,6 +17,8 @@ import java.net.URL;
import java.util.ArrayList;
import java.util.List;
//Implementiert von Henry
public class SpeechVideoUpdater {

View file

@ -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");

View file

@ -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 "<div class='constituency'>"

View file

@ -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 "<div class='fraction'>"

View file

@ -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 "<div class='legislative-period'>"

View file

@ -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 <line>
*/
@Override
public Element toXML(Document doc) {
Element line = doc.createElement("line");

View file

@ -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();

View file

@ -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 "<div class='session'>"

View file

@ -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");

View file

@ -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.
* <p>
* 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");

View file

@ -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");