documentation updated
This commit is contained in:
parent
f5cbbb8197
commit
85ba4a4424
13 changed files with 132 additions and 8 deletions
|
@ -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()));
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -17,6 +17,8 @@ import java.net.URL;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
//Implementiert von Henry
|
||||
|
||||
public class SpeechVideoUpdater {
|
||||
|
||||
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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'>"
|
||||
|
|
|
@ -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'>"
|
||||
|
|
|
@ -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'>"
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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'>"
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue