diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 418a641..0000000 Binary files a/.DS_Store and /dev/null differ diff --git a/.gitignore b/.gitignore index b72e534..c507e47 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ .idea/ -.vscode/ target/ .DS_Store \ No newline at end of file diff --git a/Benutzerhandbuch.txt b/Benutzerhandbuch.txt deleted file mode 100644 index edbf900..0000000 --- a/Benutzerhandbuch.txt +++ /dev/null @@ -1,38 +0,0 @@ -BENUTZERHANDBUCH MULTIMODAL PARLIAMENT EXPLORER -GRUPPE_05_01 - -Der Multimodal Parliament Explorer ist eine client-server basierte Anwendung zum automatischen abrufen, analysieren, visualisieren und exportieren aller Reden des Bundestags der aktuellen Legislaturperiode. - -Mit unserem Programm kann man Reden des Bundestags interaktiv erkunden, Statistiken zu den zugehörigen Reden einsehen und diese selbst weiterverwenden. - - -1. Systemanforderungen - -- Java 17+ -- Maven -- Einen modernen Webbrowser (Chrome, Firefox, Edge) -- Einen Internetzugang - - -2. Hauptfunktionen - -Datenimport: -Automatischer Download der XML Protokolle inklusive Videos - -NLP-Analyse: -Analyse der Reden durch einen NLP-Docker - -Datenexploration: -Filterbar nach Redner, Thema und Datum - -Visualisierung der analysierten Daten: -Durch verschiedene Charts werden die Analysedaten anschaulich und verdaubar wiedergegeben - -Export: -Alle Reden können als PDF und XML exportiert werden. - - -3. Support und Weiterführende Dokumentation - -Detaillierte Entwicklungs‑ und Nutzungsanleitungen finden Sie im Repository unter /doc oder auf unserer GitLab-Page bei https://ppr.gitlab.texttechnologylab.org/leonkastner/multimodal-parliament-explorer-docu -Bei Fragen oder Fehlern können sie sich gerne bei uns melden. \ No newline at end of file diff --git a/README.md b/README.md index b57ac66..05365b3 100644 --- a/README.md +++ b/README.md @@ -1,196 +1,12 @@ # Multimodal Parliament Explorer (Gruppe_05_1) -## Umgebung - wichtiger Hinweis! - -### Docker und NLP - -Damit der Zugriff auf die Docker-Treiber funktioniert, muss man in IntelliJ folgendes tun: - -Edit Run Environment --> Modify Option --> Add VM options - -Dann im neu erscheinenden "VM options"-Feld folgendes schreiben: - ---add-opens java.base/java.util=ALL-UNNAMED - -### LaTex Export - -Damit der LaTeX Export funktioniert, muss der LaTeX Compiler installiert sein. - -Unter Ubuntu (Linux) kann das Paket mit dem folgenden Befehl installiert werden: - -```shell -sudo apt install texlive-latex-extra -``` - -Unter Windows ist die Installation über MikTex möglich. - -Ist kein Compiler installiert, wird beim Start des Programms eine Warnung ausgegeben: - -```shell --------------------------------------------------o -TeX SDK not installed. PDF export will not work. --------------------------------------------------o -``` - -## Aufruf - -Der Nutzer führt die **Main.java** Datei aus. -Folgende Command Line Argumente werden akzeptiert: - -- onlyRunWeb: Fährt die WebServies hoch und wartet auf Requests. Die Einstiegsseite kann im Browser geöffnet werden: http://localhost:5876 (Port 5876 ist in der Resourcendatei javalin.properties definiert). In der Regel würde man Main nur mit diesem Parameter aufrufen. -- uploadMemberPhotos: Um Parlamentarierfotos vom Resource-Verzeichnis in die Datenbank hochzuladen. -- forceUploadMembers: Lädt die Daten der Parlamentariern erneut in die Datenbank. -- forceUploadSpeeches: Lädt die Reden erneut in die Datenbank, führt die NLP-Analyse auf der Reden und speichert die Analyseergebnisse in die Datenbank. -- rebuildMetadata: Berechnet die Metadaten neu. In der Metadata-Collection stehen Daten, welche oft benötigt werden, aber nicht jedes Mal erneut berechnet werden sollen. Momentan sind es die Liste der Parteien und die Liste der möglichen NLP-Topics. -- debugLogging: Diese Flag bestimmt, ob Debug-Ausgaben des Loggers angezeigt werden sollen. - -## Dokumentation - -- Use Case Diagramm -- Package/Klassen-Diagramm -- Die Planung -- Das Gantt Diagramm -stehen im "doku"-Verzeichnis. - -Die Planung beinhaltet: -- Die Liste der Aufgaben, nach Bereichen gruppiert. Die Bereiche sind: Planung, Domain-Entitäten, XML, Datenbank, Rest Services, Front End, NLP-Verarbeitug, Export, Dokumentation -- Wer macht was -- Geschätzter Aufwand (niedrig / mittel / hoch) - - -### Classdiagram puml generator - -Das Classdiagram wird durch den puml generator generiert: +## Classdiagram puml generator ```shell python puml_generator.py ``` -Die aktuelle Version des Klassen-/Package-Diagramms ist bei der Abgabe unter `generated_class_diagram.puml` zu finden. Außerdem gibt es das Diagram auch als LaTe, PDF und Bild (png) Version im `/doc` Ordner zu funden. - -## Datenbank - -Die wichtigsten Collections sind *"speech"* und *"speaker"*. In "pictures" stehen die Bilder der Abgeordneten. In "metadata" stehen die bereits erwähnten Metadaten. -Die Collections "agendaItems" und "sessions" werden zwar initial befüllt und kurzzeitig verwendet, um die Zeitstempel der Reden sowie die Agendapunkte zu konstruieren, werden aber danach nicht weiter verwendet. - -## Erzeugung der NLP-Daten -Ressourcenbereitstellung: -- Die benötigten Annotationen werden aus dem Ressourcenordner geladen -- Es wird vorausgesetzt, dass in der "speeches"-Collection eine ZIP-Datei (20.zip) vorhanden ist, die alle erforderlichen Annotationen enthält -- Zusätzlich muss das TypeSystem in Form der Datei TypeSystem.xml vorliegen, um die korrekte Umwandlung der Annotationen in den JCas zu ermöglichen. - -Abruf der Reden: -- Die Reden werden anhand der eindeutigen ID (speechKey) aus der Datenbank abgerufen. -- Dabei werden die Reden, die bereits annotiert vorliegen, zur weiteren Verarbeitung selektiert - -Annotationen verarbeiten: -- Die geladenen Annotationen werden in einen JCas (Java Common Analysis Structure) umgewandelt. -- Im JCas werden die Annotationen serialisiert, sodass sie in einem einheitlichen Format vorliegen. -- Anschließend werden diese serialisierten Daten in der Datenbank dem entsprechenden Speech-Dokument zugeordnet und gespeichert - -Remote-Verarbeitung: -- Reden, die nicht in der 20.zip vorhanden sind – also noch nicht lokal annotiert wurden – werden anschließend durch den RemoteDriver verarbeitet. -- Der RemoteDriver ruft dabei externe NLP-Komponenten (z. B. spaCy oder Vader) auf, um fehlende Annotationen zu erzeugen. -- Auch die Ergebnisse der Remote-Verarbeitung werden serialisiert und in der Datenbank an das zugehörige Speech-Dokument angehängt. - - -## Komponenten und Package Struktur -- database: die Klasse *MongoDBHandler* kümmert sich um die Herstellung der Datenbankverbindung und um generelle CRUD-Operationen. Die Klasse *MongoPprUtils* kümmert sich um das Lesen der Objekte und Datenstrukturen, die für diese Übung notwendig sind. - -- domain: hier werden die Entitäten definiert. Subpackage "database" behandelt die Objekte, die aus der Datenbank kommen. Subpackage "html" behandelt die Objekte, die nicht in der Datenbank sind und lediglich angezeigt werden. - -- rest: alles, was mit den WebServices zu tun hat - die 4 Controller (für Parlamentarier, Fotos, Videos und Reden), eine Configklasse und der Handler. Im Handler wird die Javalin-Konfiguration definiert sowie die Routes für die 8 Endpoints. - -- export: alles, was mit dem Export (LaTex/PDF, XML) zu tun hat, findet hier Platz. - -- xml: für das Einlesen der Parlamentarier- und Rede-Daten. - -- util: eine kleine Sammlung von Utility-Klassen. - -- nlp: Utils für die NLP-Verarbeitung - -- exceptions: für die Exceptions - - -## Struktur des resources-Ordner - -- config: config files für javalin und für XML (im letzteren steht die URL zum Herunterladen der Parlamentarier) - -- plenarprotokolle: enthält die DTD-Datei zum Parsen der Abgeordnetendaten - -- speeches: enthält die Datei TypeSystem.xml - -- static: enthält das Stylesheet und das Favicon - -- templates: enthält die FreeMarker-Templates - -- tex: enthält die nötigen Resourcen für Latex, etwa die preamble.tex - - -## Ablauf / Workflow - -Wir gehen hier vom Workflow des Endnutzers aus. - -Wie man die Daten hochlädt, wurde bereit oben kurz erklärt. - -1. Die Klasse Main wird ausgefüht und zwar mit dem "onlyRunWeb" Parameter. -2. Javalin fährt die Webservices hoch und wartet auf Requests. -3. Der User lädt die Einstiegsseite im Browser, etwas http://localhost:5876 . Die Startseite wird angezeigt. Das Hauptmenü enthält im Burgermenü Links zu "Parlamentarier", "Reden", "Exportieren" sowie "Home" und "Über". - -### Parlamentarier-Seite - -Eine Liste der Parlamentarier wird angezeigt. Man kann die Liste filtern. Man kann auf die jeweiligen Parlamentarier klicken und gelangt dann auf die Seite eines Parlamentariers. - -Die Seite eines Parlamentariers beinhaltet Name, Foto, persöhnliche Daten, Mitgliedschaften und einen Link zu den Reden des Parlamentariers. - -### Reden-Seite - -Es werden alle Reden der jetzigen Legislaturperiode angezeigt. -Man kann die Liste filtern (MOMENTAN NOCH ZU IMPLEMENTIEREN). Man kann auf die jeweilige Rede klicken und gelangt dann auf die Rede-Seite. - -### Redeseite - -Folgende Informationen werden angezeigt: -- Informationen zum Redner (Name, Partei, Foto). -- Informationen zur Rede (Datum, Uhrzeit, Agendapunkt). -- Redetext. Vorstellung und Kommentare werden farblich gekennzeichnet. -- Video bei Reden der Sitzung 187 Tagesordnungspunkt 4 -- NLP Informationen. - -Der NLP-Abschnitt beinhaltet folgende Informationen: -- Topics Information (als Bubble Chart): dabei entspricht die Größe der Bubbles der Häufigkeit/Prävalenz der Topics. Durch einen Mouse-Hover verändert sich die Schriftgröße, damit man auch die Texte der kleinen Bubbles sehen kann. -- POS Information (als Bar Chart): Auf der X-Achse werden alle verschiedenen POS-Elemente die in der Rede erfasst wurden abgebildet, auf der Y-Achse die genaue Anzahl dieser Elemente. -- Sentiments Information (als Radar Chart): Dieses Chart besitzt 3 Achsen, eine für den wert des positiven sentiments, eine für das negative sentiment, und die letzte für das neutrale sentiment. Die mitte des Charts steht für den Wert 0, und jede Ecke steht für den Wert 1 des zugehörigen sentiments. Es wird jeder analysierte Satz inklusive die gesamte Rede abgebildet. Ein Polygon steht hierbei für einen bestimmten analysierten Abschnitt der rede. Rechts neben dem Chart ist eine Legende aller Analysierten Objekte, von welchem das erste die Werte der gesamten Rede, und alle danach die einzelnen Satzteile darstellen. -- Named Entities (als Sunburst Chart): der innere Kreis steht für den Typ (LOC, PER, ORG, MISC). Der äußere Kreis steht für die jeweiligen Named Entities. Die Größe der Bögen entsprechen den Häufigkeiten der Entitäten bzw. der Typen. - - -Ein "Zurück"-Button ist auf den Seiten implementiert. Er führt erwartungsgemäß zur vorherigen Seite. - -### Charts-Seite - -Gleiche Struktur wie die Charts für die einzelnen reden, hier nur auf alle in der Datenbank vorhandenen Reden angewendet. Die sammlung der Daten passiert hier dynamisch ab Abruf der Seite. - -### Export-Seite - -Wie auch auf den einzelnen Seiten, gibt es hier die Option Reden zu exportieren. Es kann zwischen PDF und XML gewählt werden. Die verschiedenen Export-Optionen sind: -- Export einer einzelnen Rede (mit Reden-ID) -- Export aller Reden eines Parlamentariers (mit Parlamentarier-ID) -- Export aller Reden eines NLP-Topics (mit Topic-String) -- Export aller Reden (ohne Parameter) - -Achtung: Der Export kann je nach Anzahl der Reden und der gewählten Option einige Zeit in Anspruch nehmen. Meist wird der Nutzer darüber informiert, dass der Prozess länger dauern kann. - - -## Verschiedenes - -### Nachladen neuer Reden (Thread) - -Alle 10 Minuten checkt das Programm, ob auf der Bundestags.de Website neue Reden erschienen sind. -Wenn neue Reden erkannt werden, werden diese heruntergeladen, mit dem RemoteDriver verarbeitert und abschließend noch in -die Datenbank hochegladen. Auch wenn einfach so Reden in die Datenbank hinzugefügt werden, werden diese verarbeitet. - - -### Upload member Images +## Upload member Images Crawl member images (not required as already in repository) ```shell cd src/main/resources diff --git a/doc/Gantt_Chart_PPR_Abschlussprojekt.ods b/doc/Gantt_Chart_PPR_Abschlussprojekt.ods deleted file mode 100644 index 2545ec0..0000000 Binary files a/doc/Gantt_Chart_PPR_Abschlussprojekt.ods and /dev/null differ diff --git a/doc/Gantt_Chart_PPR_Abschlussprojekt.pdf b/doc/Gantt_Chart_PPR_Abschlussprojekt.pdf deleted file mode 100644 index 235a824..0000000 Binary files a/doc/Gantt_Chart_PPR_Abschlussprojekt.pdf and /dev/null differ diff --git a/doc/PPR_Mockup.jpg b/doc/PPR_Mockup.jpg deleted file mode 100644 index 5a79ca3..0000000 Binary files a/doc/PPR_Mockup.jpg and /dev/null differ diff --git a/doc/UseCasePlantUML b/doc/UseCasePlantUML deleted file mode 100644 index 56ebd11..0000000 --- a/doc/UseCasePlantUML +++ /dev/null @@ -1,77 +0,0 @@ -@startuml -left to right direction -actor Admin -actor Nutzer -actor SystemScheduler as "Zeitgesteuerter Dienst" - -rectangle "Multimodal Parliament Explorer" { - - package "Datenimport" { - usecase "XML Protokolle herunterladen" as UC1 - usecase "XML verarbeiten & speichern" as UC2 - usecase "Videos herunterladen & speichern" as UC3 - usecase "Fotos der Abgeordneten speichern" as UC4 - usecase "NLP-Daten einlesen & verarbeiten" as UC5 - } - - package "NLP Verarbeitung" { - usecase "NLP Analyse mit DUUI durchführen" as UC6 - usecase "NLP-Resultate serialisieren\n& in DB speichern" as UC7 - } - - package "Export / Serialisierung" { - usecase "Rede als PDF exportieren" as UC8 - usecase "Rede als XML exportieren" as UC9 - usecase "Rede als XMI exportieren" as UC10 - } - - package "Visualisierung & UI" { - usecase "Reden durchsuchen" as UC11 - usecase "Rede anzeigen (HTML, NLP, Video)" as UC12 - usecase "POS / Sentiment / NER / Topics visualisieren" as UC13 - } - - package "Datenbankoperationen" { - usecase "Reden / Sessions / AgendaItems\nin MongoDB speichern" as UC14 - usecase "Metadaten zu Reden abfragen" as UC15 - usecase "Video-Referenzen zu Reden abfragen" as UC16 - } - - package "Systemdienste" { - usecase "Auf neue Protokolle automatisch prüfen und herunterladen" as UC17 - usecase "Neue NLP-Reden automatisch analysieren" as UC18 - } - - ' Verbindungen - Admin--> UC1 - Admin--> UC2 - Admin--> UC3 - Admin--> UC4 - Admin--> UC5 - Admin--> UC6 - Admin--> UC7 - Admin--> UC8 - Admin--> UC9 - Admin--> UC10 - Nutzer--> UC8 - Nutzer--> UC9 - Nutzer--> UC10 - Nutzer --> UC11 - Nutzer --> UC12 - Nutzer --> UC13 - - UC6 --> UC7 - UC5 --> UC6 - UC2 --> UC14 - UC3 --> UC14 - UC4 --> UC14 - UC14 --> UC15 - UC14 --> UC16 - - UC12 --> UC13 - UC12 --> UC16 - - SystemScheduler --> UC17 - SystemScheduler --> UC18 -} -@enduml \ No newline at end of file diff --git a/doc/class_diagram.pdf b/doc/class_diagram.pdf deleted file mode 100644 index a352939..0000000 Binary files a/doc/class_diagram.pdf and /dev/null differ diff --git a/doc/class_diagram.png b/doc/class_diagram.png deleted file mode 100644 index 50dcfef..0000000 Binary files a/doc/class_diagram.png and /dev/null differ diff --git a/doc/class_diagram.tex b/doc/class_diagram.tex deleted file mode 100644 index 5a97aaa..0000000 --- a/doc/class_diagram.tex +++ /dev/null @@ -1,3564 +0,0 @@ -\documentclass{standalone} -\usepackage{tikz} -\usepackage{aeguill} -\begin{document} -% generated by Plantuml 1.2024.7 - \definecolor{plantucolor0000}{RGB}{0,0,0} - \definecolor{plantucolor0001}{RGB}{241,241,241} - \definecolor{plantucolor0002}{RGB}{24,24,24} - \definecolor{plantucolor0003}{RGB}{173,209,178} - \definecolor{plantucolor0004}{RGB}{3,128,72} - \definecolor{plantucolor0005}{RGB}{200,41,48} - \definecolor{plantucolor0006}{RGB}{132,190,132} - \definecolor{plantucolor0007}{RGB}{242,77,92} - \definecolor{plantucolor0008}{RGB}{180,167,229} - \definecolor{plantucolor0009}{RGB}{179,141,34} - \definecolor{plantucolor0010}{RGB}{235,147,127} - \begin{tikzpicture}[yscale=-1 - ,pstyle0/.style={color=black,line width=1.5pt} - ,pstyle1/.style={color=plantucolor0002,fill=plantucolor0001,line width=0.5pt} - ,pstyle2/.style={color=plantucolor0002,fill=plantucolor0003,line width=1.0pt} - ,pstyle3/.style={color=plantucolor0002,line width=0.5pt} - ,pstyle4/.style={color=plantucolor0004,line width=1.0pt} - ,pstyle5/.style={color=plantucolor0005,line width=1.0pt} - ,pstyle6/.style={color=plantucolor0004,fill=plantucolor0006,line width=1.0pt} - ,pstyle7/.style={color=plantucolor0005,fill=plantucolor0007,line width=1.0pt} - ,pstyle8/.style={color=plantucolor0002,fill=plantucolor0008,line width=1.0pt} - ,pstyle10/.style={color=plantucolor0002,fill=plantucolor0010,line width=1.0pt} - ,pstyle11/.style={color=plantucolor0002,line width=1.0pt} - ,pstyle12/.style={color=plantucolor0002,fill=plantucolor0002,line width=1.0pt} - ] - \node at (6910.5016pt,10pt)[below right,color=black]{\textbf{org.texttechnologylab.project.gruppe\_05\_1}}; - \draw[pstyle0] (70.91pt,46.6699pt) -- (99.4498pt,46.6699pt) arc(270:360:3.75pt) -- (108.9498pt,71.7378pt) -- (13847.91pt,71.7378pt) arc(270:360:2.5pt) -- (13850.41pt,4723.8699pt) arc(0:90:2.5pt) -- (70.91pt,4726.3699pt) arc(90:180:2.5pt) -- (68.41pt,49.1699pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (68.41pt,71.7378pt) -- (108.9498pt,71.7378pt); - \node at (72.41pt,48.6699pt)[below right,color=black]{\textbf{org}}; - \draw[pstyle0] (94.91pt,92.6699pt) -- (244.9851pt,92.6699pt) arc(270:360:3.75pt) -- (254.4851pt,117.7378pt) -- (13823.91pt,117.7378pt) arc(270:360:2.5pt) -- (13826.41pt,4699.8699pt) arc(0:90:2.5pt) -- (94.91pt,4702.3699pt) arc(90:180:2.5pt) -- (92.41pt,95.1699pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (92.41pt,117.7378pt) -- (254.4851pt,117.7378pt); - \node at (96.41pt,94.6699pt)[below right,color=black]{\textbf{texttechnologylab}}; - \draw[pstyle0] (118.91pt,138.6699pt) -- (178.8357pt,138.6699pt) arc(270:360:3.75pt) -- (188.3357pt,163.7378pt) -- (13799.91pt,163.7378pt) arc(270:360:2.5pt) -- (13802.41pt,4675.8699pt) arc(0:90:2.5pt) -- (118.91pt,4678.3699pt) arc(90:180:2.5pt) -- (116.41pt,141.1699pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (116.41pt,163.7378pt) -- (188.3357pt,163.7378pt); - \node at (120.41pt,140.6699pt)[below right,color=black]{\textbf{project}}; - \draw[pstyle0] (142.91pt,184.6699pt) -- (244.9325pt,184.6699pt) arc(270:360:3.75pt) -- (254.4325pt,209.7378pt) -- (13775.91pt,209.7378pt) arc(270:360:2.5pt) -- (13778.41pt,4651.8699pt) arc(0:90:2.5pt) -- (142.91pt,4654.3699pt) arc(90:180:2.5pt) -- (140.41pt,187.1699pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (140.41pt,209.7378pt) -- (254.4325pt,209.7378pt); - \node at (144.41pt,186.6699pt)[below right,color=black]{\textbf{gruppe\_05\_1}}; - \draw[pstyle0] (13017.91pt,1120.6499pt) -- (13045.9143pt,1120.6499pt) arc(270:360:3.75pt) -- (13055.4143pt,1145.7178pt) -- (13664.91pt,1145.7178pt) arc(270:360:2.5pt) -- (13667.41pt,1506.1699pt) arc(0:90:2.5pt) -- (13017.91pt,1508.6699pt) arc(90:180:2.5pt) -- (13015.41pt,1123.1499pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (13015.41pt,1145.7178pt) -- (13055.4143pt,1145.7178pt); - \node at (13019.41pt,1122.6499pt)[below right,color=black]{\textbf{nlp}}; - \draw[pstyle0] (5371.91pt,1206.4499pt) -- (5405.0587pt,1206.4499pt) arc(270:360:3.75pt) -- (5414.5587pt,1231.5178pt) -- (7128.91pt,1231.5178pt) arc(270:360:2.5pt) -- (7131.41pt,1420.3599pt) arc(0:90:2.5pt) -- (5371.91pt,1422.8599pt) arc(90:180:2.5pt) -- (5369.41pt,1208.9499pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (5369.41pt,1231.5178pt) -- (5414.5587pt,1231.5178pt); - \node at (5373.41pt,1208.4499pt)[below right,color=black]{\textbf{rest}}; - \draw[pstyle0] (4572.91pt,2811.6699pt) -- (4602.7318pt,2811.6699pt) arc(270:360:3.75pt) -- (4612.2318pt,2836.7378pt) -- (6521.91pt,2836.7378pt) arc(270:360:2.5pt) -- (6524.41pt,3159.0599pt) arc(0:90:2.5pt) -- (4572.91pt,3161.5599pt) arc(90:180:2.5pt) -- (4570.41pt,2814.1699pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (4570.41pt,2836.7378pt) -- (4612.2318pt,2836.7378pt); - \node at (4574.41pt,2813.6699pt)[below right,color=black]{\textbf{util}}; - \draw[pstyle0] (8054.91pt,961.9099pt) -- (8088.1074pt,961.9099pt) arc(270:360:3.75pt) -- (8097.6074pt,986.9778pt) -- (12946.91pt,986.9778pt) arc(270:360:2.5pt) -- (12949.41pt,3083.1199pt) arc(0:90:2.5pt) -- (8054.91pt,3085.6199pt) arc(90:180:2.5pt) -- (8052.41pt,964.4099pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (8052.41pt,986.9778pt) -- (8097.6074pt,986.9778pt); - \node at (8056.41pt,963.9099pt)[below right,color=black]{\textbf{xml}}; - \draw[pstyle0] (9788.91pt,1007.9099pt) -- (9863.2142pt,1007.9099pt) arc(270:360:3.75pt) -- (9872.7142pt,1032.9778pt) -- (12922.91pt,1032.9778pt) arc(270:360:2.5pt) -- (12925.41pt,3059.1199pt) arc(0:90:2.5pt) -- (9788.91pt,3061.6199pt) arc(90:180:2.5pt) -- (9786.41pt,1010.4099pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (9786.41pt,1032.9778pt) -- (9872.7142pt,1032.9778pt); - \node at (9790.41pt,1009.9099pt)[below right,color=black]{\textbf{speeches}}; - \draw[pstyle0] (9924.91pt,1972.2999pt) -- (10009.568pt,1972.2999pt) arc(270:360:3.75pt) -- (10019.068pt,1997.3678pt) -- (12002.91pt,1997.3678pt) arc(270:360:2.5pt) -- (12005.41pt,2109.9299pt) arc(0:90:2.5pt) -- (9924.91pt,2112.4299pt) arc(90:180:2.5pt) -- (9922.41pt,1974.7999pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (9922.41pt,1997.3678pt) -- (10019.068pt,1997.3678pt); - \node at (9926.41pt,1974.2999pt)[below right,color=black]{\textbf{Interfaces}}; - \draw[pstyle0] (10065.91pt,1053.9099pt) -- (10113.4047pt,1053.9099pt) arc(270:360:3.75pt) -- (10122.9047pt,1078.9778pt) -- (12898.91pt,1078.9778pt) arc(270:360:2.5pt) -- (12901.41pt,1572.8999pt) arc(0:90:2.5pt) -- (10065.91pt,1575.3999pt) arc(90:180:2.5pt) -- (10063.41pt,1056.4099pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (10063.41pt,1078.9778pt) -- (10122.9047pt,1078.9778pt); - \node at (10067.41pt,1055.9099pt)[below right,color=black]{\textbf{Impls}}; - \draw[pstyle0] (11731.91pt,2935.6199pt) -- (11787.6488pt,2935.6199pt) arc(270:360:3.75pt) -- (11797.1488pt,2960.6878pt) -- (11946.91pt,2960.6878pt) arc(270:360:2.5pt) -- (11949.41pt,3035.1199pt) arc(0:90:2.5pt) -- (11731.91pt,3037.6199pt) arc(90:180:2.5pt) -- (11729.41pt,2938.1199pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (11729.41pt,2960.6878pt) -- (11797.1488pt,2960.6878pt); - \node at (11733.41pt,2937.6199pt)[below right,color=black]{\textbf{enums}}; - \draw[pstyle0] (9558.91pt,1981.8299pt) -- (9625.3109pt,1981.8299pt) arc(270:360:3.75pt) -- (9634.8109pt,2006.8978pt) -- (9759.91pt,2006.8978pt) arc(270:360:2.5pt) -- (9762.41pt,2100.3999pt) arc(0:90:2.5pt) -- (9558.91pt,2102.8999pt) arc(90:180:2.5pt) -- (9556.41pt,1984.3299pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (9556.41pt,2006.8978pt) -- (9634.8109pt,2006.8978pt); - \node at (9560.41pt,1983.8299pt)[below right,color=black]{\textbf{speaker}}; - \draw[pstyle0] (8078.91pt,1981.8299pt) -- (8116.9759pt,1981.8299pt) arc(270:360:3.75pt) -- (8126.4759pt,2006.8978pt) -- (9529.91pt,2006.8978pt) arc(270:360:2.5pt) -- (9532.41pt,2100.3999pt) arc(0:90:2.5pt) -- (8078.91pt,2102.8999pt) arc(90:180:2.5pt) -- (8076.41pt,1984.3299pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (8076.41pt,2006.8978pt) -- (8126.4759pt,2006.8978pt); - \node at (8080.41pt,1983.8299pt)[below right,color=black]{\textbf{mdb}}; - \draw[pstyle0] (1595.91pt,230.6699pt) -- (1670.8471pt,230.6699pt) arc(270:360:3.75pt) -- (1680.3471pt,255.7378pt) -- (5104.91pt,255.7378pt) arc(270:360:2.5pt) -- (5107.41pt,2500.8299pt) arc(0:90:2.5pt) -- (1595.91pt,2503.3299pt) arc(90:180:2.5pt) -- (1593.41pt,233.1699pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (1593.41pt,255.7378pt) -- (1680.3471pt,255.7378pt); - \node at (1597.41pt,232.6699pt)[below right,color=black]{\textbf{database}}; - \draw[pstyle0] (1795.91pt,1169.9899pt) -- (1897.5755pt,1169.9899pt) arc(270:360:3.75pt) -- (1907.0755pt,1195.0578pt) -- (4700.91pt,1195.0578pt) arc(270:360:2.5pt) -- (4703.41pt,2157.9299pt) arc(0:90:2.5pt) -- (1795.91pt,2160.4299pt) arc(90:180:2.5pt) -- (1793.41pt,1172.4899pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (1793.41pt,1195.0578pt) -- (1907.0755pt,1195.0578pt); - \node at (1797.41pt,1171.9899pt)[below right,color=black]{\textbf{domainimpl}}; - \draw[pstyle0] (1819.91pt,1215.9899pt) -- (1857.9759pt,1215.9899pt) arc(270:360:3.75pt) -- (1867.4759pt,1241.0578pt) -- (4676.91pt,1241.0578pt) arc(270:360:2.5pt) -- (4679.41pt,2133.9299pt) arc(0:90:2.5pt) -- (1819.91pt,2136.4299pt) arc(90:180:2.5pt) -- (1817.41pt,1218.4899pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (1817.41pt,1241.0578pt) -- (1867.4759pt,1241.0578pt); - \node at (1821.41pt,1217.9899pt)[below right,color=black]{\textbf{mdb}}; - \draw[pstyle0] (3907.91pt,1972.2999pt) -- (3996.6576pt,1972.2999pt) arc(270:360:3.75pt) -- (4006.1576pt,1997.3678pt) -- (4652.91pt,1997.3678pt) arc(270:360:2.5pt) -- (4655.41pt,2109.9299pt) arc(0:90:2.5pt) -- (3907.91pt,2112.4299pt) arc(90:180:2.5pt) -- (3905.41pt,1974.7999pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (3905.41pt,1997.3678pt) -- (4006.1576pt,1997.3678pt); - \node at (3909.41pt,1974.2999pt)[below right,color=black]{\textbf{speechline}}; - \draw[pstyle0] (279.91pt,2527.3299pt) -- (343.6819pt,2527.3299pt) arc(270:360:3.75pt) -- (353.1819pt,2552.3978pt) -- (4527.91pt,2552.3978pt) arc(270:360:2.5pt) -- (4530.41pt,4627.8699pt) arc(0:90:2.5pt) -- (279.91pt,4630.3699pt) arc(90:180:2.5pt) -- (277.41pt,2529.8299pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (277.41pt,2552.3978pt) -- (353.1819pt,2552.3978pt); - \node at (281.41pt,2529.3299pt)[below right,color=black]{\textbf{domain}}; - \draw[pstyle0] (1041.91pt,3423.9099pt) -- (1108.3109pt,3423.9099pt) arc(270:360:3.75pt) -- (1117.8109pt,3448.9778pt) -- (1435.91pt,3448.9778pt) arc(270:360:2.5pt) -- (1438.41pt,4171.7199pt) arc(0:90:2.5pt) -- (1041.91pt,4174.2199pt) arc(90:180:2.5pt) -- (1039.41pt,3426.4099pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (1039.41pt,3448.9778pt) -- (1117.8109pt,3448.9778pt); - \node at (1043.41pt,3425.9099pt)[below right,color=black]{\textbf{speaker}}; - \draw[pstyle0] (401.91pt,2573.3299pt) -- (442.0207pt,2573.3299pt) arc(270:360:3.75pt) -- (451.5207pt,2598.3978pt) -- (1435.91pt,2598.3978pt) arc(270:360:2.5pt) -- (1438.41pt,3397.4099pt) arc(0:90:2.5pt) -- (401.91pt,3399.9099pt) arc(90:180:2.5pt) -- (399.41pt,2575.8299pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (399.41pt,2598.3978pt) -- (451.5207pt,2598.3978pt); - \node at (403.41pt,2575.3299pt)[below right,color=black]{\textbf{html}}; - \draw[pstyle0] (1464.91pt,2727.5399pt) -- (1492.9143pt,2727.5399pt) arc(270:360:3.75pt) -- (1502.4143pt,2752.6078pt) -- (2944.91pt,2752.6078pt) arc(270:360:2.5pt) -- (2947.41pt,3981.0399pt) arc(0:90:2.5pt) -- (1464.91pt,3983.5399pt) arc(90:180:2.5pt) -- (1462.41pt,2730.0399pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (1462.41pt,2752.6078pt) -- (1502.4143pt,2752.6078pt); - \node at (1466.41pt,2729.5399pt)[below right,color=black]{\textbf{nlp}}; - \draw[pstyle0] (1488.91pt,2773.5399pt) -- (1529.0207pt,2773.5399pt) arc(270:360:3.75pt) -- (1538.5207pt,2798.6078pt) -- (1713.91pt,2798.6078pt) arc(270:360:2.5pt) -- (1716.41pt,3197.1899pt) arc(0:90:2.5pt) -- (1488.91pt,3199.6899pt) arc(90:180:2.5pt) -- (1486.41pt,2776.0399pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (1486.41pt,2798.6078pt) -- (1538.5207pt,2798.6078pt); - \node at (1490.41pt,2775.5399pt)[below right,color=black]{\textbf{html}}; - \draw[pstyle0] (303.91pt,3547.8499pt) -- (361.1256pt,3547.8499pt) arc(270:360:3.75pt) -- (370.6256pt,3572.9178pt) -- (1012.91pt,3572.9178pt) arc(270:360:2.5pt) -- (1015.41pt,4603.8699pt) arc(0:90:2.5pt) -- (303.91pt,4606.3699pt) arc(90:180:2.5pt) -- (301.41pt,3550.3499pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (301.41pt,3572.9178pt) -- (370.6256pt,3572.9178pt); - \node at (305.41pt,3549.8499pt)[below right,color=black]{\textbf{speech}}; - \draw[pstyle0] (2973.91pt,2592.3899pt) -- (3011.9759pt,2592.3899pt) arc(270:360:3.75pt) -- (3021.4759pt,2617.4578pt) -- (4398.91pt,2617.4578pt) arc(270:360:2.5pt) -- (4401.41pt,3378.3399pt) arc(0:90:2.5pt) -- (2973.91pt,3380.8399pt) arc(90:180:2.5pt) -- (2971.41pt,2594.8899pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (2971.41pt,2617.4578pt) -- (3021.4759pt,2617.4578pt); - \node at (2975.41pt,2594.3899pt)[below right,color=black]{\textbf{mdb}}; - \draw[pstyle0] (6640.91pt,2935.6199pt) -- (6730.8585pt,2935.6199pt) arc(270:360:3.75pt) -- (6740.3585pt,2960.6878pt) -- (8025.91pt,2960.6878pt) arc(270:360:2.5pt) -- (8028.41pt,3847.5599pt) arc(0:90:2.5pt) -- (6640.91pt,3850.0599pt) arc(90:180:2.5pt) -- (6638.41pt,2938.1199pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (6638.41pt,2960.6878pt) -- (6740.3585pt,2960.6878pt); - \node at (6642.41pt,2937.6199pt)[below right,color=black]{\textbf{exceptions}}; - \draw[pstyle0] (5133.91pt,383.2099pt) -- (5190.1681pt,383.2099pt) arc(270:360:3.75pt) -- (5199.6681pt,408.2778pt) -- (5811.91pt,408.2778pt) arc(270:360:2.5pt) -- (5814.41pt,806.8699pt) arc(0:90:2.5pt) -- (5133.91pt,809.3699pt) arc(90:180:2.5pt) -- (5131.41pt,385.7099pt) arc(180:270:2.5pt) ; - \draw[pstyle0] (5131.41pt,408.2778pt) -- (5199.6681pt,408.2778pt); - \node at (5135.41pt,385.2099pt)[below right,color=black]{\textbf{export}}; - \draw[pstyle1] (13194.17pt,435.7499pt) arc (180:270:5pt) -- (13199.17pt,430.7499pt) -- (13485.6507pt,430.7499pt) arc (270:360:5pt) -- (13490.6507pt,435.7499pt) -- (13490.6507pt,778.8366pt) arc (0:90:5pt) -- (13485.6507pt,783.8366pt) -- (13199.17pt,783.8366pt) arc (90:180:5pt) -- (13194.17pt,778.8366pt) -- cycle; - \draw[pstyle2] (13318.1506pt,446.7499pt) ellipse (11pt and 11pt); - \node at (13318.1506pt,446.7499pt)[]{\textbf{\Large C}}; - \node at (13338.6506pt,437.2159pt)[below right,color=black]{Main}; - \draw[pstyle3] (13195.17pt,462.7499pt) -- (13489.6507pt,462.7499pt); - \draw[pstyle4] (13205.17pt,477.7839pt) ellipse (3pt and 3pt); - \node at (13214.17pt,466.7499pt)[below right,color=black]{UPLOAD\_MEMBER\_PHOTOS}; - \draw[pstyle4] (13205.17pt,496.8518pt) ellipse (3pt and 3pt); - \node at (13214.17pt,485.8178pt)[below right,color=black]{FORCE\_UPLOAD\_MEMBERS}; - \draw[pstyle4] (13205.17pt,515.9197pt) ellipse (3pt and 3pt); - \node at (13214.17pt,504.8857pt)[below right,color=black]{FORCE\_UPLOAD\_SPEECHES}; - \draw[pstyle4] (13205.17pt,534.9876pt) ellipse (3pt and 3pt); - \node at (13214.17pt,523.9536pt)[below right,color=black]{ONLY\_RUN\_WEB}; - \draw[pstyle4] (13205.17pt,554.0555pt) ellipse (3pt and 3pt); - \node at (13214.17pt,543.0216pt)[below right,color=black]{REBUILD\_METADATA}; - \draw[pstyle4] (13205.17pt,573.1234pt) ellipse (3pt and 3pt); - \node at (13214.17pt,562.0895pt)[below right,color=black]{DEBUG\_LOGGING}; - \draw[pstyle5] (13202.17pt,589.1914pt) rectangle (13208.17pt,595.1914pt); - \node at (13214.17pt,581.1574pt)[below right,color=black]{xmlFactory}; - \draw[pstyle5] (13202.17pt,608.2593pt) rectangle (13208.17pt,614.2593pt); - \node at (13214.17pt,600.2253pt)[below right,color=black]{mongoFactory}; - \draw[pstyle4] (13205.17pt,630.3272pt) ellipse (3pt and 3pt); - \node at (13214.17pt,619.2932pt)[below right,color=black]{RESOURCES\_DIR}; - \draw[pstyle4] (13205.17pt,649.3951pt) ellipse (3pt and 3pt); - \node at (13214.17pt,638.3612pt)[below right,color=black]{CONFIG\_DIR}; - \draw[pstyle4] (13205.17pt,668.463pt) ellipse (3pt and 3pt); - \node at (13214.17pt,657.4291pt)[below right,color=black]{JAVALIN\_TEMPLATE\_DIR}; - \draw[pstyle4] (13205.17pt,687.5309pt) ellipse (3pt and 3pt); - \node at (13214.17pt,676.497pt)[below right,color=black]{JAVALIN\_STATIC\_FILES\_DIR}; - \draw[pstyle4] (13205.17pt,706.5989pt) ellipse (3pt and 3pt); - \node at (13214.17pt,695.5649pt)[below right,color=black]{JCAS\_SPEECHES\_TYPESYSTEM\_DIR}; - \draw[pstyle4] (13205.17pt,725.6668pt) ellipse (3pt and 3pt); - \node at (13214.17pt,714.6328pt)[below right,color=black]{MEMBER\_IMAGES\_DIR}; - \draw[pstyle4] (13205.17pt,744.7347pt) ellipse (3pt and 3pt); - \node at (13214.17pt,733.7007pt)[below right,color=black]{TEMP\_EXPORT\_DIR}; - \draw[pstyle3] (13195.17pt,756.7687pt) -- (13489.6507pt,756.7687pt); - \draw[pstyle6] (13205.17pt,771.8026pt) ellipse (3pt and 3pt); - \node at (13214.17pt,760.7687pt)[below right,color=black]{main()}; - \draw[pstyle1] (13031.79pt,1163.6499pt) arc (180:270:5pt) -- (13036.79pt,1158.6499pt) -- (13322.0211pt,1158.6499pt) arc (270:360:5pt) -- (13327.0211pt,1163.6499pt) -- (13327.0211pt,1487.6687pt) arc (0:90:5pt) -- (13322.0211pt,1492.6687pt) -- (13036.79pt,1492.6687pt) arc (90:180:5pt) -- (13031.79pt,1487.6687pt) -- cycle; - \draw[pstyle2] (13144.0212pt,1174.6499pt) ellipse (11pt and 11pt); - \node at (13144.0212pt,1174.6499pt)[]{\textbf{\Large C}}; - \node at (13164.5212pt,1165.1159pt)[below right,color=black]{NlpUtils}; - \draw[pstyle3] (13032.79pt,1190.6499pt) -- (13326.0211pt,1190.6499pt); - \draw[pstyle5] (13039.79pt,1202.6839pt) rectangle (13045.79pt,1208.6839pt); - \node at (13051.79pt,1194.6499pt)[below right,color=black]{pComposer}; - \draw[pstyle5] (13039.79pt,1221.7518pt) rectangle (13045.79pt,1227.7518pt); - \node at (13051.79pt,1213.7178pt)[below right,color=black]{iWorkers}; - \draw[pstyle5] (13039.79pt,1240.8197pt) rectangle (13045.79pt,1246.8197pt); - \node at (13051.79pt,1232.7857pt)[below right,color=black]{TYPE\_SYSTEM\_DESCRIPTOR\_PATH}; - \draw[pstyle5] (13039.79pt,1259.8876pt) rectangle (13045.79pt,1265.8876pt); - \node at (13051.79pt,1251.8536pt)[below right,color=black]{MAX\_FEATURE\_LENGTH}; - \draw[pstyle3] (13032.79pt,1274.9216pt) -- (13326.0211pt,1274.9216pt); - \draw[pstyle6] (13042.79pt,1289.9555pt) ellipse (3pt and 3pt); - \node at (13051.79pt,1278.9216pt)[below right,color=black]{createNlpData()}; - \draw[pstyle7] (13039.79pt,1306.0234pt) rectangle (13045.79pt,1312.0234pt); - \node at (13051.79pt,1297.9895pt)[below right,color=black]{duuiInit()}; - \draw[pstyle6] (13042.79pt,1328.0914pt) ellipse (3pt and 3pt); - \node at (13051.79pt,1317.0574pt)[below right,color=black]{getCas()}; - \draw[pstyle6] (13042.79pt,1347.1593pt) ellipse (3pt and 3pt); - \node at (13051.79pt,1336.1253pt)[below right,color=black]{runDockerDriver()}; - \draw[pstyle7] (13039.79pt,1363.2272pt) rectangle (13045.79pt,1369.2272pt); - \node at (13051.79pt,1355.1932pt)[below right,color=black]{casInit()}; - \draw[pstyle6] (13042.79pt,1385.2951pt) ellipse (3pt and 3pt); - \node at (13051.79pt,1374.2612pt)[below right,color=black]{runVideos()}; - \draw[pstyle7] (13039.79pt,1401.363pt) rectangle (13045.79pt,1407.363pt); - \node at (13051.79pt,1393.3291pt)[below right,color=black]{createSentenceInfo()}; - \draw[pstyle7] (13039.79pt,1420.4309pt) rectangle (13045.79pt,1426.4309pt); - \node at (13051.79pt,1412.397pt)[below right,color=black]{createNAmedEntities()}; - \draw[pstyle7] (13039.79pt,1439.4989pt) rectangle (13045.79pt,1445.4989pt); - \node at (13051.79pt,1431.4649pt)[below right,color=black]{createSentimentInfo()}; - \draw[pstyle6] (13042.79pt,1461.5668pt) ellipse (3pt and 3pt); - \node at (13051.79pt,1450.5328pt)[below right,color=black]{runRemoteDriver()}; - \draw[pstyle6] (13042.79pt,1480.6347pt) ellipse (3pt and 3pt); - \node at (13051.79pt,1469.6007pt)[below right,color=black]{extractAnnotations()}; - \draw[pstyle1] (13361.83pt,1239.9199pt) arc (180:270:5pt) -- (13366.83pt,1234.9199pt) -- (13645.9916pt,1234.9199pt) arc (270:360:5pt) -- (13650.9916pt,1239.9199pt) -- (13650.9916pt,1411.3953pt) arc (0:90:5pt) -- (13645.9916pt,1416.3953pt) -- (13366.83pt,1416.3953pt) arc (90:180:5pt) -- (13361.83pt,1411.3953pt) -- cycle; - \draw[pstyle2] (13450.1971pt,1250.9199pt) ellipse (11pt and 11pt); - \node at (13450.1971pt,1250.9199pt)[]{\textbf{\Large C}}; - \node at (13470.6971pt,1241.3859pt)[below right,color=black]{XmiExtractor}; - \draw[pstyle3] (13362.83pt,1266.9199pt) -- (13649.9916pt,1266.9199pt); - \draw[pstyle5] (13369.83pt,1278.9539pt) rectangle (13375.83pt,1284.9539pt); - \node at (13381.83pt,1270.9199pt)[below right,color=black]{bulkOperations}; - \draw[pstyle5] (13369.83pt,1298.0218pt) rectangle (13375.83pt,1304.0218pt); - \node at (13381.83pt,1289.9878pt)[below right,color=black]{mongoDBHandler}; - \draw[pstyle5] (13369.83pt,1317.0897pt) rectangle (13375.83pt,1323.0897pt); - \node at (13381.83pt,1309.0557pt)[below right,color=black]{BATCH\_SIZE}; - \draw[pstyle5] (13369.83pt,1336.1576pt) rectangle (13375.83pt,1342.1576pt); - \node at (13381.83pt,1328.1236pt)[below right,color=black]{processedCount}; - \draw[pstyle3] (13362.83pt,1351.1916pt) -- (13649.9916pt,1351.1916pt); - \draw[pstyle6] (13372.83pt,1366.2255pt) ellipse (3pt and 3pt); - \node at (13381.83pt,1355.1916pt)[below right,color=black]{extractAndUploadXmiData()}; - \draw[pstyle7] (13369.83pt,1382.2934pt) rectangle (13375.83pt,1388.2934pt); - \node at (13381.83pt,1374.2595pt)[below right,color=black]{processXmiGzStream()}; - \draw[pstyle7] (13369.83pt,1401.3614pt) rectangle (13375.83pt,1407.3614pt); - \node at (13381.83pt,1393.3274pt)[below right,color=black]{extractSpeechKeyFromFilename()}; - \draw[pstyle1] (6979.75pt,1297.1199pt) arc (180:270:5pt) -- (6984.75pt,1292.1199pt) -- (7110.077pt,1292.1199pt) arc (270:360:5pt) -- (7115.077pt,1297.1199pt) -- (7115.077pt,1354.1878pt) arc (0:90:5pt) -- (7110.077pt,1359.1878pt) -- (6984.75pt,1359.1878pt) arc (90:180:5pt) -- (6979.75pt,1354.1878pt) -- cycle; - \draw[pstyle2] (6994.75pt,1308.1199pt) ellipse (11pt and 11pt); - \node at (6994.75pt,1308.1199pt)[]{\textbf{\Large C}}; - \node at (7008.75pt,1298.5859pt)[below right,color=black]{RESTHandler}; - \draw[pstyle3] (6980.75pt,1324.1199pt) -- (7114.077pt,1324.1199pt); - \draw[pstyle3] (6980.75pt,1332.1199pt) -- (7114.077pt,1332.1199pt); - \draw[pstyle6] (6990.75pt,1347.1539pt) ellipse (3pt and 3pt); - \node at (6999.75pt,1336.1199pt)[below right,color=black]{startJavalin()}; - \draw[pstyle1] (6363.63pt,1258.9899pt) arc (180:270:5pt) -- (6368.63pt,1253.9899pt) -- (6628.1992pt,1253.9899pt) arc (270:360:5pt) -- (6633.1992pt,1258.9899pt) -- (6633.1992pt,1392.3295pt) arc (0:90:5pt) -- (6628.1992pt,1397.3295pt) -- (6368.63pt,1397.3295pt) arc (90:180:5pt) -- (6363.63pt,1392.3295pt) -- cycle; - \draw[pstyle2] (6378.63pt,1269.9899pt) ellipse (11pt and 11pt); - \node at (6378.63pt,1269.9899pt)[]{\textbf{\Large C}}; - \node at (6392.63pt,1260.4559pt)[below right,color=black]{SpeechesXMLExportController}; - \draw[pstyle3] (6364.63pt,1285.9899pt) -- (6632.1992pt,1285.9899pt); - \draw[pstyle3] (6364.63pt,1293.9899pt) -- (6632.1992pt,1293.9899pt); - \draw[pstyle6] (6374.63pt,1309.0239pt) ellipse (3pt and 3pt); - \node at (6383.63pt,1297.9899pt)[below right,color=black]{exportSpeech()}; - \draw[pstyle6] (6374.63pt,1328.0918pt) ellipse (3pt and 3pt); - \node at (6383.63pt,1317.0578pt)[below right,color=black]{exportSpeechesFromSpeaker()}; - \draw[pstyle6] (6374.63pt,1347.1597pt) ellipse (3pt and 3pt); - \node at (6383.63pt,1336.1257pt)[below right,color=black]{exportAllSpeeches()}; - \draw[pstyle6] (6374.63pt,1366.2276pt) ellipse (3pt and 3pt); - \node at (6383.63pt,1355.1936pt)[below right,color=black]{exportSpeechesWithTopic()}; - \draw[pstyle6] (6374.63pt,1385.2955pt) ellipse (3pt and 3pt); - \node at (6383.63pt,1374.2616pt)[below right,color=black]{exportSpeeches()}; - \draw[pstyle1] (6668.14pt,1258.9899pt) arc (180:270:5pt) -- (6673.14pt,1253.9899pt) -- (6939.6875pt,1253.9899pt) arc (270:360:5pt) -- (6944.6875pt,1258.9899pt) -- (6944.6875pt,1392.3295pt) arc (0:90:5pt) -- (6939.6875pt,1397.3295pt) -- (6673.14pt,1397.3295pt) arc (90:180:5pt) -- (6668.14pt,1392.3295pt) -- cycle; - \draw[pstyle2] (6683.14pt,1269.9899pt) ellipse (11pt and 11pt); - \node at (6683.14pt,1269.9899pt)[]{\textbf{\Large C}}; - \node at (6697.14pt,1260.4559pt)[below right,color=black]{SpeechesLatexExportController}; - \draw[pstyle3] (6669.14pt,1285.9899pt) -- (6943.6875pt,1285.9899pt); - \draw[pstyle3] (6669.14pt,1293.9899pt) -- (6943.6875pt,1293.9899pt); - \draw[pstyle6] (6679.14pt,1309.0239pt) ellipse (3pt and 3pt); - \node at (6688.14pt,1297.9899pt)[below right,color=black]{exportSpeech()}; - \draw[pstyle6] (6679.14pt,1328.0918pt) ellipse (3pt and 3pt); - \node at (6688.14pt,1317.0578pt)[below right,color=black]{exportSpeechesFromSpeaker()}; - \draw[pstyle6] (6679.14pt,1347.1597pt) ellipse (3pt and 3pt); - \node at (6688.14pt,1336.1257pt)[below right,color=black]{exportAllSpeeches()}; - \draw[pstyle6] (6679.14pt,1366.2276pt) ellipse (3pt and 3pt); - \node at (6688.14pt,1355.1936pt)[below right,color=black]{exportSpeechesWithTopic()}; - \draw[pstyle6] (6679.14pt,1385.2955pt) ellipse (3pt and 3pt); - \node at (6688.14pt,1374.2616pt)[below right,color=black]{exportSpeeches()}; - \draw[pstyle1] (5630.86pt,1278.0599pt) arc (180:270:5pt) -- (5635.86pt,1273.0599pt) -- (5826.9656pt,1273.0599pt) arc (270:360:5pt) -- (5831.9656pt,1278.0599pt) -- (5831.9656pt,1373.2636pt) arc (0:90:5pt) -- (5826.9656pt,1378.2636pt) -- (5635.86pt,1378.2636pt) arc (90:180:5pt) -- (5630.86pt,1373.2636pt) -- cycle; - \draw[pstyle2] (5653.4643pt,1289.0599pt) ellipse (11pt and 11pt); - \node at (5653.4643pt,1289.0599pt)[]{\textbf{\Large C}}; - \node at (5669.1541pt,1279.5259pt)[below right,color=black]{FrontEndController}; - \draw[pstyle3] (5631.86pt,1305.0599pt) -- (5830.9656pt,1305.0599pt); - \draw[pstyle3] (5631.86pt,1313.0599pt) -- (5830.9656pt,1313.0599pt); - \draw[pstyle6] (5641.86pt,1328.0939pt) ellipse (3pt and 3pt); - \node at (5650.86pt,1317.0599pt)[below right,color=black]{getHomepage()}; - \draw[pstyle6] (5641.86pt,1347.1618pt) ellipse (3pt and 3pt); - \node at (5650.86pt,1336.1278pt)[below right,color=black]{getAllParlamentarier()}; - \draw[pstyle6] (5641.86pt,1366.2297pt) ellipse (3pt and 3pt); - \node at (5650.86pt,1355.1957pt)[below right,color=black]{getCharts()}; - \draw[pstyle1] (6134.15pt,1278.0599pt) arc (180:270:5pt) -- (6139.15pt,1273.0599pt) -- (6323.6669pt,1273.0599pt) arc (270:360:5pt) -- (6328.6669pt,1278.0599pt) -- (6328.6669pt,1373.2636pt) arc (0:90:5pt) -- (6323.6669pt,1378.2636pt) -- (6139.15pt,1378.2636pt) arc (90:180:5pt) -- (6134.15pt,1373.2636pt) -- cycle; - \draw[pstyle2] (6175.5445pt,1289.0599pt) ellipse (11pt and 11pt); - \node at (6175.5445pt,1289.0599pt)[]{\textbf{\Large C}}; - \node at (6195.4099pt,1279.5259pt)[below right,color=black]{JavalinConfig}; - \draw[pstyle3] (6135.15pt,1305.0599pt) -- (6327.6669pt,1305.0599pt); - \draw[pstyle5] (6142.15pt,1317.0939pt) rectangle (6148.15pt,1323.0939pt); - \node at (6154.15pt,1309.0599pt)[below right,color=black]{propertiesFileName}; - \draw[pstyle3] (6135.15pt,1332.1278pt) -- (6327.6669pt,1332.1278pt); - \draw[pstyle6] (6145.15pt,1347.1618pt) ellipse (3pt and 3pt); - \node at (6154.15pt,1336.1278pt)[below right,color=black]{getJavalinProperties()}; - \draw[pstyle6] (6145.15pt,1366.2297pt) ellipse (3pt and 3pt); - \node at (6154.15pt,1355.1957pt)[below right,color=black]{getPort()}; - \draw[pstyle1] (5867.17pt,1278.0599pt) arc (180:270:5pt) -- (5872.17pt,1273.0599pt) -- (6094.6453pt,1273.0599pt) arc (270:360:5pt) -- (6099.6453pt,1278.0599pt) -- (6099.6453pt,1373.2636pt) arc (0:90:5pt) -- (6094.6453pt,1378.2636pt) -- (5872.17pt,1378.2636pt) arc (90:180:5pt) -- (5867.17pt,1373.2636pt) -- cycle; - \draw[pstyle2] (5883.2163pt,1289.0599pt) ellipse (11pt and 11pt); - \node at (5883.2163pt,1289.0599pt)[]{\textbf{\Large C}}; - \node at (5897.4489pt,1279.5259pt)[below right,color=black]{ParlamentarierController}; - \draw[pstyle3] (5868.17pt,1305.0599pt) -- (6098.6453pt,1305.0599pt); - \draw[pstyle5] (5875.17pt,1317.0939pt) rectangle (5881.17pt,1323.0939pt); - \node at (5887.17pt,1309.0599pt)[below right,color=black]{emptyList}; - \draw[pstyle3] (5868.17pt,1332.1278pt) -- (6098.6453pt,1332.1278pt); - \draw[pstyle6] (5878.17pt,1347.1618pt) ellipse (3pt and 3pt); - \node at (5887.17pt,1336.1278pt)[below right,color=black]{getAllParlamentarier()}; - \draw[pstyle6] (5878.17pt,1366.2297pt) ellipse (3pt and 3pt); - \node at (5887.17pt,1355.1957pt)[below right,color=black]{getParlamentarierDetails()}; - \draw[pstyle1] (5385pt,1249.4499pt) arc (180:270:5pt) -- (5390pt,1244.4499pt) -- (5590.8266pt,1244.4499pt) arc (270:360:5pt) -- (5595.8266pt,1249.4499pt) -- (5595.8266pt,1401.8574pt) arc (0:90:5pt) -- (5590.8266pt,1406.8574pt) -- (5390pt,1406.8574pt) arc (90:180:5pt) -- (5385pt,1401.8574pt) -- cycle; - \draw[pstyle2] (5420.4646pt,1260.4499pt) ellipse (11pt and 11pt); - \node at (5420.4646pt,1260.4499pt)[]{\textbf{\Large C}}; - \node at (5439.0123pt,1250.9159pt)[below right,color=black]{SpeechController}; - \draw[pstyle3] (5386pt,1276.4499pt) -- (5594.8266pt,1276.4499pt); - \draw[pstyle5] (5393pt,1288.4839pt) rectangle (5399pt,1294.4839pt); - \node at (5405pt,1280.4499pt)[below right,color=black]{POSITIVE\_SENTIMENT}; - \draw[pstyle5] (5393pt,1307.5518pt) rectangle (5399pt,1313.5518pt); - \node at (5405pt,1299.5178pt)[below right,color=black]{NEGATIVE\_SENTIMENT}; - \draw[pstyle5] (5393pt,1326.6197pt) rectangle (5399pt,1332.6197pt); - \node at (5405pt,1318.5857pt)[below right,color=black]{NEUTRAL\_SENTIMENT}; - \draw[pstyle3] (5386pt,1341.6536pt) -- (5594.8266pt,1341.6536pt); - \draw[pstyle6] (5396pt,1356.6876pt) ellipse (3pt and 3pt); - \node at (5405pt,1345.6536pt)[below right,color=black]{listSpeeches()}; - \draw[pstyle6] (5396pt,1375.7555pt) ellipse (3pt and 3pt); - \node at (5405pt,1364.7216pt)[below right,color=black]{showSpeech()}; - \draw[pstyle6] (5396pt,1394.8234pt) ellipse (3pt and 3pt); - \node at (5405pt,1383.7895pt)[below right,color=black]{listAllSpeeches()}; - \draw[pstyle1] (5488.9pt,2911.8799pt) arc (180:270:5pt) -- (5493.9pt,2906.8799pt) -- (5708.9103pt,2906.8799pt) arc (270:360:5pt) -- (5713.9103pt,2911.8799pt) -- (5713.9103pt,3083.3553pt) arc (0:90:5pt) -- (5708.9103pt,3088.3553pt) -- (5493.9pt,3088.3553pt) arc (90:180:5pt) -- (5488.9pt,3083.3553pt) -- cycle; - \draw[pstyle2] (5570.5242pt,2922.8799pt) ellipse (11pt and 11pt); - \node at (5570.5242pt,2922.8799pt)[]{\textbf{\Large C}}; - \node at (5591.0242pt,2913.3459pt)[below right,color=black]{Logger}; - \draw[pstyle3] (5489.9pt,2938.8799pt) -- (5712.9103pt,2938.8799pt); - \draw[pstyle5] (5496.9pt,2950.9139pt) rectangle (5502.9pt,2956.9139pt); - \node at (5508.9pt,2942.8799pt)[below right,color=black]{DATE\_TIME\_FORMATTER}; - \draw[pstyle3] (5489.9pt,2965.9478pt) -- (5712.9103pt,2965.9478pt); - \draw[pstyle6] (5499.9pt,2980.9818pt) ellipse (3pt and 3pt); - \node at (5508.9pt,2969.9478pt)[below right,color=black]{info()}; - \draw[pstyle6] (5499.9pt,3000.0497pt) ellipse (3pt and 3pt); - \node at (5508.9pt,2989.0157pt)[below right,color=black]{warn()}; - \draw[pstyle6] (5499.9pt,3019.1176pt) ellipse (3pt and 3pt); - \node at (5508.9pt,3008.0836pt)[below right,color=black]{error()}; - \draw[pstyle6] (5499.9pt,3038.1855pt) ellipse (3pt and 3pt); - \node at (5508.9pt,3027.1516pt)[below right,color=black]{debug()}; - \draw[pstyle6] (5499.9pt,3057.2534pt) ellipse (3pt and 3pt); - \node at (5508.9pt,3046.2195pt)[below right,color=black]{pink()}; - \draw[pstyle6] (5499.9pt,3076.3214pt) ellipse (3pt and 3pt); - \node at (5508.9pt,3065.2874pt)[below right,color=black]{orange()}; - \draw[pstyle1] (4886.81pt,2854.6699pt) arc (180:270:5pt) -- (4891.81pt,2849.6699pt) -- (5259.0113pt,2849.6699pt) arc (270:360:5pt) -- (5264.0113pt,2854.6699pt) -- (5264.0113pt,3140.5528pt) arc (0:90:5pt) -- (5259.0113pt,3145.5528pt) -- (4891.81pt,3145.5528pt) arc (90:180:5pt) -- (4886.81pt,3140.5528pt) -- cycle; - \draw[pstyle2] (5038.59pt,2865.6699pt) ellipse (11pt and 11pt); - \node at (5038.59pt,2865.6699pt)[]{\textbf{\Large C}}; - \node at (5059.09pt,2856.1359pt)[below right,color=black]{PPRUtils}; - \draw[pstyle3] (4887.81pt,2881.6699pt) -- (5263.0113pt,2881.6699pt); - \draw[pstyle4] (4897.81pt,2896.7039pt) ellipse (3pt and 3pt); - \node at (4906.81pt,2885.6699pt)[below right,color=black]{PARTEILOS\_KUERZEL}; - \draw[pstyle5] (4894.81pt,2912.7718pt) rectangle (4900.81pt,2918.7718pt); - \node at (4906.81pt,2904.7378pt)[below right,color=black]{processedProtocols}; - \draw[pstyle4] (4897.81pt,2934.8397pt) ellipse (3pt and 3pt); - \node at (4906.81pt,2923.8057pt)[below right,color=black]{legislaturPeriode}; - \draw[pstyle3] (4887.81pt,2946.8736pt) -- (5263.0113pt,2946.8736pt); - \draw[pstyle6] (4897.81pt,2961.9076pt) ellipse (3pt and 3pt); - \node at (4906.81pt,2950.8736pt)[below right,color=black]{parlamentExplorerInit()}; - \draw[pstyle6] (4897.81pt,2980.9755pt) ellipse (3pt and 3pt); - \node at (4906.81pt,2969.9416pt)[below right,color=black]{readPhotos()}; - \draw[pstyle6] (4897.81pt,3000.0434pt) ellipse (3pt and 3pt); - \node at (4906.81pt,2989.0095pt)[below right,color=black]{readSpeechesAndComments()}; - \draw[pstyle6] (4897.81pt,3019.1114pt) ellipse (3pt and 3pt); - \node at (4906.81pt,3008.0774pt)[below right,color=black]{readAndPersistMdbs()}; - \draw[pstyle7] (4894.81pt,3035.1793pt) rectangle (4900.81pt,3041.1793pt); - \node at (4906.81pt,3027.1453pt)[below right,color=black]{mdbActiveInWp()}; - \draw[pstyle7] (4894.81pt,3054.2472pt) rectangle (4900.81pt,3060.2472pt); - \node at (4906.81pt,3046.2132pt)[below right,color=black]{copyStream()}; - \draw[pstyle6] (4897.81pt,3076.3151pt) ellipse (3pt and 3pt); - \node at (4906.81pt,3065.2812pt)[below right,color=black]{sortParlamentarierByName()}; - \draw[pstyle6] (4897.81pt,3095.383pt) ellipse (3pt and 3pt); - \node at (4906.81pt,3084.3491pt)[below right,color=black]{sortMdbByName()}; - \draw[pstyle6] (4897.81pt,3114.4509pt) ellipse (3pt and 3pt); - \node at (4906.81pt,3103.417pt)[below right,color=black]{fetchMemberImageBase64FromNameString()}; - \draw[pstyle6] (4897.81pt,3133.5189pt) ellipse (3pt and 3pt); - \node at (4906.81pt,3122.4849pt)[below right,color=black]{getSessionCookies()}; - \draw[pstyle1] (5748.78pt,2911.8799pt) arc (180:270:5pt) -- (5753.78pt,2906.8799pt) -- (5951.0363pt,2906.8799pt) arc (270:360:5pt) -- (5956.0363pt,2911.8799pt) -- (5956.0363pt,3083.3553pt) arc (0:90:5pt) -- (5951.0363pt,3088.3553pt) -- (5753.78pt,3088.3553pt) arc (90:180:5pt) -- (5748.78pt,3083.3553pt) -- cycle; - \draw[pstyle2] (5770.0406pt,2922.8799pt) ellipse (11pt and 11pt); - \node at (5770.0406pt,2922.8799pt)[]{\textbf{\Large C}}; - \node at (5785.4318pt,2913.3459pt)[below right,color=black]{SpeechVideoUpdater}; - \draw[pstyle3] (5749.78pt,2938.8799pt) -- (5955.0363pt,2938.8799pt); - \draw[pstyle5] (5756.78pt,2950.9139pt) rectangle (5762.78pt,2956.9139pt); - \node at (5768.78pt,2942.8799pt)[below right,color=black]{BASE\_VIDEO\_ID}; - \draw[pstyle5] (5756.78pt,2969.9818pt) rectangle (5762.78pt,2975.9818pt); - \node at (5768.78pt,2961.9478pt)[below right,color=black]{BASE\_URL}; - \draw[pstyle5] (5756.78pt,2989.0497pt) rectangle (5762.78pt,2995.0497pt); - \node at (5768.78pt,2981.0157pt)[below right,color=black]{SUFFIX}; - \draw[pstyle3] (5749.78pt,3004.0836pt) -- (5955.0363pt,3004.0836pt); - \draw[pstyle6] (5759.78pt,3019.1176pt) ellipse (3pt and 3pt); - \node at (5768.78pt,3008.0836pt)[below right,color=black]{init()}; - \draw[pstyle6] (5759.78pt,3038.1855pt) ellipse (3pt and 3pt); - \node at (5768.78pt,3027.1516pt)[below right,color=black]{findVideos()}; - \draw[pstyle7] (5756.78pt,3054.2534pt) rectangle (5762.78pt,3060.2534pt); - \node at (5768.78pt,3046.2195pt)[below right,color=black]{downloadVideo()}; - \draw[pstyle7] (5756.78pt,3073.3214pt) rectangle (5762.78pt,3079.3214pt); - \node at (5768.78pt,3065.2874pt)[below right,color=black]{uploadVideoToGridFS()}; - \draw[pstyle1] (4586.81pt,2969.0799pt) arc (180:270:5pt) -- (4591.81pt,2964.0799pt) -- (4847.0183pt,2964.0799pt) arc (270:360:5pt) -- (4852.0183pt,2969.0799pt) -- (4852.0183pt,3026.1478pt) arc (0:90:5pt) -- (4847.0183pt,3031.1478pt) -- (4591.81pt,3031.1478pt) arc (90:180:5pt) -- (4586.81pt,3026.1478pt) -- cycle; - \draw[pstyle2] (4657.7152pt,2980.0799pt) ellipse (11pt and 11pt); - \node at (4657.7152pt,2980.0799pt)[]{\textbf{\Large C}}; - \node at (4678.2152pt,2970.5459pt)[below right,color=black]{PropertiesUtils}; - \draw[pstyle3] (4587.81pt,2996.0799pt) -- (4851.0183pt,2996.0799pt); - \draw[pstyle3] (4587.81pt,3004.0799pt) -- (4851.0183pt,3004.0799pt); - \draw[pstyle6] (4597.81pt,3019.1139pt) ellipse (3pt and 3pt); - \node at (4606.81pt,3008.0799pt)[below right,color=black]{readPropertiesFromResource()}; - \draw[pstyle1] (5299.18pt,2921.4099pt) arc (180:270:5pt) -- (5304.18pt,2916.4099pt) -- (5448.6449pt,2916.4099pt) arc (270:360:5pt) -- (5453.6449pt,2921.4099pt) -- (5453.6449pt,3073.8174pt) arc (0:90:5pt) -- (5448.6449pt,3078.8174pt) -- (5304.18pt,3078.8174pt) arc (90:180:5pt) -- (5299.18pt,3073.8174pt) -- cycle; - \draw[pstyle2] (5326.0345pt,2932.4099pt) ellipse (11pt and 11pt); - \node at (5326.0345pt,2932.4099pt)[]{\textbf{\Large C}}; - \node at (5342.6689pt,2922.8759pt)[below right,color=black]{GeneralUtils}; - \draw[pstyle3] (5300.18pt,2948.4099pt) -- (5452.6449pt,2948.4099pt); - \draw[pstyle3] (5300.18pt,2956.4099pt) -- (5452.6449pt,2956.4099pt); - \draw[pstyle6] (5310.18pt,2971.4439pt) ellipse (3pt and 3pt); - \node at (5319.18pt,2960.4099pt)[below right,color=black]{parseInt()}; - \draw[pstyle6] (5310.18pt,2990.5118pt) ellipse (3pt and 3pt); - \node at (5319.18pt,2979.4778pt)[below right,color=black]{parseDate()}; - \draw[pstyle6] (5310.18pt,3009.5797pt) ellipse (3pt and 3pt); - \node at (5319.18pt,2998.5457pt)[below right,color=black]{parseTime()}; - \draw[pstyle6] (5310.18pt,3028.6476pt) ellipse (3pt and 3pt); - \node at (5319.18pt,3017.6136pt)[below right,color=black]{formatDate()}; - \draw[pstyle6] (5310.18pt,3047.7155pt) ellipse (3pt and 3pt); - \node at (5319.18pt,3036.6816pt)[below right,color=black]{formatTime()}; - \draw[pstyle6] (5310.18pt,3066.7834pt) ellipse (3pt and 3pt); - \node at (5319.18pt,3055.7495pt)[below right,color=black]{parseDateTime()}; - \draw[pstyle1] (5991.27pt,2940.4799pt) arc (180:270:5pt) -- (5996.27pt,2935.4799pt) -- (6232.5559pt,2935.4799pt) arc (270:360:5pt) -- (6237.5559pt,2940.4799pt) -- (6237.5559pt,3054.7516pt) arc (0:90:5pt) -- (6232.5559pt,3059.7516pt) -- (5996.27pt,3059.7516pt) arc (90:180:5pt) -- (5991.27pt,3054.7516pt) -- cycle; - \draw[pstyle2] (6078.4768pt,2951.4799pt) ellipse (11pt and 11pt); - \node at (6078.4768pt,2951.4799pt)[]{\textbf{\Large C}}; - \node at (6098.9768pt,2941.9459pt)[below right,color=black]{FileUtils}; - \draw[pstyle3] (5992.27pt,2967.4799pt) -- (6236.5559pt,2967.4799pt); - \draw[pstyle3] (5992.27pt,2975.4799pt) -- (6236.5559pt,2975.4799pt); - \draw[pstyle6] (6002.27pt,2990.5139pt) ellipse (3pt and 3pt); - \node at (6011.27pt,2979.4799pt)[below right,color=black]{createDirectoryIFNotExists()}; - \draw[pstyle6] (6002.27pt,3009.5818pt) ellipse (3pt and 3pt); - \node at (6011.27pt,2998.5478pt)[below right,color=black]{writeStringsToFile()}; - \draw[pstyle6] (6002.27pt,3028.6497pt) ellipse (3pt and 3pt); - \node at (6011.27pt,3017.6157pt)[below right,color=black]{writeStringToFile()}; - \draw[pstyle6] (6002.27pt,3047.7176pt) ellipse (3pt and 3pt); - \node at (6011.27pt,3036.6836pt)[below right,color=black]{createFileWriter()}; - \draw[pstyle1] (6272.19pt,2930.9499pt) arc (180:270:5pt) -- (6277.19pt,2925.9499pt) -- (6503.6251pt,2925.9499pt) arc (270:360:5pt) -- (6508.6251pt,2930.9499pt) -- (6508.6251pt,3064.2895pt) arc (0:90:5pt) -- (6503.6251pt,3069.2895pt) -- (6277.19pt,3069.2895pt) arc (90:180:5pt) -- (6272.19pt,3064.2895pt) -- cycle; - \draw[pstyle2] (6353.1731pt,2941.9499pt) ellipse (11pt and 11pt); - \node at (6353.1731pt,2941.9499pt)[]{\textbf{\Large C}}; - \node at (6373.6731pt,2932.4159pt)[below right,color=black]{XmlUtils}; - \draw[pstyle3] (6273.19pt,2957.9499pt) -- (6507.6251pt,2957.9499pt); - \draw[pstyle3] (6273.19pt,2965.9499pt) -- (6507.6251pt,2965.9499pt); - \draw[pstyle6] (6283.19pt,2980.9839pt) ellipse (3pt and 3pt); - \node at (6292.19pt,2969.9499pt)[below right,color=black]{loadXmlDocument()}; - \draw[pstyle6] (6283.19pt,3000.0518pt) ellipse (3pt and 3pt); - \node at (6292.19pt,2989.0178pt)[below right,color=black]{getRootDocument()}; - \draw[pstyle6] (6283.19pt,3019.1197pt) ellipse (3pt and 3pt); - \node at (6292.19pt,3008.0857pt)[below right,color=black]{getFirstChildByName()}; - \draw[pstyle6] (6283.19pt,3038.1876pt) ellipse (3pt and 3pt); - \node at (6292.19pt,3027.1536pt)[below right,color=black]{getNodeAttributeByName()}; - \draw[pstyle7] (6280.19pt,3054.2555pt) rectangle (6286.19pt,3060.2555pt); - \node at (6292.19pt,3046.2216pt)[below right,color=black]{getRawText()}; - \draw[pstyle1] (8793.35pt,1220.8499pt) arc (180:270:5pt) -- (8798.35pt,1215.8499pt) -- (9038.4658pt,1215.8499pt) arc (270:360:5pt) -- (9043.4658pt,1220.8499pt) -- (9043.4658pt,1430.4612pt) arc (0:90:5pt) -- (9038.4658pt,1435.4612pt) -- (8798.35pt,1435.4612pt) arc (90:180:5pt) -- (8793.35pt,1430.4612pt) -- cycle; - \draw[pstyle2] (8845.9981pt,1231.8499pt) ellipse (11pt and 11pt); - \node at (8845.9981pt,1231.8499pt)[]{\textbf{\Large C}}; - \node at (8866.4981pt,1222.3159pt)[below right,color=black]{FileObjectFactory}; - \draw[pstyle3] (8794.35pt,1247.8499pt) -- (9042.4658pt,1247.8499pt); - \draw[pstyle5] (8801.35pt,1259.8839pt) rectangle (8807.35pt,1265.8839pt); - \node at (8813.35pt,1251.8499pt)[below right,color=black]{oFactory}; - \draw[pstyle3] (8794.35pt,1274.9178pt) -- (9042.4658pt,1274.9178pt); - \draw[pstyle6] (8804.35pt,1289.9518pt) ellipse (3pt and 3pt); - \node at (8813.35pt,1278.9178pt)[below right,color=black]{getFactory()}; - \draw[pstyle6] (8804.35pt,1309.0197pt) ellipse (3pt and 3pt); - \node at (8813.35pt,1297.9857pt)[below right,color=black]{createBiografischeAngaben()}; - \draw[pstyle6] (8804.35pt,1328.0876pt) ellipse (3pt and 3pt); - \node at (8813.35pt,1317.0536pt)[below right,color=black]{createInstitution()}; - \draw[pstyle6] (8804.35pt,1347.1555pt) ellipse (3pt and 3pt); - \node at (8813.35pt,1336.1216pt)[below right,color=black]{createMdb()}; - \draw[pstyle6] (8804.35pt,1366.2234pt) ellipse (3pt and 3pt); - \node at (8813.35pt,1355.1895pt)[below right,color=black]{createMdbDocument()}; - \draw[pstyle6] (8804.35pt,1385.2914pt) ellipse (3pt and 3pt); - \node at (8813.35pt,1374.2574pt)[below right,color=black]{createMdbName()}; - \draw[pstyle6] (8804.35pt,1404.3593pt) ellipse (3pt and 3pt); - \node at (8813.35pt,1393.3253pt)[below right,color=black]{createWahlperiode()}; - \draw[pstyle6] (8804.35pt,1423.4272pt) ellipse (3pt and 3pt); - \node at (8813.35pt,1412.3932pt)[below right,color=black]{createSpeaker()}; - \draw[pstyle1] (8769.89pt,2969.0799pt) arc (180:270:5pt) -- (8774.89pt,2964.0799pt) -- (8911.9222pt,2964.0799pt) arc (270:360:5pt) -- (8916.9222pt,2969.0799pt) -- (8916.9222pt,3026.1478pt) arc (0:90:5pt) -- (8911.9222pt,3031.1478pt) -- (8774.89pt,3031.1478pt) arc (90:180:5pt) -- (8769.89pt,3026.1478pt) -- cycle; - \draw[pstyle8] (8785.3302pt,2980.0799pt) ellipse (11pt and 11pt); - \node at (8785.3302pt,2980.0799pt)[]{\textbf{\Large I}}; - \node at (8799.428pt,2970.5459pt)[below right,color=black]{\textit{XmlOperations}}; - \draw[pstyle3] (8770.89pt,2996.0799pt) -- (8915.9222pt,2996.0799pt); - \draw[pstyle3] (8770.89pt,3004.0799pt) -- (8915.9222pt,3004.0799pt); - \draw[pstyle7] (8777.89pt,3016.1139pt) rectangle (8783.89pt,3022.1139pt); - \node at (8789.89pt,3008.0799pt)[below right,color=black]{fromXmlNode()}; - \draw[pstyle1] (9802.07pt,1249.4499pt) arc (180:270:5pt) -- (9807.07pt,1244.4499pt) -- (10039.7531pt,1244.4499pt) arc (270:360:5pt) -- (10044.7531pt,1249.4499pt) -- (10044.7531pt,1401.8574pt) arc (0:90:5pt) -- (10039.7531pt,1406.8574pt) -- (9807.07pt,1406.8574pt) arc (90:180:5pt) -- (9802.07pt,1401.8574pt) -- cycle; - \draw[pstyle2] (9866.8246pt,1260.4499pt) ellipse (11pt and 11pt); - \node at (9866.8246pt,1260.4499pt)[]{\textbf{\Large C}}; - \node at (9887.3246pt,1250.9159pt)[below right,color=black]{SpeechParser}; - \draw[pstyle3] (9803.07pt,1276.4499pt) -- (10043.7531pt,1276.4499pt); - \draw[pstyle5] (9810.07pt,1288.4839pt) rectangle (9816.07pt,1294.4839pt); - \node at (9822.07pt,1280.4499pt)[below right,color=black]{speeches}; - \draw[pstyle5] (9810.07pt,1307.5518pt) rectangle (9816.07pt,1313.5518pt); - \node at (9822.07pt,1299.5178pt)[below right,color=black]{agendaItems}; - \draw[pstyle3] (9803.07pt,1322.5857pt) -- (10043.7531pt,1322.5857pt); - \draw[pstyle6] (9813.07pt,1337.6197pt) ellipse (3pt and 3pt); - \node at (9822.07pt,1326.5857pt)[below right,color=black]{setParseLegislativePeriods()}; - \draw[pstyle7] (9810.07pt,1353.6876pt) rectangle (9816.07pt,1359.6876pt); - \node at (9822.07pt,1345.6536pt)[below right,color=black]{parseSessionFile()}; - \draw[pstyle7] (9810.07pt,1372.7555pt) rectangle (9816.07pt,1378.7555pt); - \node at (9822.07pt,1364.7216pt)[below right,color=black]{getOptionalTextContent()}; - \draw[pstyle7] (9810.07pt,1391.8234pt) rectangle (9816.07pt,1397.8234pt); - \node at (9822.07pt,1383.7895pt)[below right,color=black]{convertDocumentToFile()}; - \draw[pstyle1] (10097.21pt,2024.8299pt) arc (180:270:5pt) -- (10102.21pt,2019.8299pt) -- (10252.6146pt,2019.8299pt) arc (270:360:5pt) -- (10257.6146pt,2024.8299pt) -- (10257.6146pt,2081.8978pt) arc (0:90:5pt) -- (10252.6146pt,2086.8978pt) -- (10102.21pt,2086.8978pt) arc (90:180:5pt) -- (10097.21pt,2081.8978pt) -- cycle; - \draw[pstyle8] (10145.233pt,2035.8299pt) ellipse (11pt and 11pt); - \node at (10145.233pt,2035.8299pt)[]{\textbf{\Large I}}; - \node at (10165.733pt,2026.2959pt)[below right,color=black]{\textit{Session}}; - \draw[pstyle3] (10098.21pt,2051.8299pt) -- (10256.6146pt,2051.8299pt); - \draw[pstyle3] (10098.21pt,2059.8299pt) -- (10256.6146pt,2059.8299pt); - \draw[pstyle7] (10105.21pt,2071.8639pt) rectangle (10111.21pt,2077.8639pt); - \node at (10117.21pt,2063.8299pt)[below right,color=black]{addAgendaItem()}; - \draw[pstyle1] (10787.08pt,2015.2999pt) arc (180:270:5pt) -- (10792.08pt,2010.2999pt) -- (10908.7455pt,2010.2999pt) arc (270:360:5pt) -- (10913.7455pt,2015.2999pt) -- (10913.7455pt,2091.4357pt) arc (0:90:5pt) -- (10908.7455pt,2096.4357pt) -- (10792.08pt,2096.4357pt) arc (90:180:5pt) -- (10787.08pt,2091.4357pt) -- cycle; - \draw[pstyle8] (10821.3615pt,2026.2999pt) ellipse (11pt and 11pt); - \node at (10821.3615pt,2026.2999pt)[]{\textbf{\Large I}}; - \node at (10839.6463pt,2016.7659pt)[below right,color=black]{\textit{Speech}}; - \draw[pstyle3] (10788.08pt,2042.2999pt) -- (10912.7455pt,2042.2999pt); - \draw[pstyle3] (10788.08pt,2050.2999pt) -- (10912.7455pt,2050.2999pt); - \draw[pstyle7] (10795.08pt,2062.3339pt) rectangle (10801.08pt,2068.3339pt); - \node at (10807.08pt,2054.2999pt)[below right,color=black]{addContent()}; - \draw[pstyle7] (10795.08pt,2081.4018pt) rectangle (10801.08pt,2087.4018pt); - \node at (10807.08pt,2073.3678pt)[below right,color=black]{toXML()}; - \draw[pstyle1] (9938.69pt,2024.8299pt) arc (180:270:5pt) -- (9943.69pt,2019.8299pt) -- (10057.1377pt,2019.8299pt) arc (270:360:5pt) -- (10062.1377pt,2024.8299pt) -- (10062.1377pt,2081.8978pt) arc (0:90:5pt) -- (10057.1377pt,2086.8978pt) -- (9943.69pt,2086.8978pt) arc (90:180:5pt) -- (9938.69pt,2081.8978pt) -- cycle; - \draw[pstyle8] (9953.69pt,2035.8299pt) ellipse (11pt and 11pt); - \node at (9953.69pt,2035.8299pt)[]{\textbf{\Large I}}; - \node at (9967.69pt,2026.2959pt)[below right,color=black]{\textit{AgendaItem}}; - \draw[pstyle3] (9939.69pt,2051.8299pt) -- (10061.1377pt,2051.8299pt); - \draw[pstyle3] (9939.69pt,2059.8299pt) -- (10061.1377pt,2059.8299pt); - \draw[pstyle7] (9946.69pt,2071.8639pt) rectangle (9952.69pt,2077.8639pt); - \node at (9958.69pt,2063.8299pt)[below right,color=black]{addSpeech()}; - \draw[pstyle1] (10532.97pt,2034.3699pt) arc (180:270:5pt) -- (10537.97pt,2029.3699pt) -- (10618.8471pt,2029.3699pt) arc (270:360:5pt) -- (10623.8471pt,2034.3699pt) -- (10623.8471pt,2072.3699pt) arc (0:90:5pt) -- (10618.8471pt,2077.3699pt) -- (10537.97pt,2077.3699pt) arc (90:180:5pt) -- (10532.97pt,2072.3699pt) -- cycle; - \draw[pstyle8] (10547.97pt,2045.3699pt) ellipse (11pt and 11pt); - \node at (10547.97pt,2045.3699pt)[]{\textbf{\Large I}}; - \node at (10561.97pt,2035.8359pt)[below right,color=black]{\textit{Content}}; - \draw[pstyle3] (10533.97pt,2061.3699pt) -- (10622.8471pt,2061.3699pt); - \draw[pstyle3] (10533.97pt,2069.3699pt) -- (10622.8471pt,2069.3699pt); - \draw[pstyle1] (10393.28pt,2034.3699pt) arc (180:270:5pt) -- (10398.28pt,2029.3699pt) -- (10492.5456pt,2029.3699pt) arc (270:360:5pt) -- (10497.5456pt,2034.3699pt) -- (10497.5456pt,2072.3699pt) arc (0:90:5pt) -- (10492.5456pt,2077.3699pt) -- (10398.28pt,2077.3699pt) arc (90:180:5pt) -- (10393.28pt,2072.3699pt) -- cycle; - \draw[pstyle8] (10408.28pt,2045.3699pt) ellipse (11pt and 11pt); - \node at (10408.28pt,2045.3699pt)[]{\textbf{\Large I}}; - \node at (10422.28pt,2035.8359pt)[below right,color=black]{\textit{Comment}}; - \draw[pstyle3] (10394.28pt,2061.3699pt) -- (10496.5456pt,2061.3699pt); - \draw[pstyle3] (10394.28pt,2069.3699pt) -- (10496.5456pt,2069.3699pt); - \draw[pstyle1] (10293.03pt,2034.3699pt) arc (180:270:5pt) -- (10298.03pt,2029.3699pt) -- (10352.7954pt,2029.3699pt) arc (270:360:5pt) -- (10357.7954pt,2034.3699pt) -- (10357.7954pt,2072.3699pt) arc (0:90:5pt) -- (10352.7954pt,2077.3699pt) -- (10298.03pt,2077.3699pt) arc (90:180:5pt) -- (10293.03pt,2072.3699pt) -- cycle; - \draw[pstyle8] (10308.03pt,2045.3699pt) ellipse (11pt and 11pt); - \node at (10308.03pt,2045.3699pt)[]{\textbf{\Large I}}; - \node at (10322.03pt,2035.8359pt)[below right,color=black]{\textit{Line}}; - \draw[pstyle3] (10294.03pt,2061.3699pt) -- (10356.7954pt,2061.3699pt); - \draw[pstyle3] (10294.03pt,2069.3699pt) -- (10356.7954pt,2069.3699pt); - \draw[pstyle1] (10659.2pt,2034.3699pt) arc (180:270:5pt) -- (10664.2pt,2029.3699pt) -- (10746.6188pt,2029.3699pt) arc (270:360:5pt) -- (10751.6188pt,2034.3699pt) -- (10751.6188pt,2072.3699pt) arc (0:90:5pt) -- (10746.6188pt,2077.3699pt) -- (10664.2pt,2077.3699pt) arc (90:180:5pt) -- (10659.2pt,2072.3699pt) -- cycle; - \draw[pstyle8] (10674.2pt,2045.3699pt) ellipse (11pt and 11pt); - \node at (10674.2pt,2045.3699pt)[]{\textbf{\Large I}}; - \node at (10688.2pt,2035.8359pt)[below right,color=black]{\textit{Speaker}}; - \draw[pstyle3] (10660.2pt,2061.3699pt) -- (10750.6188pt,2061.3699pt); - \draw[pstyle3] (10660.2pt,2069.3699pt) -- (10750.6188pt,2069.3699pt); - \draw[pstyle1] (10948.85pt,2034.3699pt) arc (180:270:5pt) -- (10953.85pt,2029.3699pt) -- (11052.9679pt,2029.3699pt) arc (270:360:5pt) -- (11057.9679pt,2034.3699pt) -- (11057.9679pt,2072.3699pt) arc (0:90:5pt) -- (11052.9679pt,2077.3699pt) -- (10953.85pt,2077.3699pt) arc (90:180:5pt) -- (10948.85pt,2072.3699pt) -- cycle; - \draw[pstyle8] (10963.85pt,2045.3699pt) ellipse (11pt and 11pt); - \node at (10963.85pt,2045.3699pt)[]{\textbf{\Large I}}; - \node at (10977.85pt,2035.8359pt)[below right,color=black]{\textit{Individual}}; - \draw[pstyle3] (10949.85pt,2061.3699pt) -- (11056.9679pt,2061.3699pt); - \draw[pstyle3] (10949.85pt,2069.3699pt) -- (11056.9679pt,2069.3699pt); - \draw[pstyle1] (11859.03pt,2034.3699pt) arc (180:270:5pt) -- (11864.03pt,2029.3699pt) -- (11984.7805pt,2029.3699pt) arc (270:360:5pt) -- (11989.7805pt,2034.3699pt) -- (11989.7805pt,2072.3699pt) arc (0:90:5pt) -- (11984.7805pt,2077.3699pt) -- (11864.03pt,2077.3699pt) arc (90:180:5pt) -- (11859.03pt,2072.3699pt) -- cycle; - \draw[pstyle8] (11874.03pt,2045.3699pt) ellipse (11pt and 11pt); - \node at (11874.03pt,2045.3699pt)[]{\textbf{\Large I}}; - \node at (11888.03pt,2035.8359pt)[below right,color=black]{\textit{HistoryEntry}}; - \draw[pstyle3] (11860.03pt,2061.3699pt) -- (11988.7805pt,2061.3699pt); - \draw[pstyle3] (11860.03pt,2069.3699pt) -- (11988.7805pt,2069.3699pt); - \draw[pstyle1] (11522.64pt,2034.3699pt) arc (180:270:5pt) -- (11527.64pt,2029.3699pt) -- (11647.1734pt,2029.3699pt) arc (270:360:5pt) -- (11652.1734pt,2034.3699pt) -- (11652.1734pt,2072.3699pt) arc (0:90:5pt) -- (11647.1734pt,2077.3699pt) -- (11527.64pt,2077.3699pt) arc (90:180:5pt) -- (11522.64pt,2072.3699pt) -- cycle; - \draw[pstyle8] (11537.64pt,2045.3699pt) ellipse (11pt and 11pt); - \node at (11537.64pt,2045.3699pt)[]{\textbf{\Large I}}; - \node at (11551.64pt,2035.8359pt)[below right,color=black]{\textit{Constituency}}; - \draw[pstyle3] (11523.64pt,2061.3699pt) -- (11651.1734pt,2061.3699pt); - \draw[pstyle3] (11523.64pt,2069.3699pt) -- (11651.1734pt,2069.3699pt); - \draw[pstyle1] (11687.14pt,2015.2999pt) arc (180:270:5pt) -- (11692.14pt,2010.2999pt) -- (11818.6724pt,2010.2999pt) arc (270:360:5pt) -- (11823.6724pt,2015.2999pt) -- (11823.6724pt,2091.4357pt) arc (0:90:5pt) -- (11818.6724pt,2096.4357pt) -- (11692.14pt,2096.4357pt) arc (90:180:5pt) -- (11687.14pt,2091.4357pt) -- cycle; - \draw[pstyle8] (11720.1946pt,2026.2999pt) ellipse (11pt and 11pt); - \node at (11720.1946pt,2026.2999pt)[]{\textbf{\Large I}}; - \node at (11738.2068pt,2016.7659pt)[below right,color=black]{\textit{Fraction}}; - \draw[pstyle3] (11688.14pt,2042.2999pt) -- (11822.6724pt,2042.2999pt); - \draw[pstyle3] (11688.14pt,2050.2999pt) -- (11822.6724pt,2050.2999pt); - \draw[pstyle7] (11695.14pt,2062.3339pt) rectangle (11701.14pt,2068.3339pt); - \node at (11707.14pt,2054.2999pt)[below right,color=black]{addMember()}; - \draw[pstyle7] (11695.14pt,2081.4018pt) rectangle (11701.14pt,2087.4018pt); - \node at (11707.14pt,2073.3678pt)[below right,color=black]{updateName()}; - \draw[pstyle1] (11324.98pt,2034.3699pt) arc (180:270:5pt) -- (11329.98pt,2029.3699pt) -- (11482.8468pt,2029.3699pt) arc (270:360:5pt) -- (11487.8468pt,2034.3699pt) -- (11487.8468pt,2072.3699pt) arc (0:90:5pt) -- (11482.8468pt,2077.3699pt) -- (11329.98pt,2077.3699pt) arc (90:180:5pt) -- (11324.98pt,2072.3699pt) -- cycle; - \draw[pstyle8] (11339.98pt,2045.3699pt) ellipse (11pt and 11pt); - \node at (11339.98pt,2045.3699pt)[]{\textbf{\Large I}}; - \node at (11353.98pt,2035.8359pt)[below right,color=black]{\textit{LegislativePeriod}}; - \draw[pstyle3] (11325.98pt,2061.3699pt) -- (11486.8468pt,2061.3699pt); - \draw[pstyle3] (11325.98pt,2069.3699pt) -- (11486.8468pt,2069.3699pt); - \draw[pstyle1] (11093.29pt,2024.8299pt) arc (180:270:5pt) -- (11098.29pt,2019.8299pt) -- (11284.5226pt,2019.8299pt) arc (270:360:5pt) -- (11289.5226pt,2024.8299pt) -- (11289.5226pt,2081.8978pt) arc (0:90:5pt) -- (11284.5226pt,2086.8978pt) -- (11098.29pt,2086.8978pt) arc (90:180:5pt) -- (11093.29pt,2081.8978pt) -- cycle; - \draw[pstyle8] (11108.29pt,2035.8299pt) ellipse (11pt and 11pt); - \node at (11108.29pt,2035.8299pt)[]{\textbf{\Large I}}; - \node at (11122.29pt,2026.2959pt)[below right,color=black]{\textit{MemberOfParliament}}; - \draw[pstyle3] (11094.29pt,2051.8299pt) -- (11288.5226pt,2051.8299pt); - \draw[pstyle3] (11094.29pt,2059.8299pt) -- (11288.5226pt,2059.8299pt); - \draw[pstyle7] (11101.29pt,2071.8639pt) rectangle (11107.29pt,2077.8639pt); - \node at (11113.29pt,2063.8299pt)[below right,color=black]{updateParty()}; - \draw[pstyle1] (10945.52pt,1211.3199pt) arc (180:270:5pt) -- (10950.52pt,1206.3199pt) -- (11146.2949pt,1206.3199pt) arc (270:360:5pt) -- (11151.2949pt,1211.3199pt) -- (11151.2949pt,1439.9991pt) arc (0:90:5pt) -- (11146.2949pt,1444.9991pt) -- (10950.52pt,1444.9991pt) arc (90:180:5pt) -- (10945.52pt,1439.9991pt) -- cycle; - \draw[pstyle2] (10960.52pt,1222.3199pt) ellipse (11pt and 11pt); - \node at (10960.52pt,1222.3199pt)[]{\textbf{\Large C}}; - \node at (10974.52pt,1212.7859pt)[below right,color=black]{AgendaItem\_File\_Impl}; - \draw[pstyle3] (10946.52pt,1238.3199pt) -- (11150.2949pt,1238.3199pt); - \draw[pstyle5] (10953.52pt,1250.3539pt) rectangle (10959.52pt,1256.3539pt); - \node at (10965.52pt,1242.3199pt)[below right,color=black]{id}; - \draw[pstyle5] (10953.52pt,1269.4218pt) rectangle (10959.52pt,1275.4218pt); - \node at (10965.52pt,1261.3878pt)[below right,color=black]{sessionId}; - \draw[pstyle5] (10953.52pt,1288.4897pt) rectangle (10959.52pt,1294.4897pt); - \node at (10965.52pt,1280.4557pt)[below right,color=black]{title}; - \draw[pstyle5] (10953.52pt,1307.5576pt) rectangle (10959.52pt,1313.5576pt); - \node at (10965.52pt,1299.5236pt)[below right,color=black]{speeches}; - \draw[pstyle3] (10946.52pt,1322.5916pt) -- (11150.2949pt,1322.5916pt); - \draw[pstyle6] (10956.52pt,1337.6255pt) ellipse (3pt and 3pt); - \node at (10965.52pt,1326.5916pt)[below right,color=black]{getId()}; - \draw[pstyle6] (10956.52pt,1356.6934pt) ellipse (3pt and 3pt); - \node at (10965.52pt,1345.6595pt)[below right,color=black]{getSessionId()}; - \draw[pstyle6] (10956.52pt,1375.7614pt) ellipse (3pt and 3pt); - \node at (10965.52pt,1364.7274pt)[below right,color=black]{getTitle()}; - \draw[pstyle6] (10956.52pt,1394.8293pt) ellipse (3pt and 3pt); - \node at (10965.52pt,1383.7953pt)[below right,color=black]{getType()}; - \draw[pstyle6] (10956.52pt,1413.8972pt) ellipse (3pt and 3pt); - \node at (10965.52pt,1402.8632pt)[below right,color=black]{addSpeech()}; - \draw[pstyle6] (10956.52pt,1432.9651pt) ellipse (3pt and 3pt); - \node at (10965.52pt,1421.9312pt)[below right,color=black]{toHTML()}; - \draw[pstyle1] (10079.31pt,1192.2499pt) arc (180:270:5pt) -- (10084.31pt,1187.2499pt) -- (10268.5023pt,1187.2499pt) arc (270:360:5pt) -- (10273.5023pt,1192.2499pt) -- (10273.5023pt,1459.0649pt) arc (0:90:5pt) -- (10268.5023pt,1464.0649pt) -- (10084.31pt,1464.0649pt) arc (90:180:5pt) -- (10079.31pt,1459.0649pt) -- cycle; - \draw[pstyle2] (10105.7191pt,1203.2499pt) ellipse (11pt and 11pt); - \node at (10105.7191pt,1203.2499pt)[]{\textbf{\Large C}}; - \node at (10122.2544pt,1193.7159pt)[below right,color=black]{Session\_File\_Impl}; - \draw[pstyle3] (10080.31pt,1219.2499pt) -- (10272.5023pt,1219.2499pt); - \draw[pstyle5] (10087.31pt,1231.2839pt) rectangle (10093.31pt,1237.2839pt); - \node at (10099.31pt,1223.2499pt)[below right,color=black]{id}; - \draw[pstyle5] (10087.31pt,1250.3518pt) rectangle (10093.31pt,1256.3518pt); - \node at (10099.31pt,1242.3178pt)[below right,color=black]{legislativePeriod}; - \draw[pstyle5] (10087.31pt,1269.4197pt) rectangle (10093.31pt,1275.4197pt); - \node at (10099.31pt,1261.3857pt)[below right,color=black]{dateTime}; - \draw[pstyle5] (10087.31pt,1288.4876pt) rectangle (10093.31pt,1294.4876pt); - \node at (10099.31pt,1280.4536pt)[below right,color=black]{endTime}; - \draw[pstyle5] (10087.31pt,1307.5555pt) rectangle (10093.31pt,1313.5555pt); - \node at (10099.31pt,1299.5216pt)[below right,color=black]{agendaItems}; - \draw[pstyle3] (10080.31pt,1322.5895pt) -- (10272.5023pt,1322.5895pt); - \draw[pstyle6] (10090.31pt,1337.6234pt) ellipse (3pt and 3pt); - \node at (10099.31pt,1326.5895pt)[below right,color=black]{getId()}; - \draw[pstyle6] (10090.31pt,1356.6914pt) ellipse (3pt and 3pt); - \node at (10099.31pt,1345.6574pt)[below right,color=black]{getLegislativePeriod()}; - \draw[pstyle6] (10090.31pt,1375.7593pt) ellipse (3pt and 3pt); - \node at (10099.31pt,1364.7253pt)[below right,color=black]{getDateTime()}; - \draw[pstyle6] (10090.31pt,1394.8272pt) ellipse (3pt and 3pt); - \node at (10099.31pt,1383.7932pt)[below right,color=black]{getEndTime()}; - \draw[pstyle6] (10090.31pt,1413.8951pt) ellipse (3pt and 3pt); - \node at (10099.31pt,1402.8612pt)[below right,color=black]{getType()}; - \draw[pstyle6] (10090.31pt,1432.963pt) ellipse (3pt and 3pt); - \node at (10099.31pt,1421.9291pt)[below right,color=black]{addAgendaItem()}; - \draw[pstyle6] (10090.31pt,1452.0309pt) ellipse (3pt and 3pt); - \node at (10099.31pt,1440.997pt)[below right,color=black]{toHTML()}; - \draw[pstyle1] (11186.22pt,1096.9099pt) arc (180:270:5pt) -- (11191.22pt,1091.9099pt) -- (11351.6051pt,1091.9099pt) arc (270:360:5pt) -- (11356.6051pt,1096.9099pt) -- (11356.6051pt,1554.4041pt) arc (0:90:5pt) -- (11351.6051pt,1559.4041pt) -- (11191.22pt,1559.4041pt) arc (90:180:5pt) -- (11186.22pt,1554.4041pt) -- cycle; - \draw[pstyle2] (11203.1427pt,1107.9099pt) ellipse (11pt and 11pt); - \node at (11203.1427pt,1107.9099pt)[]{\textbf{\Large C}}; - \node at (11217.57pt,1098.3759pt)[below right,color=black]{Speech\_File\_Impl}; - \draw[pstyle3] (11187.22pt,1123.9099pt) -- (11355.6051pt,1123.9099pt); - \draw[pstyle5] (11194.22pt,1135.9439pt) rectangle (11200.22pt,1141.9439pt); - \node at (11206.22pt,1127.9099pt)[below right,color=black]{sessionId}; - \draw[pstyle5] (11194.22pt,1155.0118pt) rectangle (11200.22pt,1161.0118pt); - \node at (11206.22pt,1146.9778pt)[below right,color=black]{agendaItemId}; - \draw[pstyle5] (11194.22pt,1174.0797pt) rectangle (11200.22pt,1180.0797pt); - \node at (11206.22pt,1166.0457pt)[below right,color=black]{speakerId}; - \draw[pstyle5] (11194.22pt,1193.1476pt) rectangle (11200.22pt,1199.1476pt); - \node at (11206.22pt,1185.1136pt)[below right,color=black]{speechId}; - \draw[pstyle5] (11194.22pt,1212.2155pt) rectangle (11200.22pt,1218.2155pt); - \node at (11206.22pt,1204.1816pt)[below right,color=black]{speakerName}; - \draw[pstyle5] (11194.22pt,1231.2834pt) rectangle (11200.22pt,1237.2834pt); - \node at (11206.22pt,1223.2495pt)[below right,color=black]{fraction}; - \draw[pstyle5] (11194.22pt,1250.3514pt) rectangle (11200.22pt,1256.3514pt); - \node at (11206.22pt,1242.3174pt)[below right,color=black]{speechContents}; - \draw[pstyle5] (11194.22pt,1269.4193pt) rectangle (11200.22pt,1275.4193pt); - \node at (11206.22pt,1261.3853pt)[below right,color=black]{speechKey}; - \draw[pstyle3] (11187.22pt,1284.4532pt) -- (11355.6051pt,1284.4532pt); - \draw[pstyle6] (11197.22pt,1299.4872pt) ellipse (3pt and 3pt); - \node at (11206.22pt,1288.4532pt)[below right,color=black]{getSessionId()}; - \draw[pstyle6] (11197.22pt,1318.5551pt) ellipse (3pt and 3pt); - \node at (11206.22pt,1307.5212pt)[below right,color=black]{getAgendaItemId()}; - \draw[pstyle6] (11197.22pt,1337.623pt) ellipse (3pt and 3pt); - \node at (11206.22pt,1326.5891pt)[below right,color=black]{getSpeakerId()}; - \draw[pstyle6] (11197.22pt,1356.6909pt) ellipse (3pt and 3pt); - \node at (11206.22pt,1345.657pt)[below right,color=black]{getSpeechId()}; - \draw[pstyle6] (11197.22pt,1375.7589pt) ellipse (3pt and 3pt); - \node at (11206.22pt,1364.7249pt)[below right,color=black]{getSpeakerName()}; - \draw[pstyle6] (11197.22pt,1394.8268pt) ellipse (3pt and 3pt); - \node at (11206.22pt,1383.7928pt)[below right,color=black]{getFraction()}; - \draw[pstyle6] (11197.22pt,1413.8947pt) ellipse (3pt and 3pt); - \node at (11206.22pt,1402.8607pt)[below right,color=black]{getSpeechKey()}; - \draw[pstyle6] (11197.22pt,1432.9626pt) ellipse (3pt and 3pt); - \node at (11206.22pt,1421.9287pt)[below right,color=black]{getType()}; - \draw[pstyle6] (11197.22pt,1452.0305pt) ellipse (3pt and 3pt); - \node at (11206.22pt,1440.9966pt)[below right,color=black]{addContent()}; - \draw[pstyle6] (11197.22pt,1471.0984pt) ellipse (3pt and 3pt); - \node at (11206.22pt,1460.0645pt)[below right,color=black]{toHTML()}; - \draw[pstyle6] (11197.22pt,1490.1664pt) ellipse (3pt and 3pt); - \node at (11206.22pt,1479.1324pt)[below right,color=black]{getFullText()}; - \draw[pstyle6] (11197.22pt,1509.2343pt) ellipse (3pt and 3pt); - \node at (11206.22pt,1498.2003pt)[below right,color=black]{toCas()}; - \draw[pstyle6] (11197.22pt,1528.3022pt) ellipse (3pt and 3pt); - \node at (11206.22pt,1517.2682pt)[below right,color=black]{toTeX()}; - \draw[pstyle6] (11197.22pt,1547.3701pt) ellipse (3pt and 3pt); - \node at (11206.22pt,1536.3362pt)[below right,color=black]{toXML()}; - \draw[pstyle1] (10489.1pt,1201.7799pt) arc (180:270:5pt) -- (10494.1pt,1196.7799pt) -- (10696.7117pt,1196.7799pt) arc (270:360:5pt) -- (10701.7117pt,1201.7799pt) -- (10701.7117pt,1449.527pt) arc (0:90:5pt) -- (10696.7117pt,1454.527pt) -- (10494.1pt,1454.527pt) arc (90:180:5pt) -- (10489.1pt,1449.527pt) -- cycle; - \draw[pstyle2] (10515.8377pt,1212.7799pt) ellipse (11pt and 11pt); - \node at (10515.8377pt,1212.7799pt)[]{\textbf{\Large C}}; - \node at (10532.4461pt,1203.2459pt)[below right,color=black]{Comment\_File\_Impl}; - \draw[pstyle3] (10490.1pt,1228.7799pt) -- (10700.7117pt,1228.7799pt); - \draw[pstyle5] (10497.1pt,1240.8139pt) rectangle (10503.1pt,1246.8139pt); - \node at (10509.1pt,1232.7799pt)[below right,color=black]{contentId}; - \draw[pstyle5] (10497.1pt,1259.8818pt) rectangle (10503.1pt,1265.8818pt); - \node at (10509.1pt,1251.8478pt)[below right,color=black]{speechId}; - \draw[pstyle5] (10497.1pt,1278.9497pt) rectangle (10503.1pt,1284.9497pt); - \node at (10509.1pt,1270.9157pt)[below right,color=black]{comment}; - \draw[pstyle5] (10497.1pt,1298.0176pt) rectangle (10503.1pt,1304.0176pt); - \node at (10509.1pt,1289.9836pt)[below right,color=black]{commentatorName}; - \draw[pstyle3] (10490.1pt,1313.0516pt) -- (10700.7117pt,1313.0516pt); - \draw[pstyle6] (10500.1pt,1328.0855pt) ellipse (3pt and 3pt); - \node at (10509.1pt,1317.0516pt)[below right,color=black]{getContentId()}; - \draw[pstyle6] (10500.1pt,1347.1534pt) ellipse (3pt and 3pt); - \node at (10509.1pt,1336.1195pt)[below right,color=black]{getSpeechId()}; - \draw[pstyle6] (10500.1pt,1366.2214pt) ellipse (3pt and 3pt); - \node at (10509.1pt,1355.1874pt)[below right,color=black]{getComment()}; - \draw[pstyle6] (10500.1pt,1385.2893pt) ellipse (3pt and 3pt); - \node at (10509.1pt,1374.2553pt)[below right,color=black]{getCommentatorName()}; - \draw[pstyle6] (10500.1pt,1404.3572pt) ellipse (3pt and 3pt); - \node at (10509.1pt,1393.3232pt)[below right,color=black]{getType()}; - \draw[pstyle6] (10500.1pt,1423.4251pt) ellipse (3pt and 3pt); - \node at (10509.1pt,1412.3912pt)[below right,color=black]{toTeX()}; - \draw[pstyle6] (10500.1pt,1442.493pt) ellipse (3pt and 3pt); - \node at (10509.1pt,1431.4591pt)[below right,color=black]{toXML()}; - \draw[pstyle1] (10308.35pt,1220.8499pt) arc (180:270:5pt) -- (10313.35pt,1215.8499pt) -- (10449.4689pt,1215.8499pt) arc (270:360:5pt) -- (10454.4689pt,1220.8499pt) -- (10454.4689pt,1430.4612pt) arc (0:90:5pt) -- (10449.4689pt,1435.4612pt) -- (10313.35pt,1435.4612pt) arc (90:180:5pt) -- (10308.35pt,1430.4612pt) -- cycle; - \draw[pstyle2] (10323.35pt,1231.8499pt) ellipse (11pt and 11pt); - \node at (10323.35pt,1231.8499pt)[]{\textbf{\Large C}}; - \node at (10337.35pt,1222.3159pt)[below right,color=black]{Line\_File\_Impl}; - \draw[pstyle3] (10309.35pt,1247.8499pt) -- (10453.4689pt,1247.8499pt); - \draw[pstyle5] (10316.35pt,1259.8839pt) rectangle (10322.35pt,1265.8839pt); - \node at (10328.35pt,1251.8499pt)[below right,color=black]{contentId}; - \draw[color=plantucolor0009,line width=1.0pt] (10319.35pt,1276.9518pt) -- (10323.35pt,1280.9518pt) -- (10319.35pt,1284.9518pt) -- (10315.35pt,1280.9518pt) -- cycle; - \node at (10328.35pt,1270.9178pt)[below right,color=black]{speechId}; - \draw[pstyle5] (10316.35pt,1298.0197pt) rectangle (10322.35pt,1304.0197pt); - \node at (10328.35pt,1289.9857pt)[below right,color=black]{content}; - \draw[pstyle3] (10309.35pt,1313.0536pt) -- (10453.4689pt,1313.0536pt); - \draw[pstyle6] (10319.35pt,1328.0876pt) ellipse (3pt and 3pt); - \node at (10328.35pt,1317.0536pt)[below right,color=black]{getContentId()}; - \draw[pstyle6] (10319.35pt,1347.1555pt) ellipse (3pt and 3pt); - \node at (10328.35pt,1336.1216pt)[below right,color=black]{getSpeechId()}; - \draw[pstyle6] (10319.35pt,1366.2234pt) ellipse (3pt and 3pt); - \node at (10328.35pt,1355.1895pt)[below right,color=black]{getContent()}; - \draw[pstyle6] (10319.35pt,1385.2914pt) ellipse (3pt and 3pt); - \node at (10328.35pt,1374.2574pt)[below right,color=black]{getType()}; - \draw[pstyle6] (10319.35pt,1404.3593pt) ellipse (3pt and 3pt); - \node at (10328.35pt,1393.3253pt)[below right,color=black]{toTeX()}; - \draw[pstyle6] (10319.35pt,1423.4272pt) ellipse (3pt and 3pt); - \node at (10328.35pt,1412.3932pt)[below right,color=black]{toXML()}; - \draw[pstyle1] (10736.36pt,1182.7199pt) arc (180:270:5pt) -- (10741.36pt,1177.7199pt) -- (10905.4569pt,1177.7199pt) arc (270:360:5pt) -- (10910.4569pt,1182.7199pt) -- (10910.4569pt,1468.6028pt) arc (0:90:5pt) -- (10905.4569pt,1473.6028pt) -- (10741.36pt,1473.6028pt) arc (90:180:5pt) -- (10736.36pt,1468.6028pt) -- cycle; - \draw[pstyle2] (10751.36pt,1193.7199pt) ellipse (11pt and 11pt); - \node at (10751.36pt,1193.7199pt)[]{\textbf{\Large C}}; - \node at (10765.36pt,1184.1859pt)[below right,color=black]{Speaker\_File\_Impl}; - \draw[pstyle3] (10737.36pt,1209.7199pt) -- (10909.4569pt,1209.7199pt); - \draw[pstyle5] (10744.36pt,1221.7539pt) rectangle (10750.36pt,1227.7539pt); - \node at (10756.36pt,1213.7199pt)[below right,color=black]{contentId}; - \draw[pstyle5] (10744.36pt,1240.8218pt) rectangle (10750.36pt,1246.8218pt); - \node at (10756.36pt,1232.7878pt)[below right,color=black]{speechId}; - \draw[pstyle5] (10744.36pt,1259.8897pt) rectangle (10750.36pt,1265.8897pt); - \node at (10756.36pt,1251.8557pt)[below right,color=black]{speakerId}; - \draw[pstyle5] (10744.36pt,1278.9576pt) rectangle (10750.36pt,1284.9576pt); - \node at (10756.36pt,1270.9236pt)[below right,color=black]{speakerName}; - \draw[pstyle5] (10744.36pt,1298.0255pt) rectangle (10750.36pt,1304.0255pt); - \node at (10756.36pt,1289.9916pt)[below right,color=black]{fraction}; - \draw[pstyle3] (10737.36pt,1313.0595pt) -- (10909.4569pt,1313.0595pt); - \draw[pstyle6] (10747.36pt,1328.0934pt) ellipse (3pt and 3pt); - \node at (10756.36pt,1317.0595pt)[below right,color=black]{getContentId()}; - \draw[pstyle6] (10747.36pt,1347.1614pt) ellipse (3pt and 3pt); - \node at (10756.36pt,1336.1274pt)[below right,color=black]{getSpeechId()}; - \draw[pstyle6] (10747.36pt,1366.2293pt) ellipse (3pt and 3pt); - \node at (10756.36pt,1355.1953pt)[below right,color=black]{getSpeakerId()}; - \draw[pstyle6] (10747.36pt,1385.2972pt) ellipse (3pt and 3pt); - \node at (10756.36pt,1374.2632pt)[below right,color=black]{getSpeakerName()}; - \draw[pstyle6] (10747.36pt,1404.3651pt) ellipse (3pt and 3pt); - \node at (10756.36pt,1393.3312pt)[below right,color=black]{getFraction()}; - \draw[pstyle6] (10747.36pt,1423.433pt) ellipse (3pt and 3pt); - \node at (10756.36pt,1412.3991pt)[below right,color=black]{getType()}; - \draw[pstyle6] (10747.36pt,1442.5009pt) ellipse (3pt and 3pt); - \node at (10756.36pt,1431.467pt)[below right,color=black]{toTeX()}; - \draw[pstyle6] (10747.36pt,1461.5689pt) ellipse (3pt and 3pt); - \node at (10756.36pt,1450.5349pt)[below right,color=black]{toXML()}; - \draw[pstyle1] (11391.27pt,1154.1099pt) arc (180:270:5pt) -- (11396.27pt,1149.1099pt) -- (11578.5428pt,1149.1099pt) arc (270:360:5pt) -- (11583.5428pt,1154.1099pt) -- (11583.5428pt,1497.1966pt) arc (0:90:5pt) -- (11578.5428pt,1502.1966pt) -- (11396.27pt,1502.1966pt) arc (90:180:5pt) -- (11391.27pt,1497.1966pt) -- cycle; - \draw[pstyle2] (11406.27pt,1165.1099pt) ellipse (11pt and 11pt); - \node at (11406.27pt,1165.1099pt)[]{\textbf{\Large C}}; - \node at (11420.27pt,1155.5759pt)[below right,color=black]{Individual\_File\_Impl}; - \draw[pstyle3] (11392.27pt,1181.1099pt) -- (11582.5428pt,1181.1099pt); - \draw[pstyle5] (11399.27pt,1193.1439pt) rectangle (11405.27pt,1199.1439pt); - \node at (11411.27pt,1185.1099pt)[below right,color=black]{name}; - \draw[pstyle5] (11399.27pt,1212.2118pt) rectangle (11405.27pt,1218.2118pt); - \node at (11411.27pt,1204.1778pt)[below right,color=black]{firstName}; - \draw[pstyle5] (11399.27pt,1231.2797pt) rectangle (11405.27pt,1237.2797pt); - \node at (11411.27pt,1223.2457pt)[below right,color=black]{title}; - \draw[pstyle5] (11399.27pt,1250.3476pt) rectangle (11405.27pt,1256.3476pt); - \node at (11411.27pt,1242.3136pt)[below right,color=black]{dateOfBirth}; - \draw[pstyle5] (11399.27pt,1269.4155pt) rectangle (11405.27pt,1275.4155pt); - \node at (11411.27pt,1261.3816pt)[below right,color=black]{dateOfDeath}; - \draw[pstyle5] (11399.27pt,1288.4834pt) rectangle (11405.27pt,1294.4834pt); - \node at (11411.27pt,1280.4495pt)[below right,color=black]{placeOfBirth}; - \draw[pstyle5] (11399.27pt,1307.5514pt) rectangle (11405.27pt,1313.5514pt); - \node at (11411.27pt,1299.5174pt)[below right,color=black]{gender}; - \draw[pstyle5] (11399.27pt,1326.6193pt) rectangle (11405.27pt,1332.6193pt); - \node at (11411.27pt,1318.5853pt)[below right,color=black]{religion}; - \draw[pstyle3] (11392.27pt,1341.6532pt) -- (11582.5428pt,1341.6532pt); - \draw[pstyle6] (11402.27pt,1356.6872pt) ellipse (3pt and 3pt); - \node at (11411.27pt,1345.6532pt)[below right,color=black]{getName()}; - \draw[pstyle6] (11402.27pt,1375.7551pt) ellipse (3pt and 3pt); - \node at (11411.27pt,1364.7212pt)[below right,color=black]{getFirstName()}; - \draw[pstyle6] (11402.27pt,1394.823pt) ellipse (3pt and 3pt); - \node at (11411.27pt,1383.7891pt)[below right,color=black]{getTitle()}; - \draw[pstyle6] (11402.27pt,1413.8909pt) ellipse (3pt and 3pt); - \node at (11411.27pt,1402.857pt)[below right,color=black]{getDateOfBirth()}; - \draw[pstyle6] (11402.27pt,1432.9589pt) ellipse (3pt and 3pt); - \node at (11411.27pt,1421.9249pt)[below right,color=black]{getDateOfDeath()}; - \draw[pstyle6] (11402.27pt,1452.0268pt) ellipse (3pt and 3pt); - \node at (11411.27pt,1440.9928pt)[below right,color=black]{getPlaceOfBirth()}; - \draw[pstyle6] (11402.27pt,1471.0947pt) ellipse (3pt and 3pt); - \node at (11411.27pt,1460.0607pt)[below right,color=black]{getGender()}; - \draw[pstyle6] (11402.27pt,1490.1626pt) ellipse (3pt and 3pt); - \node at (11411.27pt,1479.1287pt)[below right,color=black]{getReligion()}; - \draw[pstyle1] (12673.39pt,1220.8499pt) arc (180:270:5pt) -- (12678.39pt,1215.8499pt) -- (12880.4292pt,1215.8499pt) arc (270:360:5pt) -- (12885.4292pt,1220.8499pt) -- (12885.4292pt,1430.4612pt) arc (0:90:5pt) -- (12880.4292pt,1435.4612pt) -- (12678.39pt,1435.4612pt) arc (90:180:5pt) -- (12673.39pt,1430.4612pt) -- cycle; - \draw[pstyle2] (12688.39pt,1231.8499pt) ellipse (11pt and 11pt); - \node at (12688.39pt,1231.8499pt)[]{\textbf{\Large C}}; - \node at (12702.39pt,1222.3159pt)[below right,color=black]{HistoryEntry\_File\_Impl}; - \draw[pstyle3] (12674.39pt,1247.8499pt) -- (12884.4292pt,1247.8499pt); - \draw[pstyle5] (12681.39pt,1259.8839pt) rectangle (12687.39pt,1265.8839pt); - \node at (12693.39pt,1251.8499pt)[below right,color=black]{action}; - \draw[pstyle5] (12681.39pt,1278.9518pt) rectangle (12687.39pt,1284.9518pt); - \node at (12693.39pt,1270.9178pt)[below right,color=black]{content}; - \draw[pstyle5] (12681.39pt,1298.0197pt) rectangle (12687.39pt,1304.0197pt); - \node at (12693.39pt,1289.9857pt)[below right,color=black]{contentType}; - \draw[pstyle5] (12681.39pt,1317.0876pt) rectangle (12687.39pt,1323.0876pt); - \node at (12693.39pt,1309.0536pt)[below right,color=black]{date}; - \draw[pstyle3] (12674.39pt,1332.1216pt) -- (12884.4292pt,1332.1216pt); - \draw[pstyle6] (12684.39pt,1347.1555pt) ellipse (3pt and 3pt); - \node at (12693.39pt,1336.1216pt)[below right,color=black]{getContent()}; - \draw[pstyle6] (12684.39pt,1366.2234pt) ellipse (3pt and 3pt); - \node at (12693.39pt,1355.1895pt)[below right,color=black]{getContentType()}; - \draw[pstyle6] (12684.39pt,1385.2914pt) ellipse (3pt and 3pt); - \node at (12693.39pt,1374.2574pt)[below right,color=black]{getDate()}; - \draw[pstyle6] (12684.39pt,1404.3593pt) ellipse (3pt and 3pt); - \node at (12693.39pt,1393.3253pt)[below right,color=black]{getAction()}; - \draw[pstyle6] (12684.39pt,1423.4272pt) ellipse (3pt and 3pt); - \node at (12693.39pt,1412.3932pt)[below right,color=black]{getType()}; - \draw[pstyle1] (12215.41pt,1230.3899pt) arc (180:270:5pt) -- (12220.41pt,1225.3899pt) -- (12422.4167pt,1225.3899pt) arc (270:360:5pt) -- (12427.4167pt,1230.3899pt) -- (12427.4167pt,1420.9332pt) arc (0:90:5pt) -- (12422.4167pt,1425.9332pt) -- (12220.41pt,1425.9332pt) arc (90:180:5pt) -- (12215.41pt,1420.9332pt) -- cycle; - \draw[pstyle2] (12230.41pt,1241.3899pt) ellipse (11pt and 11pt); - \node at (12230.41pt,1241.3899pt)[]{\textbf{\Large C}}; - \node at (12244.41pt,1231.8559pt)[below right,color=black]{Constituency\_File\_Impl}; - \draw[pstyle3] (12216.41pt,1257.3899pt) -- (12426.4167pt,1257.3899pt); - \draw[pstyle5] (12223.41pt,1269.4239pt) rectangle (12229.41pt,1275.4239pt); - \node at (12235.41pt,1261.3899pt)[below right,color=black]{id}; - \draw[pstyle5] (12223.41pt,1288.4918pt) rectangle (12229.41pt,1294.4918pt); - \node at (12235.41pt,1280.4578pt)[below right,color=black]{name}; - \draw[pstyle5] (12223.41pt,1307.5597pt) rectangle (12229.41pt,1313.5597pt); - \node at (12235.41pt,1299.5257pt)[below right,color=black]{federalState}; - \draw[pstyle3] (12216.41pt,1322.5936pt) -- (12426.4167pt,1322.5936pt); - \draw[pstyle6] (12226.41pt,1337.6276pt) ellipse (3pt and 3pt); - \node at (12235.41pt,1326.5936pt)[below right,color=black]{getId()}; - \draw[pstyle6] (12226.41pt,1356.6955pt) ellipse (3pt and 3pt); - \node at (12235.41pt,1345.6616pt)[below right,color=black]{getName()}; - \draw[pstyle6] (12226.41pt,1375.7634pt) ellipse (3pt and 3pt); - \node at (12235.41pt,1364.7295pt)[below right,color=black]{getFederalState()}; - \draw[pstyle6] (12226.41pt,1394.8314pt) ellipse (3pt and 3pt); - \node at (12235.41pt,1383.7974pt)[below right,color=black]{getType()}; - \draw[pstyle6] (12226.41pt,1413.8993pt) ellipse (3pt and 3pt); - \node at (12235.41pt,1402.8653pt)[below right,color=black]{toHTML()}; - \draw[pstyle1] (12462.04pt,1220.8499pt) arc (180:270:5pt) -- (12467.04pt,1215.8499pt) -- (12633.7821pt,1215.8499pt) arc (270:360:5pt) -- (12638.7821pt,1220.8499pt) -- (12638.7821pt,1430.4612pt) arc (0:90:5pt) -- (12633.7821pt,1435.4612pt) -- (12467.04pt,1435.4612pt) arc (90:180:5pt) -- (12462.04pt,1430.4612pt) -- cycle; - \draw[pstyle2] (12477.04pt,1231.8499pt) ellipse (11pt and 11pt); - \node at (12477.04pt,1231.8499pt)[]{\textbf{\Large C}}; - \node at (12491.04pt,1222.3159pt)[below right,color=black]{Fraction\_File\_Impl}; - \draw[pstyle3] (12463.04pt,1247.8499pt) -- (12637.7821pt,1247.8499pt); - \draw[pstyle5] (12470.04pt,1259.8839pt) rectangle (12476.04pt,1265.8839pt); - \node at (12482.04pt,1251.8499pt)[below right,color=black]{name}; - \draw[pstyle5] (12470.04pt,1278.9518pt) rectangle (12476.04pt,1284.9518pt); - \node at (12482.04pt,1270.9178pt)[below right,color=black]{longName}; - \draw[pstyle5] (12470.04pt,1298.0197pt) rectangle (12476.04pt,1304.0197pt); - \node at (12482.04pt,1289.9857pt)[below right,color=black]{members}; - \draw[pstyle3] (12463.04pt,1313.0536pt) -- (12637.7821pt,1313.0536pt); - \draw[pstyle6] (12473.04pt,1328.0876pt) ellipse (3pt and 3pt); - \node at (12482.04pt,1317.0536pt)[below right,color=black]{getName()}; - \draw[pstyle6] (12473.04pt,1347.1555pt) ellipse (3pt and 3pt); - \node at (12482.04pt,1336.1216pt)[below right,color=black]{getLongName()}; - \draw[pstyle6] (12473.04pt,1366.2234pt) ellipse (3pt and 3pt); - \node at (12482.04pt,1355.1895pt)[below right,color=black]{getType()}; - \draw[pstyle6] (12473.04pt,1385.2914pt) ellipse (3pt and 3pt); - \node at (12482.04pt,1374.2574pt)[below right,color=black]{addMember()}; - \draw[pstyle6] (12473.04pt,1404.3593pt) ellipse (3pt and 3pt); - \node at (12482.04pt,1393.3253pt)[below right,color=black]{updateName()}; - \draw[pstyle6] (12473.04pt,1423.4272pt) ellipse (3pt and 3pt); - \node at (12482.04pt,1412.3932pt)[below right,color=black]{toHTML()}; - \draw[pstyle1] (11934.66pt,1211.3199pt) arc (180:270:5pt) -- (11939.66pt,1206.3199pt) -- (12175.1623pt,1206.3199pt) arc (270:360:5pt) -- (12180.1623pt,1211.3199pt) -- (12180.1623pt,1439.9991pt) arc (0:90:5pt) -- (12175.1623pt,1444.9991pt) -- (11939.66pt,1444.9991pt) arc (90:180:5pt) -- (11934.66pt,1439.9991pt) -- cycle; - \draw[pstyle2] (11949.66pt,1222.3199pt) ellipse (11pt and 11pt); - \node at (11949.66pt,1222.3199pt)[]{\textbf{\Large C}}; - \node at (11963.66pt,1212.7859pt)[below right,color=black]{LegislativePeriod\_File\_Impl}; - \draw[pstyle3] (11935.66pt,1238.3199pt) -- (12179.1623pt,1238.3199pt); - \draw[pstyle5] (11942.66pt,1250.3539pt) rectangle (11948.66pt,1256.3539pt); - \node at (11954.66pt,1242.3199pt)[below right,color=black]{id}; - \draw[pstyle5] (11942.66pt,1269.4218pt) rectangle (11948.66pt,1275.4218pt); - \node at (11954.66pt,1261.3878pt)[below right,color=black]{startDate}; - \draw[pstyle5] (11942.66pt,1288.4897pt) rectangle (11948.66pt,1294.4897pt); - \node at (11954.66pt,1280.4557pt)[below right,color=black]{endDate}; - \draw[pstyle5] (11942.66pt,1307.5576pt) rectangle (11948.66pt,1313.5576pt); - \node at (11954.66pt,1299.5236pt)[below right,color=black]{constituency}; - \draw[pstyle3] (11935.66pt,1322.5916pt) -- (12179.1623pt,1322.5916pt); - \draw[pstyle6] (11945.66pt,1337.6255pt) ellipse (3pt and 3pt); - \node at (11954.66pt,1326.5916pt)[below right,color=black]{getId()}; - \draw[pstyle6] (11945.66pt,1356.6934pt) ellipse (3pt and 3pt); - \node at (11954.66pt,1345.6595pt)[below right,color=black]{getStartDate()}; - \draw[pstyle6] (11945.66pt,1375.7614pt) ellipse (3pt and 3pt); - \node at (11954.66pt,1364.7274pt)[below right,color=black]{getEndDate()}; - \draw[pstyle6] (11945.66pt,1394.8293pt) ellipse (3pt and 3pt); - \node at (11954.66pt,1383.7953pt)[below right,color=black]{getConstituency()}; - \draw[pstyle6] (11945.66pt,1413.8972pt) ellipse (3pt and 3pt); - \node at (11954.66pt,1402.8632pt)[below right,color=black]{getType()}; - \draw[pstyle6] (11945.66pt,1432.9651pt) ellipse (3pt and 3pt); - \node at (11954.66pt,1421.9312pt)[below right,color=black]{toHTML()}; - \draw[pstyle1] (11618.73pt,1163.6499pt) arc (180:270:5pt) -- (11623.73pt,1158.6499pt) -- (11895.0973pt,1158.6499pt) arc (270:360:5pt) -- (11900.0973pt,1163.6499pt) -- (11900.0973pt,1487.6687pt) arc (0:90:5pt) -- (11895.0973pt,1492.6687pt) -- (11623.73pt,1492.6687pt) arc (90:180:5pt) -- (11618.73pt,1487.6687pt) -- cycle; - \draw[pstyle2] (11633.73pt,1174.6499pt) ellipse (11pt and 11pt); - \node at (11633.73pt,1174.6499pt)[]{\textbf{\Large C}}; - \node at (11647.73pt,1165.1159pt)[below right,color=black]{MemberOfParliament\_File\_Impl}; - \draw[pstyle3] (11619.73pt,1190.6499pt) -- (11899.0973pt,1190.6499pt); - \draw[pstyle5] (11626.73pt,1202.6839pt) rectangle (11632.73pt,1208.6839pt); - \node at (11638.73pt,1194.6499pt)[below right,color=black]{id}; - \draw[pstyle5] (11626.73pt,1221.7518pt) rectangle (11632.73pt,1227.7518pt); - \node at (11638.73pt,1213.7178pt)[below right,color=black]{party}; - \draw[pstyle5] (11626.73pt,1240.8197pt) rectangle (11632.73pt,1246.8197pt); - \node at (11638.73pt,1232.7857pt)[below right,color=black]{legislativePeriods}; - \draw[pstyle5] (11626.73pt,1259.8876pt) rectangle (11632.73pt,1265.8876pt); - \node at (11638.73pt,1251.8536pt)[below right,color=black]{firstLegislativePeriodId}; - \draw[pstyle5] (11626.73pt,1278.9555pt) rectangle (11632.73pt,1284.9555pt); - \node at (11638.73pt,1270.9216pt)[below right,color=black]{lastLegislativePeriodId}; - \draw[pstyle5] (11626.73pt,1298.0234pt) rectangle (11632.73pt,1304.0234pt); - \node at (11638.73pt,1289.9895pt)[below right,color=black]{photo}; - \draw[pstyle3] (11619.73pt,1313.0574pt) -- (11899.0973pt,1313.0574pt); - \draw[pstyle6] (11629.73pt,1328.0914pt) ellipse (3pt and 3pt); - \node at (11638.73pt,1317.0574pt)[below right,color=black]{getId()}; - \draw[pstyle6] (11629.73pt,1347.1593pt) ellipse (3pt and 3pt); - \node at (11638.73pt,1336.1253pt)[below right,color=black]{getParty()}; - \draw[pstyle6] (11629.73pt,1366.2272pt) ellipse (3pt and 3pt); - \node at (11638.73pt,1355.1932pt)[below right,color=black]{getFirstLegislativePeriodId()}; - \draw[pstyle6] (11629.73pt,1385.2951pt) ellipse (3pt and 3pt); - \node at (11638.73pt,1374.2612pt)[below right,color=black]{getLastLegislativePeriodId()}; - \draw[pstyle6] (11629.73pt,1404.363pt) ellipse (3pt and 3pt); - \node at (11638.73pt,1393.3291pt)[below right,color=black]{getPhoto()}; - \draw[pstyle6] (11629.73pt,1423.4309pt) ellipse (3pt and 3pt); - \node at (11638.73pt,1412.397pt)[below right,color=black]{isCurrentMember()}; - \draw[pstyle6] (11629.73pt,1442.4989pt) ellipse (3pt and 3pt); - \node at (11638.73pt,1431.4649pt)[below right,color=black]{updateParty()}; - \draw[pstyle6] (11629.73pt,1461.5668pt) ellipse (3pt and 3pt); - \node at (11638.73pt,1450.5328pt)[below right,color=black]{getType()}; - \draw[pstyle6] (11629.73pt,1480.6347pt) ellipse (3pt and 3pt); - \node at (11638.73pt,1469.6007pt)[below right,color=black]{toHTML()}; - \draw[pstyle1] (11745.2pt,2978.6199pt) arc (180:270:5pt) -- (11750.2pt,2973.6199pt) -- (11928.6267pt,2973.6199pt) arc (270:360:5pt) -- (11933.6267pt,2978.6199pt) -- (11933.6267pt,3016.6199pt) arc (0:90:5pt) -- (11928.6267pt,3021.6199pt) -- (11750.2pt,3021.6199pt) arc (90:180:5pt) -- (11745.2pt,3016.6199pt) -- cycle; - \draw[pstyle10] (11760.2pt,2989.6199pt) ellipse (11pt and 11pt); - \node at (11760.2pt,2989.6199pt)[]{\textbf{\Large E}}; - \node at (11774.2pt,2980.0859pt)[below right,color=black]{MongoDBEntryType}; - \draw[pstyle3] (11746.2pt,3005.6199pt) -- (11932.6267pt,3005.6199pt); - \draw[pstyle3] (11746.2pt,3013.6199pt) -- (11932.6267pt,3013.6199pt); - \draw[pstyle1] (9572.36pt,2024.8299pt) arc (180:270:5pt) -- (9577.36pt,2019.8299pt) -- (9741.4569pt,2019.8299pt) arc (270:360:5pt) -- (9746.4569pt,2024.8299pt) -- (9746.4569pt,2081.8978pt) arc (0:90:5pt) -- (9741.4569pt,2086.8978pt) -- (9577.36pt,2086.8978pt) arc (90:180:5pt) -- (9572.36pt,2081.8978pt) -- cycle; - \draw[pstyle2] (9587.36pt,2035.8299pt) ellipse (11pt and 11pt); - \node at (9587.36pt,2035.8299pt)[]{\textbf{\Large C}}; - \node at (9601.36pt,2026.2959pt)[below right,color=black]{Speaker\_File\_Impl}; - \draw[pstyle3] (9573.36pt,2051.8299pt) -- (9745.4569pt,2051.8299pt); - \draw[pstyle3] (9573.36pt,2059.8299pt) -- (9745.4569pt,2059.8299pt); - \draw[pstyle6] (9583.36pt,2074.8639pt) ellipse (3pt and 3pt); - \node at (9592.36pt,2063.8299pt)[below right,color=black]{fromXmlNode()}; - \draw[pstyle1] (8992.06pt,2024.8299pt) arc (180:270:5pt) -- (8997.06pt,2019.8299pt) -- (9263.7698pt,2019.8299pt) arc (270:360:5pt) -- (9268.7698pt,2024.8299pt) -- (9268.7698pt,2081.8978pt) arc (0:90:5pt) -- (9263.7698pt,2086.8978pt) -- (8997.06pt,2086.8978pt) arc (90:180:5pt) -- (8992.06pt,2081.8978pt) -- cycle; - \draw[pstyle2] (9007.06pt,2035.8299pt) ellipse (11pt and 11pt); - \node at (9007.06pt,2035.8299pt)[]{\textbf{\Large C}}; - \node at (9021.06pt,2026.2959pt)[below right,color=black]{BiografischeAngaben\_File\_Impl}; - \draw[pstyle3] (8993.06pt,2051.8299pt) -- (9267.7698pt,2051.8299pt); - \draw[pstyle3] (8993.06pt,2059.8299pt) -- (9267.7698pt,2059.8299pt); - \draw[pstyle6] (9003.06pt,2074.8639pt) ellipse (3pt and 3pt); - \node at (9012.06pt,2063.8299pt)[below right,color=black]{fromXmlNode()}; - \draw[pstyle1] (8274.88pt,2024.8299pt) arc (180:270:5pt) -- (8279.88pt,2019.8299pt) -- (8462.948pt,2019.8299pt) arc (270:360:5pt) -- (8467.948pt,2024.8299pt) -- (8467.948pt,2081.8978pt) arc (0:90:5pt) -- (8462.948pt,2086.8978pt) -- (8279.88pt,2086.8978pt) arc (90:180:5pt) -- (8274.88pt,2081.8978pt) -- cycle; - \draw[pstyle2] (8289.88pt,2035.8299pt) ellipse (11pt and 11pt); - \node at (8289.88pt,2035.8299pt)[]{\textbf{\Large C}}; - \node at (8303.88pt,2026.2959pt)[below right,color=black]{Institution\_File\_Impl}; - \draw[pstyle3] (8275.88pt,2051.8299pt) -- (8466.948pt,2051.8299pt); - \draw[pstyle3] (8275.88pt,2059.8299pt) -- (8466.948pt,2059.8299pt); - \draw[pstyle6] (8285.88pt,2074.8639pt) ellipse (3pt and 3pt); - \node at (8294.88pt,2063.8299pt)[below right,color=black]{fromXmlNode()}; - \draw[pstyle1] (8730.18pt,2024.8299pt) arc (180:270:5pt) -- (8735.18pt,2019.8299pt) -- (8951.6463pt,2019.8299pt) arc (270:360:5pt) -- (8956.6463pt,2024.8299pt) -- (8956.6463pt,2081.8978pt) arc (0:90:5pt) -- (8951.6463pt,2086.8978pt) -- (8735.18pt,2086.8978pt) arc (90:180:5pt) -- (8730.18pt,2081.8978pt) -- cycle; - \draw[pstyle2] (8745.18pt,2035.8299pt) ellipse (11pt and 11pt); - \node at (8745.18pt,2035.8299pt)[]{\textbf{\Large C}}; - \node at (8759.18pt,2026.2959pt)[below right,color=black]{MdbDocument\_File\_Impl}; - \draw[pstyle3] (8731.18pt,2051.8299pt) -- (8955.6463pt,2051.8299pt); - \draw[pstyle3] (8731.18pt,2059.8299pt) -- (8955.6463pt,2059.8299pt); - \draw[pstyle6] (8741.18pt,2074.8639pt) ellipse (3pt and 3pt); - \node at (8750.18pt,2063.8299pt)[below right,color=black]{fromXmlNode()}; - \draw[pstyle1] (8503.23pt,2024.8299pt) arc (180:270:5pt) -- (8508.23pt,2019.8299pt) -- (8690.5839pt,2019.8299pt) arc (270:360:5pt) -- (8695.5839pt,2024.8299pt) -- (8695.5839pt,2081.8978pt) arc (0:90:5pt) -- (8690.5839pt,2086.8978pt) -- (8508.23pt,2086.8978pt) arc (90:180:5pt) -- (8503.23pt,2081.8978pt) -- cycle; - \draw[pstyle2] (8518.23pt,2035.8299pt) ellipse (11pt and 11pt); - \node at (8518.23pt,2035.8299pt)[]{\textbf{\Large C}}; - \node at (8532.23pt,2026.2959pt)[below right,color=black]{MdbName\_File\_Impl}; - \draw[pstyle3] (8504.23pt,2051.8299pt) -- (8694.5839pt,2051.8299pt); - \draw[pstyle3] (8504.23pt,2059.8299pt) -- (8694.5839pt,2059.8299pt); - \draw[pstyle6] (8514.23pt,2074.8639pt) ellipse (3pt and 3pt); - \node at (8523.23pt,2063.8299pt)[below right,color=black]{fromXmlNode()}; - \draw[pstyle1] (8092.89pt,2024.8299pt) arc (180:270:5pt) -- (8097.89pt,2019.8299pt) -- (8234.9222pt,2019.8299pt) arc (270:360:5pt) -- (8239.9222pt,2024.8299pt) -- (8239.9222pt,2081.8978pt) arc (0:90:5pt) -- (8234.9222pt,2086.8978pt) -- (8097.89pt,2086.8978pt) arc (90:180:5pt) -- (8092.89pt,2081.8978pt) -- cycle; - \draw[pstyle2] (8107.987pt,2035.8299pt) ellipse (11pt and 11pt); - \node at (8107.987pt,2035.8299pt)[]{\textbf{\Large C}}; - \node at (8122.0085pt,2026.2959pt)[below right,color=black]{Mdb\_File\_Impl}; - \draw[pstyle3] (8093.89pt,2051.8299pt) -- (8238.9222pt,2051.8299pt); - \draw[pstyle3] (8093.89pt,2059.8299pt) -- (8238.9222pt,2059.8299pt); - \draw[pstyle6] (8103.89pt,2074.8639pt) ellipse (3pt and 3pt); - \node at (8112.89pt,2063.8299pt)[below right,color=black]{fromXmlNode()}; - \draw[pstyle1] (9304.1pt,2024.8299pt) arc (180:270:5pt) -- (9309.1pt,2019.8299pt) -- (9511.7234pt,2019.8299pt) arc (270:360:5pt) -- (9516.7234pt,2024.8299pt) -- (9516.7234pt,2081.8978pt) arc (0:90:5pt) -- (9511.7234pt,2086.8978pt) -- (9309.1pt,2086.8978pt) arc (90:180:5pt) -- (9304.1pt,2081.8978pt) -- cycle; - \draw[pstyle2] (9319.1pt,2035.8299pt) ellipse (11pt and 11pt); - \node at (9319.1pt,2035.8299pt)[]{\textbf{\Large C}}; - \node at (9333.1pt,2026.2959pt)[below right,color=black]{Wahlperiode\_File\_Impl}; - \draw[pstyle3] (9305.1pt,2051.8299pt) -- (9515.7234pt,2051.8299pt); - \draw[pstyle3] (9305.1pt,2059.8299pt) -- (9515.7234pt,2059.8299pt); - \draw[pstyle6] (9315.1pt,2074.8639pt) ellipse (3pt and 3pt); - \node at (9324.1pt,2063.8299pt)[below right,color=black]{fromXmlNode()}; - \draw[pstyle1] (1609.74pt,569.2199pt) arc (180:270:5pt) -- (1614.74pt,564.2199pt) -- (1840.0716pt,564.2199pt) arc (270:360:5pt) -- (1845.0716pt,569.2199pt) -- (1845.0716pt,645.3557pt) arc (0:90:5pt) -- (1840.0716pt,650.3557pt) -- (1614.74pt,650.3557pt) arc (90:180:5pt) -- (1609.74pt,645.3557pt) -- cycle; - \draw[pstyle8] (1647.8044pt,580.2199pt) ellipse (11pt and 11pt); - \node at (1647.8044pt,580.2199pt)[]{\textbf{\Large I}}; - \node at (1666.9298pt,570.6859pt)[below right,color=black]{\textit{SpeechIndexFactory}}; - \draw[pstyle3] (1610.74pt,596.2199pt) -- (1844.0716pt,596.2199pt); - \draw[pstyle3] (1610.74pt,604.2199pt) -- (1844.0716pt,604.2199pt); - \draw[pstyle7] (1617.74pt,616.2539pt) rectangle (1623.74pt,622.2539pt); - \node at (1629.74pt,608.2199pt)[below right,color=black]{parseLegislativePeriods()}; - \draw[pstyle7] (1617.74pt,635.3218pt) rectangle (1623.74pt,641.3218pt); - \node at (1629.74pt,627.2878pt)[below right,color=black]{filterForCurrentMembers()}; - \draw[pstyle1] (1879.96pt,559.6899pt) arc (180:270:5pt) -- (1884.96pt,554.6899pt) -- (2005.8566pt,554.6899pt) arc (270:360:5pt) -- (2010.8566pt,559.6899pt) -- (2010.8566pt,654.8936pt) arc (0:90:5pt) -- (2005.8566pt,659.8936pt) -- (1884.96pt,659.8936pt) arc (90:180:5pt) -- (1879.96pt,654.8936pt) -- cycle; - \draw[pstyle2] (1894.96pt,570.6899pt) ellipse (11pt and 11pt); - \node at (1894.96pt,570.6899pt)[]{\textbf{\Large C}}; - \node at (1908.96pt,561.1559pt)[below right,color=black]{SpeechIndex}; - \draw[pstyle3] (1880.96pt,586.6899pt) -- (2009.8566pt,586.6899pt); - \draw[pstyle5] (1887.96pt,598.7239pt) rectangle (1893.96pt,604.7239pt); - \node at (1899.96pt,590.6899pt)[below right,color=black]{sessions}; - \draw[pstyle5] (1887.96pt,617.7918pt) rectangle (1893.96pt,623.7918pt); - \node at (1899.96pt,609.7578pt)[below right,color=black]{speeches}; - \draw[pstyle5] (1887.96pt,636.8597pt) rectangle (1893.96pt,642.8597pt); - \node at (1899.96pt,628.8257pt)[below right,color=black]{agendaItems}; - \draw[pstyle3] (1880.96pt,651.8936pt) -- (2009.8566pt,651.8936pt); - \draw[pstyle1] (4855.74pt,492.9499pt) arc (180:270:5pt) -- (4860.74pt,487.9499pt) -- (5086.0716pt,487.9499pt) arc (270:360:5pt) -- (5091.0716pt,492.9499pt) -- (5091.0716pt,721.6291pt) arc (0:90:5pt) -- (5086.0716pt,726.6291pt) -- (4860.74pt,726.6291pt) arc (90:180:5pt) -- (4855.74pt,721.6291pt) -- cycle; - \draw[pstyle2] (4875.0434pt,503.9499pt) ellipse (11pt and 11pt); - \node at (4875.0434pt,503.9499pt)[]{\textbf{\Large C}}; - \node at (4889.9997pt,494.4159pt)[below right,color=black]{SpeechIndexFactoryImpl}; - \draw[pstyle3] (4856.74pt,519.9499pt) -- (5090.0716pt,519.9499pt); - \draw[pstyle5] (4863.74pt,531.9839pt) rectangle (4869.74pt,537.9839pt); - \node at (4875.74pt,523.9499pt)[below right,color=black]{speechParser}; - \draw[pstyle5] (4863.74pt,551.0518pt) rectangle (4869.74pt,557.0518pt); - \node at (4875.74pt,543.0178pt)[below right,color=black]{sessions}; - \draw[pstyle5] (4863.74pt,570.1197pt) rectangle (4869.74pt,576.1197pt); - \node at (4875.74pt,562.0857pt)[below right,color=black]{agendaItems}; - \draw[pstyle5] (4863.74pt,589.1876pt) rectangle (4869.74pt,595.1876pt); - \node at (4875.74pt,581.1536pt)[below right,color=black]{speeches}; - \draw[pstyle5] (4863.74pt,608.2555pt) rectangle (4869.74pt,614.2555pt); - \node at (4875.74pt,600.2216pt)[below right,color=black]{members}; - \draw[pstyle3] (4856.74pt,623.2895pt) -- (5090.0716pt,623.2895pt); - \draw[pstyle6] (4866.74pt,638.3234pt) ellipse (3pt and 3pt); - \node at (4875.74pt,627.2895pt)[below right,color=black]{parseLegislativePeriods()}; - \draw[pstyle6] (4866.74pt,657.3914pt) ellipse (3pt and 3pt); - \node at (4875.74pt,646.3574pt)[below right,color=black]{builder()}; - \draw[pstyle6] (4866.74pt,676.4593pt) ellipse (3pt and 3pt); - \node at (4875.74pt,665.4253pt)[below right,color=black]{parseSessions()}; - \draw[pstyle6] (4866.74pt,695.5272pt) ellipse (3pt and 3pt); - \node at (4875.74pt,684.4932pt)[below right,color=black]{build()}; - \draw[pstyle6] (4866.74pt,714.5951pt) ellipse (3pt and 3pt); - \node at (4875.74pt,703.5612pt)[below right,color=black]{filterForCurrentMembers()}; - \draw[pstyle1] (2046.35pt,502.4799pt) arc (180:270:5pt) -- (2051.35pt,497.4799pt) -- (2291.4658pt,497.4799pt) arc (270:360:5pt) -- (2296.4658pt,502.4799pt) -- (2296.4658pt,712.0912pt) arc (0:90:5pt) -- (2291.4658pt,717.0912pt) -- (2051.35pt,717.0912pt) arc (90:180:5pt) -- (2046.35pt,712.0912pt) -- cycle; - \draw[pstyle2] (2087.058pt,513.4799pt) ellipse (11pt and 11pt); - \node at (2087.058pt,513.4799pt)[]{\textbf{\Large C}}; - \node at (2106.7709pt,503.9459pt)[below right,color=black]{MongoObjectFactory}; - \draw[pstyle3] (2047.35pt,529.4799pt) -- (2295.4658pt,529.4799pt); - \draw[pstyle5] (2054.35pt,541.5139pt) rectangle (2060.35pt,547.5139pt); - \node at (2066.35pt,533.4799pt)[below right,color=black]{factory}; - \draw[pstyle3] (2047.35pt,556.5478pt) -- (2295.4658pt,556.5478pt); - \draw[pstyle6] (2057.35pt,571.5818pt) ellipse (3pt and 3pt); - \node at (2066.35pt,560.5478pt)[below right,color=black]{getFactory()}; - \draw[pstyle6] (2057.35pt,590.6497pt) ellipse (3pt and 3pt); - \node at (2066.35pt,579.6157pt)[below right,color=black]{createBiografischeAngaben()}; - \draw[pstyle6] (2057.35pt,609.7176pt) ellipse (3pt and 3pt); - \node at (2066.35pt,598.6836pt)[below right,color=black]{createInstitution()}; - \draw[pstyle6] (2057.35pt,628.7855pt) ellipse (3pt and 3pt); - \node at (2066.35pt,617.7516pt)[below right,color=black]{createMdb()}; - \draw[pstyle6] (2057.35pt,647.8534pt) ellipse (3pt and 3pt); - \node at (2066.35pt,636.8195pt)[below right,color=black]{createMdbName()}; - \draw[pstyle6] (2057.35pt,666.9214pt) ellipse (3pt and 3pt); - \node at (2066.35pt,655.8874pt)[below right,color=black]{createWahlperiode()}; - \draw[pstyle6] (2057.35pt,685.9893pt) ellipse (3pt and 3pt); - \node at (2066.35pt,674.9553pt)[below right,color=black]{createSpeaker()}; - \draw[pstyle6] (2057.35pt,705.0572pt) ellipse (3pt and 3pt); - \node at (2066.35pt,694.0232pt)[below right,color=black]{createMembership()}; - \draw[pstyle1] (1609.18pt,2015.2999pt) arc (180:270:5pt) -- (1614.18pt,2010.2999pt) -- (1772.6456pt,2010.2999pt) arc (270:360:5pt) -- (1777.6456pt,2015.2999pt) -- (1777.6456pt,2091.4357pt) arc (0:90:5pt) -- (1772.6456pt,2096.4357pt) -- (1614.18pt,2096.4357pt) arc (90:180:5pt) -- (1609.18pt,2091.4357pt) -- cycle; - \draw[pstyle8] (1624.18pt,2026.2999pt) ellipse (11pt and 11pt); - \node at (1624.18pt,2026.2999pt)[]{\textbf{\Large I}}; - \node at (1638.18pt,2016.7659pt)[below right,color=black]{\textit{MongoOperations}}; - \draw[pstyle3] (1610.18pt,2042.2999pt) -- (1776.6456pt,2042.2999pt); - \draw[pstyle3] (1610.18pt,2050.2999pt) -- (1776.6456pt,2050.2999pt); - \draw[pstyle6] (1620.18pt,2065.3339pt) ellipse (3pt and 3pt); - \node at (1629.18pt,2054.2999pt)[below right,color=black]{createEntity()}; - \draw[pstyle6] (1620.18pt,2084.4018pt) ellipse (3pt and 3pt); - \node at (1629.18pt,2073.3678pt)[below right,color=black]{createList()}; - \draw[pstyle1] (4719.81pt,1624.3999pt) arc (180:270:5pt) -- (4724.81pt,1619.3999pt) -- (5086.0067pt,1619.3999pt) arc (270:360:5pt) -- (5091.0067pt,1624.3999pt) -- (5091.0067pt,2482.3203pt) arc (0:90:5pt) -- (5086.0067pt,2487.3203pt) -- (4724.81pt,2487.3203pt) arc (90:180:5pt) -- (4719.81pt,2482.3203pt) -- cycle; - \draw[pstyle2] (4831.4812pt,1635.3999pt) ellipse (11pt and 11pt); - \node at (4831.4812pt,1635.3999pt)[]{\textbf{\Large C}}; - \node at (4851.9812pt,1625.8659pt)[below right,color=black]{MongoDBHandler}; - \draw[pstyle3] (4720.81pt,1651.3999pt) -- (5090.0067pt,1651.3999pt); - \draw[pstyle4] (4730.81pt,1666.4339pt) ellipse (3pt and 3pt); - \node at (4739.81pt,1655.3999pt)[below right,color=black]{propertiesFileName}; - \draw[pstyle4] (4730.81pt,1685.5018pt) ellipse (3pt and 3pt); - \node at (4739.81pt,1674.4678pt)[below right,color=black]{DEFAULT\_ID\_FIELD\_NAME}; - \draw[pstyle5] (4727.81pt,1701.5697pt) rectangle (4733.81pt,1707.5697pt); - \node at (4739.81pt,1693.5357pt)[below right,color=black]{mongoClient}; - \draw[pstyle5] (4727.81pt,1720.6376pt) rectangle (4733.81pt,1726.6376pt); - \node at (4739.81pt,1712.6036pt)[below right,color=black]{database}; - \draw[pstyle5] (4727.81pt,1739.7055pt) rectangle (4733.81pt,1745.7055pt); - \node at (4739.81pt,1731.6716pt)[below right,color=black]{mongoDatabase}; - \draw[pstyle5] (4727.81pt,1758.7734pt) rectangle (4733.81pt,1764.7734pt); - \node at (4739.81pt,1750.7395pt)[below right,color=black]{mongodb://localhost:27017}; - \draw[pstyle5] (4727.81pt,1777.8414pt) rectangle (4733.81pt,1783.8414pt); - \node at (4739.81pt,1769.8074pt)[below right,color=black]{remoteServer}; - \draw[pstyle5] (4727.81pt,1796.9093pt) rectangle (4733.81pt,1802.9093pt); - \node at (4739.81pt,1788.8753pt)[below right,color=black]{user}; - \draw[pstyle5] (4727.81pt,1815.9772pt) rectangle (4733.81pt,1821.9772pt); - \node at (4739.81pt,1807.9432pt)[below right,color=black]{password}; - \draw[pstyle5] (4727.81pt,1835.0451pt) rectangle (4733.81pt,1841.0451pt); - \node at (4739.81pt,1827.0112pt)[below right,color=black]{port}; - \draw[pstyle5] (4727.81pt,1854.113pt) rectangle (4733.81pt,1860.113pt); - \node at (4739.81pt,1846.0791pt)[below right,color=black]{collection}; - \draw[pstyle5] (4727.81pt,1873.1809pt) rectangle (4733.81pt,1879.1809pt); - \node at (4739.81pt,1865.147pt)[below right,color=black]{databaseName}; - \draw[pstyle5] (4727.81pt,1892.2489pt) rectangle (4733.81pt,1898.2489pt); - \node at (4739.81pt,1884.2149pt)[below right,color=black]{speakerCollection}; - \draw[pstyle5] (4727.81pt,1911.3168pt) rectangle (4733.81pt,1917.3168pt); - \node at (4739.81pt,1903.2828pt)[below right,color=black]{speechesCollection}; - \draw[pstyle5] (4727.81pt,1930.3847pt) rectangle (4733.81pt,1936.3847pt); - \node at (4739.81pt,1922.3507pt)[below right,color=black]{sessionsCollection}; - \draw[pstyle5] (4727.81pt,1949.4526pt) rectangle (4733.81pt,1955.4526pt); - \node at (4739.81pt,1941.4187pt)[below right,color=black]{agendaItemsCollection}; - \draw[pstyle5] (4727.81pt,1968.5205pt) rectangle (4733.81pt,1974.5205pt); - \node at (4739.81pt,1960.4866pt)[below right,color=black]{memberPhotoCollection}; - \draw[pstyle5] (4727.81pt,1987.5884pt) rectangle (4733.81pt,1993.5884pt); - \node at (4739.81pt,1979.5545pt)[below right,color=black]{historyCollection}; - \draw[pstyle3] (4720.81pt,2002.6224pt) -- (5090.0067pt,2002.6224pt); - \draw[pstyle6] (4730.81pt,2017.6564pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2006.6224pt)[below right,color=black]{getDatabase()}; - \draw[pstyle6] (4730.81pt,2036.7243pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2025.6903pt)[below right,color=black]{collectionExists()}; - \draw[pstyle6] (4730.81pt,2055.7922pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2044.7582pt)[below right,color=black]{createCollectionIfNotExist()}; - \draw[pstyle6] (4730.81pt,2074.8601pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2063.8262pt)[below right,color=black]{createCollection()}; - \draw[pstyle6] (4730.81pt,2093.928pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2082.8941pt)[below right,color=black]{createIndicesForSpeakerCollection()}; - \draw[pstyle6] (4730.81pt,2112.9959pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2101.962pt)[below right,color=black]{createIndicesForSpeechCollection()}; - \draw[pstyle6] (4730.81pt,2132.0639pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2121.0299pt)[below right,color=black]{createOrTrancateCollection()}; - \draw[pstyle6] (4730.81pt,2151.1318pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2140.0978pt)[below right,color=black]{getFieldAsDouble()}; - \draw[pstyle6] (4730.81pt,2170.1997pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2159.1657pt)[below right,color=black]{insertSession()}; - \draw[pstyle6] (4730.81pt,2189.2676pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2178.2337pt)[below right,color=black]{insertSessions()}; - \draw[pstyle6] (4730.81pt,2208.3355pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2197.3016pt)[below right,color=black]{insertAgendaItems()}; - \draw[pstyle6] (4730.81pt,2227.4034pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2216.3695pt)[below right,color=black]{insertSpeeches()}; - \draw[pstyle6] (4730.81pt,2246.4714pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2235.4374pt)[below right,color=black]{updateXmiData()}; - \draw[pstyle6] (4730.81pt,2265.5393pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2254.5053pt)[below right,color=black]{deleteSpeechRelatedDocuments()}; - \draw[pstyle6] (4730.81pt,2284.6072pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2273.5732pt)[below right,color=black]{bulkWriteNlpData()}; - \draw[pstyle6] (4730.81pt,2303.6751pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2292.6412pt)[below right,color=black]{checkAnalysisResultsField()}; - \draw[pstyle6] (4730.81pt,2322.743pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2311.7091pt)[below right,color=black]{loadMemberImageFromFileById()}; - \draw[pstyle6] (4730.81pt,2341.8109pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2330.777pt)[below right,color=black]{loadMemberImageFromFileByName()}; - \draw[pstyle6] (4730.81pt,2360.8789pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2349.8449pt)[below right,color=black]{uploadMemberPhoto()}; - \draw[pstyle6] (4730.81pt,2379.9468pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2368.9128pt)[below right,color=black]{uploadMemberPhotos()}; - \draw[pstyle6] (4730.81pt,2399.0147pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2387.9807pt)[below right,color=black]{uploadMemberPhotosFromResourceFolder()}; - \draw[pstyle6] (4730.81pt,2418.0826pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2407.0487pt)[below right,color=black]{sessionExists()}; - \draw[pstyle6] (4730.81pt,2437.1505pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2426.1166pt)[below right,color=black]{getMemberPhoto()}; - \draw[pstyle6] (4730.81pt,2456.2184pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2445.1845pt)[below right,color=black]{close()}; - \draw[pstyle6] (4730.81pt,2475.2864pt) ellipse (3pt and 3pt); - \node at (4739.81pt,2464.2524pt)[below right,color=black]{getSpeech()}; - \draw[pstyle1] (2331.85pt,273.6699pt) arc (180:270:5pt) -- (2336.85pt,268.6699pt) -- (2675.9759pt,268.6699pt) arc (270:360:5pt) -- (2680.9759pt,273.6699pt) -- (2680.9759pt,940.9112pt) arc (0:90:5pt) -- (2675.9759pt,945.9112pt) -- (2336.85pt,945.9112pt) arc (90:180:5pt) -- (2331.85pt,940.9112pt) -- cycle; - \draw[pstyle2] (2444.4381pt,284.6699pt) ellipse (11pt and 11pt); - \node at (2444.4381pt,284.6699pt)[]{\textbf{\Large C}}; - \node at (2464.9381pt,275.1359pt)[below right,color=black]{MongoPprUtils}; - \draw[pstyle3] (2332.85pt,300.6699pt) -- (2679.9759pt,300.6699pt); - \draw[pstyle4] (2342.85pt,315.7039pt) ellipse (3pt and 3pt); - \node at (2351.85pt,304.6699pt)[below right,color=black]{SPEAKER\_COLLECTION\_NAME}; - \draw[pstyle4] (2342.85pt,334.7718pt) ellipse (3pt and 3pt); - \node at (2351.85pt,323.7378pt)[below right,color=black]{SPEECH\_COLLECTION\_NAME}; - \draw[pstyle4] (2342.85pt,353.8397pt) ellipse (3pt and 3pt); - \node at (2351.85pt,342.8057pt)[below right,color=black]{SESSION\_COLLECTION\_NAME}; - \draw[pstyle4] (2342.85pt,372.9076pt) ellipse (3pt and 3pt); - \node at (2351.85pt,361.8736pt)[below right,color=black]{AGENDA\_ITEMS\_COLLECTION\_NAME}; - \draw[pstyle4] (2342.85pt,391.9755pt) ellipse (3pt and 3pt); - \node at (2351.85pt,380.9416pt)[below right,color=black]{HISTORY\_COLLECTION\_NAME}; - \draw[pstyle4] (2342.85pt,411.0434pt) ellipse (3pt and 3pt); - \node at (2351.85pt,400.0095pt)[below right,color=black]{PICTURES\_COLLECTION\_NAME}; - \draw[pstyle4] (2342.85pt,430.1114pt) ellipse (3pt and 3pt); - \node at (2351.85pt,419.0774pt)[below right,color=black]{COMMENT\_COLLECTION\_NAME}; - \draw[pstyle4] (2342.85pt,449.1793pt) ellipse (3pt and 3pt); - \node at (2351.85pt,438.1453pt)[below right,color=black]{METADATA\_COLLECTION\_NAME}; - \draw[pstyle5] (2339.85pt,465.2472pt) rectangle (2345.85pt,471.2472pt); - \node at (2351.85pt,457.2132pt)[below right,color=black]{speakerCollection}; - \draw[pstyle5] (2339.85pt,484.3151pt) rectangle (2345.85pt,490.3151pt); - \node at (2351.85pt,476.2812pt)[below right,color=black]{speechCollection}; - \draw[pstyle5] (2339.85pt,503.383pt) rectangle (2345.85pt,509.383pt); - \node at (2351.85pt,495.3491pt)[below right,color=black]{sessionCollection}; - \draw[pstyle5] (2339.85pt,522.4509pt) rectangle (2345.85pt,528.4509pt); - \node at (2351.85pt,514.417pt)[below right,color=black]{agendaItemsCollection}; - \draw[pstyle5] (2339.85pt,541.5189pt) rectangle (2345.85pt,547.5189pt); - \node at (2351.85pt,533.4849pt)[below right,color=black]{picturesCollection}; - \draw[pstyle5] (2339.85pt,560.5868pt) rectangle (2345.85pt,566.5868pt); - \node at (2351.85pt,552.5528pt)[below right,color=black]{commentCollection}; - \draw[pstyle5] (2339.85pt,579.6547pt) rectangle (2345.85pt,585.6547pt); - \node at (2351.85pt,571.6207pt)[below right,color=black]{metadataCollection}; - \draw[pstyle3] (2332.85pt,594.6887pt) -- (2679.9759pt,594.6887pt); - \draw[pstyle6] (2342.85pt,609.7226pt) ellipse (3pt and 3pt); - \node at (2351.85pt,598.6887pt)[below right,color=black]{createIndexForSpeakerCollection()}; - \draw[pstyle6] (2342.85pt,628.7905pt) ellipse (3pt and 3pt); - \node at (2351.85pt,617.7566pt)[below right,color=black]{createIndexForSpeechCollection()}; - \draw[pstyle6] (2342.85pt,647.8584pt) ellipse (3pt and 3pt); - \node at (2351.85pt,636.8245pt)[below right,color=black]{truncateSpeakerCollection()}; - \draw[pstyle7] (2339.85pt,663.9264pt) rectangle (2345.85pt,669.9264pt); - \node at (2351.85pt,655.8924pt)[below right,color=black]{readParlamentarierFromSpeaker()}; - \draw[pstyle6] (2342.85pt,685.9943pt) ellipse (3pt and 3pt); - \node at (2351.85pt,674.9603pt)[below right,color=black]{getParlamentarierPictureByID()}; - \draw[pstyle6] (2342.85pt,705.0622pt) ellipse (3pt and 3pt); - \node at (2351.85pt,694.0282pt)[below right,color=black]{getParlamentarierDetailsByID()}; - \draw[pstyle6] (2342.85pt,724.1301pt) ellipse (3pt and 3pt); - \node at (2351.85pt,713.0962pt)[below right,color=black]{getSpeakerById()}; - \draw[pstyle7] (2339.85pt,740.198pt) rectangle (2345.85pt,746.198pt); - \node at (2351.85pt,732.1641pt)[below right,color=black]{readParlamentarierDetailsFromSpeaker()}; - \draw[pstyle7] (2339.85pt,759.2659pt) rectangle (2345.85pt,765.2659pt); - \node at (2351.85pt,751.232pt)[below right,color=black]{getMembership()}; - \draw[pstyle6] (2342.85pt,781.3339pt) ellipse (3pt and 3pt); - \node at (2351.85pt,770.2999pt)[below right,color=black]{countSpeechesOfSpeaker()}; - \draw[pstyle6] (2342.85pt,800.4018pt) ellipse (3pt and 3pt); - \node at (2351.85pt,789.3678pt)[below right,color=black]{augmentSpeechMetaDataFromSession()}; - \draw[pstyle6] (2342.85pt,819.4697pt) ellipse (3pt and 3pt); - \node at (2351.85pt,808.4357pt)[below right,color=black]{getSessionDateTime()}; - \draw[pstyle6] (2342.85pt,838.5376pt) ellipse (3pt and 3pt); - \node at (2351.85pt,827.5037pt)[below right,color=black]{getAgendaTitle()}; - \draw[pstyle6] (2342.85pt,857.6055pt) ellipse (3pt and 3pt); - \node at (2351.85pt,846.5716pt)[below right,color=black]{getHtmlSpeechByKey()}; - \draw[pstyle6] (2342.85pt,876.6734pt) ellipse (3pt and 3pt); - \node at (2351.85pt,865.6395pt)[below right,color=black]{getSpeechByKey()}; - \draw[pstyle6] (2342.85pt,895.7414pt) ellipse (3pt and 3pt); - \node at (2351.85pt,884.7074pt)[below right,color=black]{getMemberPhoto()}; - \draw[pstyle6] (2342.85pt,914.8093pt) ellipse (3pt and 3pt); - \node at (2351.85pt,903.7753pt)[below right,color=black]{rebuildMetadata()}; - \draw[pstyle6] (2342.85pt,933.8772pt) ellipse (3pt and 3pt); - \node at (2351.85pt,922.8432pt)[below right,color=black]{enrichSpeechDocuments()}; - \draw[pstyle1] (4159.98pt,1306.6599pt) arc (180:270:5pt) -- (4164.98pt,1301.6599pt) -- (4407.8339pt,1301.6599pt) arc (270:360:5pt) -- (4412.8339pt,1306.6599pt) -- (4412.8339pt,1344.6599pt) arc (0:90:5pt) -- (4407.8339pt,1349.6599pt) -- (4164.98pt,1349.6599pt) arc (90:180:5pt) -- (4159.98pt,1344.6599pt) -- cycle; - \draw[pstyle2] (4174.98pt,1317.6599pt) ellipse (11pt and 11pt); - \node at (4174.98pt,1317.6599pt)[]{\textbf{\Large C}}; - \node at (4188.98pt,1308.1259pt)[below right,color=black]{AgendaItem\_MongoDB\_Impl}; - \draw[pstyle3] (4160.98pt,1333.6599pt) -- (4411.8339pt,1333.6599pt); - \draw[pstyle3] (4160.98pt,1341.6599pt) -- (4411.8339pt,1341.6599pt); - \draw[pstyle1] (4447.45pt,1306.6599pt) arc (180:270:5pt) -- (4452.45pt,1301.6599pt) -- (4658.3678pt,1301.6599pt) arc (270:360:5pt) -- (4663.3678pt,1306.6599pt) -- (4663.3678pt,1344.6599pt) arc (0:90:5pt) -- (4658.3678pt,1349.6599pt) -- (4452.45pt,1349.6599pt) arc (90:180:5pt) -- (4447.45pt,1344.6599pt) -- cycle; - \draw[pstyle2] (4462.45pt,1317.6599pt) ellipse (11pt and 11pt); - \node at (4462.45pt,1317.6599pt)[]{\textbf{\Large C}}; - \node at (4476.45pt,1308.1259pt)[below right,color=black]{Session\_MongoDB\_Impl}; - \draw[pstyle3] (4448.45pt,1333.6599pt) -- (4662.3678pt,1333.6599pt); - \draw[pstyle3] (4448.45pt,1341.6599pt) -- (4662.3678pt,1341.6599pt); - \draw[pstyle1] (3911.81pt,1268.5199pt) arc (180:270:5pt) -- (3916.81pt,1263.5199pt) -- (4120.0014pt,1263.5199pt) arc (270:360:5pt) -- (4125.0014pt,1268.5199pt) -- (4125.0014pt,1382.7916pt) arc (0:90:5pt) -- (4120.0014pt,1387.7916pt) -- (3916.81pt,1387.7916pt) arc (90:180:5pt) -- (3911.81pt,1382.7916pt) -- cycle; - \draw[pstyle2] (3926.81pt,1279.5199pt) ellipse (11pt and 11pt); - \node at (3926.81pt,1279.5199pt)[]{\textbf{\Large C}}; - \node at (3940.81pt,1269.9859pt)[below right,color=black]{Speech\_MongoDB\_Impl}; - \draw[pstyle3] (3912.81pt,1295.5199pt) -- (4124.0014pt,1295.5199pt); - \draw[pstyle3] (3912.81pt,1303.5199pt) -- (4124.0014pt,1303.5199pt); - \draw[pstyle6] (3922.81pt,1318.5539pt) ellipse (3pt and 3pt); - \node at (3931.81pt,1307.5199pt)[below right,color=black]{getFullText()}; - \draw[pstyle6] (3922.81pt,1337.6218pt) ellipse (3pt and 3pt); - \node at (3931.81pt,1326.5878pt)[below right,color=black]{toCas()}; - \draw[pstyle6] (3922.81pt,1356.6897pt) ellipse (3pt and 3pt); - \node at (3931.81pt,1345.6557pt)[below right,color=black]{toTeX()}; - \draw[pstyle6] (3922.81pt,1375.7576pt) ellipse (3pt and 3pt); - \node at (3931.81pt,1364.7236pt)[below right,color=black]{toXML()}; - \draw[pstyle1] (3067.74pt,1258.9899pt) arc (180:270:5pt) -- (3072.74pt,1253.9899pt) -- (3322.0898pt,1253.9899pt) arc (270:360:5pt) -- (3327.0898pt,1258.9899pt) -- (3327.0898pt,1392.3295pt) arc (0:90:5pt) -- (3322.0898pt,1397.3295pt) -- (3072.74pt,1397.3295pt) arc (90:180:5pt) -- (3067.74pt,1392.3295pt) -- cycle; - \draw[pstyle2] (3099.9183pt,1269.9899pt) ellipse (11pt and 11pt); - \node at (3099.9183pt,1269.9899pt)[]{\textbf{\Large C}}; - \node at (3117.7357pt,1260.4559pt)[below right,color=black]{Speaker\_MongoDB\_Impl}; - \draw[pstyle3] (3068.74pt,1285.9899pt) -- (3326.0898pt,1285.9899pt); - \draw[pstyle3] (3068.74pt,1293.9899pt) -- (3326.0898pt,1293.9899pt); - \draw[pstyle6] (3078.74pt,1309.0239pt) ellipse (3pt and 3pt); - \node at (3087.74pt,1297.9899pt)[below right,color=black]{createSpeakerMongoDBImpl()}; - \draw[pstyle6] (3078.74pt,1328.0918pt) ellipse (3pt and 3pt); - \node at (3087.74pt,1317.0578pt)[below right,color=black]{parseTimestampSafely()}; - \draw[pstyle6] (3078.74pt,1347.1597pt) ellipse (3pt and 3pt); - \node at (3087.74pt,1336.1257pt)[below right,color=black]{createEntity()}; - \draw[pstyle6] (3078.74pt,1366.2276pt) ellipse (3pt and 3pt); - \node at (3087.74pt,1355.1936pt)[below right,color=black]{toTeX()}; - \draw[pstyle6] (3078.74pt,1385.2955pt) ellipse (3pt and 3pt); - \node at (3087.74pt,1374.2616pt)[below right,color=black]{toXML()}; - \draw[pstyle1] (2389.58pt,1297.1199pt) arc (180:270:5pt) -- (2394.58pt,1292.1199pt) -- (2736.2493pt,1292.1199pt) arc (270:360:5pt) -- (2741.2493pt,1297.1199pt) -- (2741.2493pt,1354.1878pt) arc (0:90:5pt) -- (2736.2493pt,1359.1878pt) -- (2394.58pt,1359.1878pt) arc (90:180:5pt) -- (2389.58pt,1354.1878pt) -- cycle; - \draw[pstyle2] (2404.58pt,1308.1199pt) ellipse (11pt and 11pt); - \node at (2404.58pt,1308.1199pt)[]{\textbf{\Large C}}; - \node at (2418.58pt,1298.5859pt)[below right,color=black]{BiographicalInformation\_MongoDB\_Impl}; - \draw[pstyle3] (2390.58pt,1324.1199pt) -- (2740.2493pt,1324.1199pt); - \draw[pstyle3] (2390.58pt,1332.1199pt) -- (2740.2493pt,1332.1199pt); - \draw[pstyle6] (2400.58pt,1347.1539pt) ellipse (3pt and 3pt); - \node at (2409.58pt,1336.1199pt)[below right,color=black]{createEntity()}; - \draw[pstyle1] (3362.34pt,1297.1199pt) arc (180:270:5pt) -- (3367.34pt,1292.1199pt) -- (3597.487pt,1292.1199pt) arc (270:360:5pt) -- (3602.487pt,1297.1199pt) -- (3602.487pt,1354.1878pt) arc (0:90:5pt) -- (3597.487pt,1359.1878pt) -- (3367.34pt,1359.1878pt) arc (90:180:5pt) -- (3362.34pt,1354.1878pt) -- cycle; - \draw[pstyle2] (3377.34pt,1308.1199pt) ellipse (11pt and 11pt); - \node at (3377.34pt,1308.1199pt)[]{\textbf{\Large C}}; - \node at (3391.34pt,1298.5859pt)[below right,color=black]{Institution\_MongoDB\_Impl}; - \draw[pstyle3] (3363.34pt,1324.1199pt) -- (3601.487pt,1324.1199pt); - \draw[pstyle3] (3363.34pt,1332.1199pt) -- (3601.487pt,1332.1199pt); - \draw[pstyle6] (3373.34pt,1347.1539pt) ellipse (3pt and 3pt); - \node at (3382.34pt,1336.1199pt)[below right,color=black]{createEntity()}; - \draw[pstyle1] (1833.12pt,1297.1199pt) arc (180:270:5pt) -- (1838.12pt,1292.1199pt) -- (2120.7013pt,1292.1199pt) arc (270:360:5pt) -- (2125.7013pt,1297.1199pt) -- (2125.7013pt,1354.1878pt) arc (0:90:5pt) -- (2120.7013pt,1359.1878pt) -- (1838.12pt,1359.1878pt) arc (90:180:5pt) -- (1833.12pt,1354.1878pt) -- cycle; - \draw[pstyle2] (1848.12pt,1308.1199pt) ellipse (11pt and 11pt); - \node at (1848.12pt,1308.1199pt)[]{\textbf{\Large C}}; - \node at (1862.12pt,1298.5859pt)[below right,color=black]{LegislativePeriod\_MongoDB\_Impl}; - \draw[pstyle3] (1834.12pt,1324.1199pt) -- (2124.7013pt,1324.1199pt); - \draw[pstyle3] (1834.12pt,1332.1199pt) -- (2124.7013pt,1332.1199pt); - \draw[pstyle6] (1844.12pt,1347.1539pt) ellipse (3pt and 3pt); - \node at (1853.12pt,1336.1199pt)[below right,color=black]{createEntity()}; - \draw[pstyle1] (3637.69pt,1297.1199pt) arc (180:270:5pt) -- (3642.69pt,1292.1199pt) -- (3872.1229pt,1292.1199pt) arc (270:360:5pt) -- (3877.1229pt,1297.1199pt) -- (3877.1229pt,1354.1878pt) arc (0:90:5pt) -- (3872.1229pt,1359.1878pt) -- (3642.69pt,1359.1878pt) arc (90:180:5pt) -- (3637.69pt,1354.1878pt) -- cycle; - \draw[pstyle2] (3652.69pt,1308.1199pt) ellipse (11pt and 11pt); - \node at (3652.69pt,1308.1199pt)[]{\textbf{\Large C}}; - \node at (3666.69pt,1298.5859pt)[below right,color=black]{MdbName\_MongoDB\_Impl}; - \draw[pstyle3] (3638.69pt,1324.1199pt) -- (3876.1229pt,1324.1199pt); - \draw[pstyle3] (3638.69pt,1332.1199pt) -- (3876.1229pt,1332.1199pt); - \draw[pstyle6] (3648.69pt,1347.1539pt) ellipse (3pt and 3pt); - \node at (3657.69pt,1336.1199pt)[below right,color=black]{createEntity()}; - \draw[pstyle1] (2160.46pt,1297.1199pt) arc (180:270:5pt) -- (2165.46pt,1292.1199pt) -- (2349.3557pt,1292.1199pt) arc (270:360:5pt) -- (2354.3557pt,1297.1199pt) -- (2354.3557pt,1354.1878pt) arc (0:90:5pt) -- (2349.3557pt,1359.1878pt) -- (2165.46pt,1359.1878pt) arc (90:180:5pt) -- (2160.46pt,1354.1878pt) -- cycle; - \draw[pstyle2] (2175.46pt,1308.1199pt) ellipse (11pt and 11pt); - \node at (2175.46pt,1308.1199pt)[]{\textbf{\Large C}}; - \node at (2189.46pt,1298.5859pt)[below right,color=black]{Mdb\_MongoDB\_Impl}; - \draw[pstyle3] (2161.46pt,1324.1199pt) -- (2353.3557pt,1324.1199pt); - \draw[pstyle3] (2161.46pt,1332.1199pt) -- (2353.3557pt,1332.1199pt); - \draw[pstyle6] (2171.46pt,1347.1539pt) ellipse (3pt and 3pt); - \node at (2180.46pt,1336.1199pt)[below right,color=black]{createEntity()}; - \draw[pstyle1] (2775.88pt,1297.1199pt) arc (180:270:5pt) -- (2780.88pt,1292.1199pt) -- (3027.9371pt,1292.1199pt) arc (270:360:5pt) -- (3032.9371pt,1297.1199pt) -- (3032.9371pt,1354.1878pt) arc (0:90:5pt) -- (3027.9371pt,1359.1878pt) -- (2780.88pt,1359.1878pt) arc (90:180:5pt) -- (2775.88pt,1354.1878pt) -- cycle; - \draw[pstyle2] (2790.88pt,1308.1199pt) ellipse (11pt and 11pt); - \node at (2790.88pt,1308.1199pt)[]{\textbf{\Large C}}; - \node at (2804.88pt,1298.5859pt)[below right,color=black]{Membership\_MongoDB\_Impl}; - \draw[pstyle3] (2776.88pt,1324.1199pt) -- (3031.9371pt,1324.1199pt); - \draw[pstyle3] (2776.88pt,1332.1199pt) -- (3031.9371pt,1332.1199pt); - \draw[pstyle6] (2786.88pt,1347.1539pt) ellipse (3pt and 3pt); - \node at (2795.88pt,1336.1199pt)[below right,color=black]{createEntity()}; - \draw[pstyle1] (4149.61pt,2015.2999pt) arc (180:270:5pt) -- (4154.61pt,2010.2999pt) -- (4378.2169pt,2010.2999pt) arc (270:360:5pt) -- (4383.2169pt,2015.2999pt) -- (4383.2169pt,2091.4357pt) arc (0:90:5pt) -- (4378.2169pt,2096.4357pt) -- (4154.61pt,2096.4357pt) arc (90:180:5pt) -- (4149.61pt,2091.4357pt) -- cycle; - \draw[pstyle2] (4164.61pt,2026.2999pt) ellipse (11pt and 11pt); - \node at (4164.61pt,2026.2999pt)[]{\textbf{\Large C}}; - \node at (4178.61pt,2016.7659pt)[below right,color=black]{Comment\_MongoDB\_Impl}; - \draw[pstyle3] (4150.61pt,2042.2999pt) -- (4382.2169pt,2042.2999pt); - \draw[pstyle3] (4150.61pt,2050.2999pt) -- (4382.2169pt,2050.2999pt); - \draw[pstyle6] (4160.61pt,2065.3339pt) ellipse (3pt and 3pt); - \node at (4169.61pt,2054.2999pt)[below right,color=black]{toTeX()}; - \draw[pstyle6] (4160.61pt,2084.4018pt) ellipse (3pt and 3pt); - \node at (4169.61pt,2073.3678pt)[below right,color=black]{toXML()}; - \draw[pstyle1] (3921.81pt,2015.2999pt) arc (180:270:5pt) -- (3926.81pt,2010.2999pt) -- (4110.0079pt,2010.2999pt) arc (270:360:5pt) -- (4115.0079pt,2015.2999pt) -- (4115.0079pt,2091.4357pt) arc (0:90:5pt) -- (4110.0079pt,2096.4357pt) -- (3926.81pt,2096.4357pt) arc (90:180:5pt) -- (3921.81pt,2091.4357pt) -- cycle; - \draw[pstyle2] (3936.81pt,2026.2999pt) ellipse (11pt and 11pt); - \node at (3936.81pt,2026.2999pt)[]{\textbf{\Large C}}; - \node at (3950.81pt,2016.7659pt)[below right,color=black]{Line\_MongoDB\_Impl}; - \draw[pstyle3] (3922.81pt,2042.2999pt) -- (4114.0079pt,2042.2999pt); - \draw[pstyle3] (3922.81pt,2050.2999pt) -- (4114.0079pt,2050.2999pt); - \draw[pstyle6] (3932.81pt,2065.3339pt) ellipse (3pt and 3pt); - \node at (3941.81pt,2054.2999pt)[below right,color=black]{toTeX()}; - \draw[pstyle6] (3932.81pt,2084.4018pt) ellipse (3pt and 3pt); - \node at (3941.81pt,2073.3678pt)[below right,color=black]{toXML()}; - \draw[pstyle1] (4417.82pt,2015.2999pt) arc (180:270:5pt) -- (4422.82pt,2010.2999pt) -- (4633.9958pt,2010.2999pt) arc (270:360:5pt) -- (4638.9958pt,2015.2999pt) -- (4638.9958pt,2091.4357pt) arc (0:90:5pt) -- (4633.9958pt,2096.4357pt) -- (4422.82pt,2096.4357pt) arc (90:180:5pt) -- (4417.82pt,2091.4357pt) -- cycle; - \draw[pstyle2] (4432.82pt,2026.2999pt) ellipse (11pt and 11pt); - \node at (4432.82pt,2026.2999pt)[]{\textbf{\Large C}}; - \node at (4446.82pt,2016.7659pt)[below right,color=black]{Speaker\_MongoDB\_Impl}; - \draw[pstyle3] (4418.82pt,2042.2999pt) -- (4637.9958pt,2042.2999pt); - \draw[pstyle3] (4418.82pt,2050.2999pt) -- (4637.9958pt,2050.2999pt); - \draw[pstyle6] (4428.82pt,2065.3339pt) ellipse (3pt and 3pt); - \node at (4437.82pt,2054.2999pt)[below right,color=black]{toTeX()}; - \draw[pstyle6] (4428.82pt,2084.4018pt) ellipse (3pt and 3pt); - \node at (4437.82pt,2073.3678pt)[below right,color=black]{toXML()}; - \draw[pstyle1] (4420.37pt,2950.0099pt) arc (180:270:5pt) -- (4425.37pt,2945.0099pt) -- (4509.4486pt,2945.0099pt) arc (270:360:5pt) -- (4514.4486pt,2950.0099pt) -- (4514.4486pt,3045.2136pt) arc (0:90:5pt) -- (4509.4486pt,3050.2136pt) -- (4425.37pt,3050.2136pt) arc (90:180:5pt) -- (4420.37pt,3045.2136pt) -- cycle; - \draw[pstyle10] (4437.6432pt,2961.0099pt) ellipse (11pt and 11pt); - \node at (4437.6432pt,2961.0099pt)[]{\textbf{\Large E}}; - \node at (4452.1484pt,2951.4759pt)[below right,color=black]{Gender}; - \draw[pstyle3] (4421.37pt,2977.0099pt) -- (4513.4486pt,2977.0099pt); - \draw[pstyle5] (4428.37pt,2989.0439pt) rectangle (4434.37pt,2995.0439pt); - \node at (4440.37pt,2981.0099pt)[below right,color=black]{text}; - \draw[pstyle3] (4421.37pt,3004.0778pt) -- (4513.4486pt,3004.0778pt); - \draw[pstyle6] (4431.37pt,3019.1118pt) ellipse (3pt and 3pt); - \node at (4440.37pt,3008.0778pt)[below right,color=black]{getText()}; - \draw[pstyle6] (4431.37pt,3038.1797pt) ellipse (3pt and 3pt); - \node at (4440.37pt,3027.1457pt)[below right,color=black]{byText()}; - \draw[pstyle1] (1055.25pt,3648.0499pt) arc (180:270:5pt) -- (1060.25pt,3643.0499pt) -- (1180.5623pt,3643.0499pt) arc (270:360:5pt) -- (1185.5623pt,3648.0499pt) -- (1185.5623pt,3972.0687pt) arc (0:90:5pt) -- (1180.5623pt,3977.0687pt) -- (1060.25pt,3977.0687pt) arc (90:180:5pt) -- (1055.25pt,3972.0687pt) -- cycle; - \draw[pstyle2] (1070.25pt,3659.0499pt) ellipse (11pt and 11pt); - \node at (1070.25pt,3659.0499pt)[]{\textbf{\Large C}}; - \node at (1084.25pt,3649.5159pt)[below right,color=black]{Membership}; - \draw[pstyle3] (1056.25pt,3675.0499pt) -- (1184.5623pt,3675.0499pt); - \draw[pstyle3] (1056.25pt,3683.0499pt) -- (1184.5623pt,3683.0499pt); - \draw[pstyle6] (1066.25pt,3698.0839pt) ellipse (3pt and 3pt); - \node at (1075.25pt,3687.0499pt)[below right,color=black]{getRole()}; - \draw[pstyle6] (1066.25pt,3717.1518pt) ellipse (3pt and 3pt); - \node at (1075.25pt,3706.1178pt)[below right,color=black]{setRole()}; - \draw[pstyle6] (1066.25pt,3736.2197pt) ellipse (3pt and 3pt); - \node at (1075.25pt,3725.1857pt)[below right,color=black]{getMember()}; - \draw[pstyle6] (1066.25pt,3755.2876pt) ellipse (3pt and 3pt); - \node at (1075.25pt,3744.2536pt)[below right,color=black]{setMember()}; - \draw[pstyle6] (1066.25pt,3774.3555pt) ellipse (3pt and 3pt); - \node at (1075.25pt,3763.3216pt)[below right,color=black]{getBegin()}; - \draw[pstyle6] (1066.25pt,3793.4234pt) ellipse (3pt and 3pt); - \node at (1075.25pt,3782.3895pt)[below right,color=black]{setBegin()}; - \draw[pstyle6] (1066.25pt,3812.4914pt) ellipse (3pt and 3pt); - \node at (1075.25pt,3801.4574pt)[below right,color=black]{getEnd()}; - \draw[pstyle6] (1066.25pt,3831.5593pt) ellipse (3pt and 3pt); - \node at (1075.25pt,3820.5253pt)[below right,color=black]{setEnd()}; - \draw[pstyle6] (1066.25pt,3850.6272pt) ellipse (3pt and 3pt); - \node at (1075.25pt,3839.5932pt)[below right,color=black]{getLabel()}; - \draw[pstyle6] (1066.25pt,3869.6951pt) ellipse (3pt and 3pt); - \node at (1075.25pt,3858.6612pt)[below right,color=black]{setLabel()}; - \draw[pstyle6] (1066.25pt,3888.763pt) ellipse (3pt and 3pt); - \node at (1075.25pt,3877.7291pt)[below right,color=black]{getWp()}; - \draw[pstyle6] (1066.25pt,3907.8309pt) ellipse (3pt and 3pt); - \node at (1075.25pt,3896.797pt)[below right,color=black]{setWp()}; - \draw[pstyle6] (1066.25pt,3926.8989pt) ellipse (3pt and 3pt); - \node at (1075.25pt,3915.8649pt)[below right,color=black]{equals()}; - \draw[pstyle6] (1066.25pt,3945.9668pt) ellipse (3pt and 3pt); - \node at (1075.25pt,3934.9328pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (1066.25pt,3965.0347pt) ellipse (3pt and 3pt); - \node at (1075.25pt,3954.0007pt)[below right,color=black]{toString()}; - \draw[pstyle1] (1220.48pt,3466.9099pt) arc (180:270:5pt) -- (1225.48pt,3461.9099pt) -- (1417.3484pt,3461.9099pt) arc (270:360:5pt) -- (1422.3484pt,3466.9099pt) -- (1422.3484pt,4153.2191pt) arc (0:90:5pt) -- (1417.3484pt,4158.2191pt) -- (1225.48pt,4158.2191pt) arc (90:180:5pt) -- (1220.48pt,4153.2191pt) -- cycle; - \draw[pstyle2] (1285.9486pt,3477.9099pt) ellipse (11pt and 11pt); - \node at (1285.9486pt,3477.9099pt)[]{\textbf{\Large C}}; - \node at (1306.4486pt,3468.3759pt)[below right,color=black]{Speaker}; - \draw[pstyle3] (1221.48pt,3493.9099pt) -- (1421.3484pt,3493.9099pt); - \draw[pstyle3] (1221.48pt,3501.9099pt) -- (1421.3484pt,3501.9099pt); - \draw[pstyle6] (1231.48pt,3516.9439pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3505.9099pt)[below right,color=black]{getId()}; - \draw[pstyle6] (1231.48pt,3536.0118pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3524.9778pt)[below right,color=black]{setId()}; - \draw[pstyle6] (1231.48pt,3555.0797pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3544.0457pt)[below right,color=black]{getName()}; - \draw[pstyle6] (1231.48pt,3574.1476pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3563.1136pt)[below right,color=black]{setName()}; - \draw[pstyle6] (1231.48pt,3593.2155pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3582.1816pt)[below right,color=black]{getFirstName()}; - \draw[pstyle6] (1231.48pt,3612.2834pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3601.2495pt)[below right,color=black]{setFirstName()}; - \draw[pstyle6] (1231.48pt,3631.3514pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3620.3174pt)[below right,color=black]{getTitle()}; - \draw[pstyle6] (1231.48pt,3650.4193pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3639.3853pt)[below right,color=black]{setTitle()}; - \draw[pstyle6] (1231.48pt,3669.4872pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3658.4532pt)[below right,color=black]{getGeburtsdatum()}; - \draw[pstyle6] (1231.48pt,3688.5551pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3677.5212pt)[below right,color=black]{setGeburtsdatum()}; - \draw[pstyle6] (1231.48pt,3707.623pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3696.5891pt)[below right,color=black]{getGeburtsort()}; - \draw[pstyle6] (1231.48pt,3726.6909pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3715.657pt)[below right,color=black]{setGeburtsort()}; - \draw[pstyle6] (1231.48pt,3745.7589pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3734.7249pt)[below right,color=black]{getSterbedatum()}; - \draw[pstyle6] (1231.48pt,3764.8268pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3753.7928pt)[below right,color=black]{setSterbedatum()}; - \draw[pstyle6] (1231.48pt,3783.8947pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3772.8607pt)[below right,color=black]{getGeschlecht()}; - \draw[pstyle6] (1231.48pt,3802.9626pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3791.9287pt)[below right,color=black]{setGeschlecht()}; - \draw[pstyle6] (1231.48pt,3822.0305pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3810.9966pt)[below right,color=black]{getBeruf()}; - \draw[pstyle6] (1231.48pt,3841.0984pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3830.0645pt)[below right,color=black]{setBeruf()}; - \draw[pstyle6] (1231.48pt,3860.1664pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3849.1324pt)[below right,color=black]{getAkademischertitel()}; - \draw[pstyle6] (1231.48pt,3879.2343pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3868.2003pt)[below right,color=black]{setAkademischertitel()}; - \draw[pstyle6] (1231.48pt,3898.3022pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3887.2682pt)[below right,color=black]{getFamilienstand()}; - \draw[pstyle6] (1231.48pt,3917.3701pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3906.3362pt)[below right,color=black]{setFamilienstand()}; - \draw[pstyle6] (1231.48pt,3936.438pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3925.4041pt)[below right,color=black]{getReligion()}; - \draw[pstyle6] (1231.48pt,3955.5059pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3944.472pt)[below right,color=black]{setReligion()}; - \draw[pstyle6] (1231.48pt,3974.5739pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3963.5399pt)[below right,color=black]{getVita()}; - \draw[pstyle6] (1231.48pt,3993.6418pt) ellipse (3pt and 3pt); - \node at (1240.48pt,3982.6078pt)[below right,color=black]{setVita()}; - \draw[pstyle6] (1231.48pt,4012.7097pt) ellipse (3pt and 3pt); - \node at (1240.48pt,4001.6757pt)[below right,color=black]{getParty()}; - \draw[pstyle6] (1231.48pt,4031.7776pt) ellipse (3pt and 3pt); - \node at (1240.48pt,4020.7437pt)[below right,color=black]{setParty()}; - \draw[pstyle6] (1231.48pt,4050.8455pt) ellipse (3pt and 3pt); - \node at (1240.48pt,4039.8116pt)[below right,color=black]{getPrimaryFoto()}; - \draw[pstyle6] (1231.48pt,4069.9134pt) ellipse (3pt and 3pt); - \node at (1240.48pt,4058.8795pt)[below right,color=black]{setPrimaryFoto()}; - \draw[pstyle6] (1231.48pt,4088.9814pt) ellipse (3pt and 3pt); - \node at (1240.48pt,4077.9474pt)[below right,color=black]{setMemberships()}; - \draw[pstyle6] (1231.48pt,4108.0493pt) ellipse (3pt and 3pt); - \node at (1240.48pt,4097.0153pt)[below right,color=black]{equals()}; - \draw[pstyle6] (1231.48pt,4127.1172pt) ellipse (3pt and 3pt); - \node at (1240.48pt,4116.0832pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (1231.48pt,4146.1851pt) ellipse (3pt and 3pt); - \node at (1240.48pt,4135.1512pt)[below right,color=black]{toString()}; - \draw[pstyle1] (631.7pt,2768.8699pt) arc (180:270:5pt) -- (636.7pt,2763.8699pt) -- (808.1205pt,2763.8699pt) arc (270:360:5pt) -- (813.1205pt,2768.8699pt) -- (813.1205pt,3226.3641pt) arc (0:90:5pt) -- (808.1205pt,3231.3641pt) -- (636.7pt,3231.3641pt) arc (90:180:5pt) -- (631.7pt,3226.3641pt) -- cycle; - \draw[pstyle2] (671.9114pt,2779.8699pt) ellipse (11pt and 11pt); - \node at (671.9114pt,2779.8699pt)[]{\textbf{\Large C}}; - \node at (691.514pt,2770.3359pt)[below right,color=black]{HtmlSpeech}; - \draw[pstyle3] (632.7pt,2795.8699pt) -- (812.1205pt,2795.8699pt); - \draw[pstyle3] (632.7pt,2803.8699pt) -- (812.1205pt,2803.8699pt); - \draw[pstyle7] (639.7pt,2815.9039pt) rectangle (645.7pt,2821.9039pt); - \node at (651.7pt,2807.8699pt)[below right,color=black]{readNlpInfo()}; - \draw[pstyle6] (642.7pt,2837.9718pt) ellipse (3pt and 3pt); - \node at (651.7pt,2826.9378pt)[below right,color=black]{getSpeechKey()}; - \draw[pstyle6] (642.7pt,2857.0397pt) ellipse (3pt and 3pt); - \node at (651.7pt,2846.0057pt)[below right,color=black]{setSpeechKey()}; - \draw[pstyle6] (642.7pt,2876.1076pt) ellipse (3pt and 3pt); - \node at (651.7pt,2865.0736pt)[below right,color=black]{getSpeakerName()}; - \draw[pstyle6] (642.7pt,2895.1755pt) ellipse (3pt and 3pt); - \node at (651.7pt,2884.1416pt)[below right,color=black]{setSpeakerName()}; - \draw[pstyle6] (642.7pt,2914.2434pt) ellipse (3pt and 3pt); - \node at (651.7pt,2903.2095pt)[below right,color=black]{getFraction()}; - \draw[pstyle6] (642.7pt,2933.3114pt) ellipse (3pt and 3pt); - \node at (651.7pt,2922.2774pt)[below right,color=black]{setFraction()}; - \draw[pstyle6] (642.7pt,2952.3793pt) ellipse (3pt and 3pt); - \node at (651.7pt,2941.3453pt)[below right,color=black]{getDateTimeString()}; - \draw[pstyle6] (642.7pt,2971.4472pt) ellipse (3pt and 3pt); - \node at (651.7pt,2960.4132pt)[below right,color=black]{setDateTimeString()}; - \draw[pstyle6] (642.7pt,2990.5151pt) ellipse (3pt and 3pt); - \node at (651.7pt,2979.4812pt)[below right,color=black]{getAgendaTitle()}; - \draw[pstyle6] (642.7pt,3009.583pt) ellipse (3pt and 3pt); - \node at (651.7pt,2998.5491pt)[below right,color=black]{setAgendaTitle()}; - \draw[pstyle6] (642.7pt,3028.6509pt) ellipse (3pt and 3pt); - \node at (651.7pt,3017.617pt)[below right,color=black]{setContent()}; - \draw[pstyle6] (642.7pt,3047.7189pt) ellipse (3pt and 3pt); - \node at (651.7pt,3036.6849pt)[below right,color=black]{addContent()}; - \draw[pstyle6] (642.7pt,3066.7868pt) ellipse (3pt and 3pt); - \node at (651.7pt,3055.7528pt)[below right,color=black]{getNlp()}; - \draw[pstyle6] (642.7pt,3085.8547pt) ellipse (3pt and 3pt); - \node at (651.7pt,3074.8207pt)[below right,color=black]{setNlp()}; - \draw[pstyle6] (642.7pt,3104.9226pt) ellipse (3pt and 3pt); - \node at (651.7pt,3093.8887pt)[below right,color=black]{equals()}; - \draw[pstyle6] (642.7pt,3123.9905pt) ellipse (3pt and 3pt); - \node at (651.7pt,3112.9566pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (642.7pt,3143.0584pt) ellipse (3pt and 3pt); - \node at (651.7pt,3132.0245pt)[below right,color=black]{toString()}; - \draw[pstyle6] (642.7pt,3162.1264pt) ellipse (3pt and 3pt); - \node at (651.7pt,3151.0924pt)[below right,color=black]{setVideo()}; - \draw[pstyle6] (642.7pt,3181.1943pt) ellipse (3pt and 3pt); - \node at (651.7pt,3170.1603pt)[below right,color=black]{setVideoData()}; - \draw[pstyle6] (642.7pt,3200.2622pt) ellipse (3pt and 3pt); - \node at (651.7pt,3189.2282pt)[below right,color=black]{getVideo()}; - \draw[pstyle6] (642.7pt,3219.3301pt) ellipse (3pt and 3pt); - \node at (651.7pt,3208.2962pt)[below right,color=black]{getVideoData()}; - \draw[pstyle1] (1089.79pt,2873.7399pt) arc (180:270:5pt) -- (1094.79pt,2868.7399pt) -- (1236.0371pt,2868.7399pt) arc (270:360:5pt) -- (1241.0371pt,2873.7399pt) -- (1241.0371pt,3121.487pt) arc (0:90:5pt) -- (1236.0371pt,3126.487pt) -- (1094.79pt,3126.487pt) arc (90:180:5pt) -- (1089.79pt,3121.487pt) -- cycle; - \draw[pstyle2] (1104.79pt,2884.7399pt) ellipse (11pt and 11pt); - \node at (1104.79pt,2884.7399pt)[]{\textbf{\Large C}}; - \node at (1118.79pt,2875.2059pt)[below right,color=black]{Parlamentarier}; - \draw[pstyle3] (1090.79pt,2900.7399pt) -- (1240.0371pt,2900.7399pt); - \draw[pstyle3] (1090.79pt,2908.7399pt) -- (1240.0371pt,2908.7399pt); - \draw[pstyle6] (1100.79pt,2923.7739pt) ellipse (3pt and 3pt); - \node at (1109.79pt,2912.7399pt)[below right,color=black]{getId()}; - \draw[pstyle6] (1100.79pt,2942.8418pt) ellipse (3pt and 3pt); - \node at (1109.79pt,2931.8078pt)[below right,color=black]{setId()}; - \draw[pstyle6] (1100.79pt,2961.9097pt) ellipse (3pt and 3pt); - \node at (1109.79pt,2950.8757pt)[below right,color=black]{getVorname()}; - \draw[pstyle6] (1100.79pt,2980.9776pt) ellipse (3pt and 3pt); - \node at (1109.79pt,2969.9436pt)[below right,color=black]{setVorname()}; - \draw[pstyle6] (1100.79pt,3000.0455pt) ellipse (3pt and 3pt); - \node at (1109.79pt,2989.0116pt)[below right,color=black]{getNachname()}; - \draw[pstyle6] (1100.79pt,3019.1134pt) ellipse (3pt and 3pt); - \node at (1109.79pt,3008.0795pt)[below right,color=black]{setNachname()}; - \draw[pstyle6] (1100.79pt,3038.1814pt) ellipse (3pt and 3pt); - \node at (1109.79pt,3027.1474pt)[below right,color=black]{getPartei()}; - \draw[pstyle6] (1100.79pt,3057.2493pt) ellipse (3pt and 3pt); - \node at (1109.79pt,3046.2153pt)[below right,color=black]{setPartei()}; - \draw[pstyle6] (1100.79pt,3076.3172pt) ellipse (3pt and 3pt); - \node at (1109.79pt,3065.2832pt)[below right,color=black]{equals()}; - \draw[pstyle6] (1100.79pt,3095.3851pt) ellipse (3pt and 3pt); - \node at (1109.79pt,3084.3512pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (1100.79pt,3114.453pt) ellipse (3pt and 3pt); - \node at (1109.79pt,3103.4191pt)[below right,color=black]{toString()}; - \draw[pstyle1] (848.36pt,2616.3299pt) arc (180:270:5pt) -- (853.36pt,2611.3299pt) -- (1049.464pt,2611.3299pt) arc (270:360:5pt) -- (1054.464pt,2616.3299pt) -- (1054.464pt,3378.9107pt) arc (0:90:5pt) -- (1049.464pt,3383.9107pt) -- (853.36pt,3383.9107pt) arc (90:180:5pt) -- (848.36pt,3378.9107pt) -- cycle; - \draw[pstyle2] (864.253pt,2627.3299pt) ellipse (11pt and 11pt); - \node at (864.253pt,2627.3299pt)[]{\textbf{\Large C}}; - \node at (878.4514pt,2617.7959pt)[below right,color=black]{ParlamentarierDetails}; - \draw[pstyle3] (849.36pt,2643.3299pt) -- (1053.464pt,2643.3299pt); - \draw[pstyle3] (849.36pt,2651.3299pt) -- (1053.464pt,2651.3299pt); - \draw[pstyle6] (859.36pt,2666.3639pt) ellipse (3pt and 3pt); - \node at (868.36pt,2655.3299pt)[below right,color=black]{getId()}; - \draw[pstyle6] (859.36pt,2685.4318pt) ellipse (3pt and 3pt); - \node at (868.36pt,2674.3978pt)[below right,color=black]{setId()}; - \draw[pstyle6] (859.36pt,2704.4997pt) ellipse (3pt and 3pt); - \node at (868.36pt,2693.4657pt)[below right,color=black]{getVorname()}; - \draw[pstyle6] (859.36pt,2723.5676pt) ellipse (3pt and 3pt); - \node at (868.36pt,2712.5336pt)[below right,color=black]{setVorname()}; - \draw[pstyle6] (859.36pt,2742.6355pt) ellipse (3pt and 3pt); - \node at (868.36pt,2731.6016pt)[below right,color=black]{getNachname()}; - \draw[pstyle6] (859.36pt,2761.7034pt) ellipse (3pt and 3pt); - \node at (868.36pt,2750.6695pt)[below right,color=black]{setNachname()}; - \draw[pstyle6] (859.36pt,2780.7714pt) ellipse (3pt and 3pt); - \node at (868.36pt,2769.7374pt)[below right,color=black]{getPartei()}; - \draw[pstyle6] (859.36pt,2799.8393pt) ellipse (3pt and 3pt); - \node at (868.36pt,2788.8053pt)[below right,color=black]{setPartei()}; - \draw[pstyle6] (859.36pt,2818.9072pt) ellipse (3pt and 3pt); - \node at (868.36pt,2807.8732pt)[below right,color=black]{getTitle()}; - \draw[pstyle6] (859.36pt,2837.9751pt) ellipse (3pt and 3pt); - \node at (868.36pt,2826.9412pt)[below right,color=black]{setTitle()}; - \draw[pstyle6] (859.36pt,2857.043pt) ellipse (3pt and 3pt); - \node at (868.36pt,2846.0091pt)[below right,color=black]{getGeburtsdatum()}; - \draw[pstyle6] (859.36pt,2876.1109pt) ellipse (3pt and 3pt); - \node at (868.36pt,2865.077pt)[below right,color=black]{getGeburtsdatumPP()}; - \draw[pstyle6] (859.36pt,2895.1789pt) ellipse (3pt and 3pt); - \node at (868.36pt,2884.1449pt)[below right,color=black]{setGeburtsdatum()}; - \draw[pstyle6] (859.36pt,2914.2468pt) ellipse (3pt and 3pt); - \node at (868.36pt,2903.2128pt)[below right,color=black]{getGeburtsort()}; - \draw[pstyle6] (859.36pt,2933.3147pt) ellipse (3pt and 3pt); - \node at (868.36pt,2922.2807pt)[below right,color=black]{setGeburtsort()}; - \draw[pstyle6] (859.36pt,2952.3826pt) ellipse (3pt and 3pt); - \node at (868.36pt,2941.3487pt)[below right,color=black]{getSterbedatum()}; - \draw[pstyle6] (859.36pt,2971.4505pt) ellipse (3pt and 3pt); - \node at (868.36pt,2960.4166pt)[below right,color=black]{setSterbedatum()}; - \draw[pstyle6] (859.36pt,2990.5184pt) ellipse (3pt and 3pt); - \node at (868.36pt,2979.4845pt)[below right,color=black]{getGeschlecht()}; - \draw[pstyle6] (859.36pt,3009.5864pt) ellipse (3pt and 3pt); - \node at (868.36pt,2998.5524pt)[below right,color=black]{setGeschlecht()}; - \draw[pstyle6] (859.36pt,3028.6543pt) ellipse (3pt and 3pt); - \node at (868.36pt,3017.6203pt)[below right,color=black]{getBeruf()}; - \draw[pstyle6] (859.36pt,3047.7222pt) ellipse (3pt and 3pt); - \node at (868.36pt,3036.6882pt)[below right,color=black]{setBeruf()}; - \draw[pstyle6] (859.36pt,3066.7901pt) ellipse (3pt and 3pt); - \node at (868.36pt,3055.7562pt)[below right,color=black]{getAkademischerTitel()}; - \draw[pstyle6] (859.36pt,3085.858pt) ellipse (3pt and 3pt); - \node at (868.36pt,3074.8241pt)[below right,color=black]{setAkademischerTitel()}; - \draw[pstyle6] (859.36pt,3104.9259pt) ellipse (3pt and 3pt); - \node at (868.36pt,3093.892pt)[below right,color=black]{getFamilienstand()}; - \draw[pstyle6] (859.36pt,3123.9939pt) ellipse (3pt and 3pt); - \node at (868.36pt,3112.9599pt)[below right,color=black]{setFamilienstand()}; - \draw[pstyle6] (859.36pt,3143.0618pt) ellipse (3pt and 3pt); - \node at (868.36pt,3132.0278pt)[below right,color=black]{getReligion()}; - \draw[pstyle6] (859.36pt,3162.1297pt) ellipse (3pt and 3pt); - \node at (868.36pt,3151.0957pt)[below right,color=black]{setReligion()}; - \draw[pstyle6] (859.36pt,3181.1976pt) ellipse (3pt and 3pt); - \node at (868.36pt,3170.1637pt)[below right,color=black]{getVita()}; - \draw[pstyle6] (859.36pt,3200.2655pt) ellipse (3pt and 3pt); - \node at (868.36pt,3189.2316pt)[below right,color=black]{setVita()}; - \draw[pstyle6] (859.36pt,3219.3334pt) ellipse (3pt and 3pt); - \node at (868.36pt,3208.2995pt)[below right,color=black]{getParty()}; - \draw[pstyle6] (859.36pt,3238.4014pt) ellipse (3pt and 3pt); - \node at (868.36pt,3227.3674pt)[below right,color=black]{setParty()}; - \draw[pstyle6] (859.36pt,3257.4693pt) ellipse (3pt and 3pt); - \node at (868.36pt,3246.4353pt)[below right,color=black]{getPrimaryFoto()}; - \draw[pstyle6] (859.36pt,3276.5372pt) ellipse (3pt and 3pt); - \node at (868.36pt,3265.5032pt)[below right,color=black]{setPrimaryFoto()}; - \draw[pstyle6] (859.36pt,3295.6051pt) ellipse (3pt and 3pt); - \node at (868.36pt,3284.5712pt)[below right,color=black]{setMemberships()}; - \draw[pstyle6] (859.36pt,3314.673pt) ellipse (3pt and 3pt); - \node at (868.36pt,3303.6391pt)[below right,color=black]{setReden()}; - \draw[pstyle6] (859.36pt,3333.7409pt) ellipse (3pt and 3pt); - \node at (868.36pt,3322.707pt)[below right,color=black]{equals()}; - \draw[pstyle6] (859.36pt,3352.8089pt) ellipse (3pt and 3pt); - \node at (868.36pt,3341.7749pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (859.36pt,3371.8768pt) ellipse (3pt and 3pt); - \node at (868.36pt,3360.8428pt)[below right,color=black]{toString()}; - \draw[pstyle1] (415.7pt,2835.6099pt) arc (180:270:5pt) -- (420.7pt,2830.6099pt) -- (592.1205pt,2830.6099pt) arc (270:360:5pt) -- (597.1205pt,2835.6099pt) -- (597.1205pt,3159.6287pt) arc (0:90:5pt) -- (592.1205pt,3164.6287pt) -- (420.7pt,3164.6287pt) arc (90:180:5pt) -- (415.7pt,3159.6287pt) -- cycle; - \draw[pstyle2] (439.6772pt,2846.6099pt) ellipse (11pt and 11pt); - \node at (439.6772pt,2846.6099pt)[]{\textbf{\Large C}}; - \node at (455.6722pt,2837.0759pt)[below right,color=black]{SpeechOverview}; - \draw[pstyle3] (416.7pt,2862.6099pt) -- (596.1205pt,2862.6099pt); - \draw[pstyle3] (416.7pt,2870.6099pt) -- (596.1205pt,2870.6099pt); - \draw[pstyle6] (426.7pt,2885.6439pt) ellipse (3pt and 3pt); - \node at (435.7pt,2874.6099pt)[below right,color=black]{getSpeechKey()}; - \draw[pstyle6] (426.7pt,2904.7118pt) ellipse (3pt and 3pt); - \node at (435.7pt,2893.6778pt)[below right,color=black]{setSpeechKey()}; - \draw[pstyle6] (426.7pt,2923.7797pt) ellipse (3pt and 3pt); - \node at (435.7pt,2912.7457pt)[below right,color=black]{getSpeakerId()}; - \draw[pstyle6] (426.7pt,2942.8476pt) ellipse (3pt and 3pt); - \node at (435.7pt,2931.8136pt)[below right,color=black]{setSpeakerId()}; - \draw[pstyle6] (426.7pt,2961.9155pt) ellipse (3pt and 3pt); - \node at (435.7pt,2950.8816pt)[below right,color=black]{getDateTimeString()}; - \draw[pstyle6] (426.7pt,2980.9834pt) ellipse (3pt and 3pt); - \node at (435.7pt,2969.9495pt)[below right,color=black]{setDateTimeString()}; - \draw[pstyle6] (426.7pt,3000.0514pt) ellipse (3pt and 3pt); - \node at (435.7pt,2989.0174pt)[below right,color=black]{getSpeakerName()}; - \draw[pstyle6] (426.7pt,3019.1193pt) ellipse (3pt and 3pt); - \node at (435.7pt,3008.0853pt)[below right,color=black]{setSpeakerName()}; - \draw[pstyle6] (426.7pt,3038.1872pt) ellipse (3pt and 3pt); - \node at (435.7pt,3027.1532pt)[below right,color=black]{getFraction()}; - \draw[pstyle6] (426.7pt,3057.2551pt) ellipse (3pt and 3pt); - \node at (435.7pt,3046.2212pt)[below right,color=black]{setFraction()}; - \draw[pstyle6] (426.7pt,3076.323pt) ellipse (3pt and 3pt); - \node at (435.7pt,3065.2891pt)[below right,color=black]{getAgendaTitel()}; - \draw[pstyle6] (426.7pt,3095.3909pt) ellipse (3pt and 3pt); - \node at (435.7pt,3084.357pt)[below right,color=black]{setAgendaTitel()}; - \draw[pstyle6] (426.7pt,3114.4589pt) ellipse (3pt and 3pt); - \node at (435.7pt,3103.4249pt)[below right,color=black]{equals()}; - \draw[pstyle6] (426.7pt,3133.5268pt) ellipse (3pt and 3pt); - \node at (435.7pt,3122.4928pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (426.7pt,3152.5947pt) ellipse (3pt and 3pt); - \node at (435.7pt,3141.5607pt)[below right,color=black]{toString()}; - \draw[pstyle1] (1276pt,2911.8799pt) arc (180:270:5pt) -- (1281pt,2906.8799pt) -- (1417.8167pt,2906.8799pt) arc (270:360:5pt) -- (1422.8167pt,2911.8799pt) -- (1422.8167pt,3083.3553pt) arc (0:90:5pt) -- (1417.8167pt,3088.3553pt) -- (1281pt,3088.3553pt) arc (90:180:5pt) -- (1276pt,3083.3553pt) -- cycle; - \draw[pstyle10] (1291pt,2922.8799pt) ellipse (11pt and 11pt); - \node at (1291pt,2922.8799pt)[]{\textbf{\Large E}}; - \node at (1305pt,2913.3459pt)[below right,color=black]{SpeechContent}; - \draw[pstyle3] (1277pt,2938.8799pt) -- (1421.8167pt,2938.8799pt); - \draw[pstyle3] (1277pt,2946.8799pt) -- (1421.8167pt,2946.8799pt); - \draw[pstyle6] (1287pt,2961.9139pt) ellipse (3pt and 3pt); - \node at (1296pt,2950.8799pt)[below right,color=black]{getType()}; - \draw[pstyle6] (1287pt,2980.9818pt) ellipse (3pt and 3pt); - \node at (1296pt,2969.9478pt)[below right,color=black]{setType()}; - \draw[pstyle6] (1287pt,3000.0497pt) ellipse (3pt and 3pt); - \node at (1296pt,2989.0157pt)[below right,color=black]{getContent()}; - \draw[pstyle6] (1287pt,3019.1176pt) ellipse (3pt and 3pt); - \node at (1296pt,3008.0836pt)[below right,color=black]{setContent()}; - \draw[pstyle6] (1287pt,3038.1855pt) ellipse (3pt and 3pt); - \node at (1296pt,3027.1516pt)[below right,color=black]{equals()}; - \draw[pstyle6] (1287pt,3057.2534pt) ellipse (3pt and 3pt); - \node at (1296pt,3046.2195pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (1287pt,3076.3214pt) ellipse (3pt and 3pt); - \node at (1296pt,3065.2874pt)[below right,color=black]{toString()}; - \draw[pstyle1] (2491.27pt,2883.2799pt) arc (180:270:5pt) -- (2496.27pt,2878.2799pt) -- (2598.5408pt,2878.2799pt) arc (270:360:5pt) -- (2603.5408pt,2883.2799pt) -- (2603.5408pt,3111.9591pt) arc (0:90:5pt) -- (2598.5408pt,3116.9591pt) -- (2496.27pt,3116.9591pt) arc (90:180:5pt) -- (2491.27pt,3111.9591pt) -- cycle; - \draw[pstyle2] (2523.2876pt,2894.2799pt) ellipse (11pt and 11pt); - \node at (2523.2876pt,2894.2799pt)[]{\textbf{\Large C}}; - \node at (2541.0693pt,2884.7459pt)[below right,color=black]{Topic}; - \draw[pstyle3] (2492.27pt,2910.2799pt) -- (2602.5408pt,2910.2799pt); - \draw[pstyle3] (2492.27pt,2918.2799pt) -- (2602.5408pt,2918.2799pt); - \draw[pstyle6] (2502.27pt,2933.3139pt) ellipse (3pt and 3pt); - \node at (2511.27pt,2922.2799pt)[below right,color=black]{getTopic()}; - \draw[pstyle6] (2502.27pt,2952.3818pt) ellipse (3pt and 3pt); - \node at (2511.27pt,2941.3478pt)[below right,color=black]{setTopic()}; - \draw[pstyle6] (2502.27pt,2971.4497pt) ellipse (3pt and 3pt); - \node at (2511.27pt,2960.4157pt)[below right,color=black]{getScore()}; - \draw[pstyle6] (2502.27pt,2990.5176pt) ellipse (3pt and 3pt); - \node at (2511.27pt,2979.4836pt)[below right,color=black]{setScore()}; - \draw[pstyle6] (2502.27pt,3009.5855pt) ellipse (3pt and 3pt); - \node at (2511.27pt,2998.5516pt)[below right,color=black]{getText()}; - \draw[pstyle6] (2502.27pt,3028.6534pt) ellipse (3pt and 3pt); - \node at (2511.27pt,3017.6195pt)[below right,color=black]{setText()}; - \draw[pstyle6] (2502.27pt,3047.7214pt) ellipse (3pt and 3pt); - \node at (2511.27pt,3036.6874pt)[below right,color=black]{equals()}; - \draw[pstyle6] (2502.27pt,3066.7893pt) ellipse (3pt and 3pt); - \node at (2511.27pt,3055.7553pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (2502.27pt,3085.8572pt) ellipse (3pt and 3pt); - \node at (2511.27pt,3074.8232pt)[below right,color=black]{toString()}; - \draw[pstyle6] (2502.27pt,3104.9251pt) ellipse (3pt and 3pt); - \node at (2511.27pt,3093.8912pt)[below right,color=black]{toXML()}; - \draw[pstyle1] (2322.48pt,2902.3399pt) arc (180:270:5pt) -- (2327.48pt,2897.3399pt) -- (2451.3464pt,2897.3399pt) arc (270:360:5pt) -- (2456.3464pt,2902.3399pt) -- (2456.3464pt,3092.8832pt) arc (0:90:5pt) -- (2451.3464pt,3097.8832pt) -- (2327.48pt,3097.8832pt) arc (90:180:5pt) -- (2322.48pt,3092.8832pt) -- cycle; - \draw[pstyle2] (2337.48pt,2913.3399pt) ellipse (11pt and 11pt); - \node at (2337.48pt,2913.3399pt)[]{\textbf{\Large C}}; - \node at (2351.48pt,2903.8059pt)[below right,color=black]{NamedEntity}; - \draw[pstyle3] (2323.48pt,2929.3399pt) -- (2455.3464pt,2929.3399pt); - \draw[pstyle3] (2323.48pt,2937.3399pt) -- (2455.3464pt,2937.3399pt); - \draw[pstyle6] (2333.48pt,2952.3739pt) ellipse (3pt and 3pt); - \node at (2342.48pt,2941.3399pt)[below right,color=black]{getType()}; - \draw[pstyle6] (2333.48pt,2971.4418pt) ellipse (3pt and 3pt); - \node at (2342.48pt,2960.4078pt)[below right,color=black]{setType()}; - \draw[pstyle6] (2333.48pt,2990.5097pt) ellipse (3pt and 3pt); - \node at (2342.48pt,2979.4757pt)[below right,color=black]{getText()}; - \draw[pstyle6] (2333.48pt,3009.5776pt) ellipse (3pt and 3pt); - \node at (2342.48pt,2998.5436pt)[below right,color=black]{setText()}; - \draw[pstyle6] (2333.48pt,3028.6455pt) ellipse (3pt and 3pt); - \node at (2342.48pt,3017.6116pt)[below right,color=black]{equals()}; - \draw[pstyle6] (2333.48pt,3047.7134pt) ellipse (3pt and 3pt); - \node at (2342.48pt,3036.6795pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (2333.48pt,3066.7814pt) ellipse (3pt and 3pt); - \node at (2342.48pt,3055.7474pt)[below right,color=black]{toString()}; - \draw[pstyle6] (2333.48pt,3085.8493pt) ellipse (3pt and 3pt); - \node at (2342.48pt,3074.8153pt)[below right,color=black]{toXML()}; - \draw[pstyle1] (2812.93pt,2892.8099pt) arc (180:270:5pt) -- (2817.93pt,2887.8099pt) -- (2926.8869pt,2887.8099pt) arc (270:360:5pt) -- (2931.8869pt,2892.8099pt) -- (2931.8869pt,3102.4212pt) arc (0:90:5pt) -- (2926.8869pt,3107.4212pt) -- (2817.93pt,3107.4212pt) arc (90:180:5pt) -- (2812.93pt,3102.4212pt) -- cycle; - \draw[pstyle2] (2845.4807pt,2903.8099pt) ellipse (11pt and 11pt); - \node at (2845.4807pt,2903.8099pt)[]{\textbf{\Large C}}; - \node at (2863.3809pt,2894.2759pt)[below right,color=black]{Token}; - \draw[pstyle3] (2813.93pt,2919.8099pt) -- (2930.8869pt,2919.8099pt); - \draw[pstyle3] (2813.93pt,2927.8099pt) -- (2930.8869pt,2927.8099pt); - \draw[pstyle6] (2823.93pt,2942.8439pt) ellipse (3pt and 3pt); - \node at (2832.93pt,2931.8099pt)[below right,color=black]{getText()}; - \draw[pstyle6] (2823.93pt,2961.9118pt) ellipse (3pt and 3pt); - \node at (2832.93pt,2950.8778pt)[below right,color=black]{setText()}; - \draw[pstyle6] (2823.93pt,2980.9797pt) ellipse (3pt and 3pt); - \node at (2832.93pt,2969.9457pt)[below right,color=black]{getPos()}; - \draw[pstyle6] (2823.93pt,3000.0476pt) ellipse (3pt and 3pt); - \node at (2832.93pt,2989.0136pt)[below right,color=black]{setPos()}; - \draw[pstyle6] (2823.93pt,3019.1155pt) ellipse (3pt and 3pt); - \node at (2832.93pt,3008.0816pt)[below right,color=black]{getLemma()}; - \draw[pstyle6] (2823.93pt,3038.1834pt) ellipse (3pt and 3pt); - \node at (2832.93pt,3027.1495pt)[below right,color=black]{setLemma()}; - \draw[pstyle6] (2823.93pt,3057.2514pt) ellipse (3pt and 3pt); - \node at (2832.93pt,3046.2174pt)[below right,color=black]{equals()}; - \draw[pstyle6] (2823.93pt,3076.3193pt) ellipse (3pt and 3pt); - \node at (2832.93pt,3065.2853pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (2823.93pt,3095.3872pt) ellipse (3pt and 3pt); - \node at (2832.93pt,3084.3532pt)[below right,color=black]{toString()}; - \draw[pstyle1] (1736.14pt,2806.9999pt) arc (180:270:5pt) -- (1741.14pt,2801.9999pt) -- (1867.6886pt,2801.9999pt) arc (270:360:5pt) -- (1872.6886pt,2806.9999pt) -- (1872.6886pt,3188.2224pt) arc (0:90:5pt) -- (1867.6886pt,3193.2224pt) -- (1741.14pt,3193.2224pt) arc (90:180:5pt) -- (1736.14pt,3188.2224pt) -- cycle; - \draw[pstyle2] (1755.7866pt,2817.9999pt) ellipse (11pt and 11pt); - \node at (1755.7866pt,2817.9999pt)[]{\textbf{\Large C}}; - \node at (1770.8192pt,2808.4659pt)[below right,color=black]{AudioToken}; - \draw[pstyle3] (1737.14pt,2833.9999pt) -- (1871.6886pt,2833.9999pt); - \draw[pstyle5] (1744.14pt,2846.0339pt) rectangle (1750.14pt,2852.0339pt); - \node at (1756.14pt,2837.9999pt)[below right,color=black]{begin}; - \draw[pstyle5] (1744.14pt,2865.1018pt) rectangle (1750.14pt,2871.1018pt); - \node at (1756.14pt,2857.0678pt)[below right,color=black]{end}; - \draw[pstyle5] (1744.14pt,2884.1697pt) rectangle (1750.14pt,2890.1697pt); - \node at (1756.14pt,2876.1357pt)[below right,color=black]{timeStart}; - \draw[pstyle5] (1744.14pt,2903.2376pt) rectangle (1750.14pt,2909.2376pt); - \node at (1756.14pt,2895.2036pt)[below right,color=black]{timeEnd}; - \draw[pstyle5] (1744.14pt,2922.3055pt) rectangle (1750.14pt,2928.3055pt); - \node at (1756.14pt,2914.2716pt)[below right,color=black]{value}; - \draw[pstyle3] (1737.14pt,2937.3395pt) -- (1871.6886pt,2937.3395pt); - \draw[pstyle6] (1747.14pt,2952.3734pt) ellipse (3pt and 3pt); - \node at (1756.14pt,2941.3395pt)[below right,color=black]{getBegin()}; - \draw[pstyle6] (1747.14pt,2971.4414pt) ellipse (3pt and 3pt); - \node at (1756.14pt,2960.4074pt)[below right,color=black]{setBegin()}; - \draw[pstyle6] (1747.14pt,2990.5093pt) ellipse (3pt and 3pt); - \node at (1756.14pt,2979.4753pt)[below right,color=black]{getEnd()}; - \draw[pstyle6] (1747.14pt,3009.5772pt) ellipse (3pt and 3pt); - \node at (1756.14pt,2998.5432pt)[below right,color=black]{setEnd()}; - \draw[pstyle6] (1747.14pt,3028.6451pt) ellipse (3pt and 3pt); - \node at (1756.14pt,3017.6112pt)[below right,color=black]{getTimeStart()}; - \draw[pstyle6] (1747.14pt,3047.713pt) ellipse (3pt and 3pt); - \node at (1756.14pt,3036.6791pt)[below right,color=black]{setTimeStart()}; - \draw[pstyle6] (1747.14pt,3066.7809pt) ellipse (3pt and 3pt); - \node at (1756.14pt,3055.747pt)[below right,color=black]{getTimeEnd()}; - \draw[pstyle6] (1747.14pt,3085.8489pt) ellipse (3pt and 3pt); - \node at (1756.14pt,3074.8149pt)[below right,color=black]{setTimeEnd()}; - \draw[pstyle6] (1747.14pt,3104.9168pt) ellipse (3pt and 3pt); - \node at (1756.14pt,3093.8828pt)[below right,color=black]{getValue()}; - \draw[pstyle6] (1747.14pt,3123.9847pt) ellipse (3pt and 3pt); - \node at (1756.14pt,3112.9507pt)[below right,color=black]{setValue()}; - \draw[pstyle6] (1747.14pt,3143.0526pt) ellipse (3pt and 3pt); - \node at (1756.14pt,3132.0187pt)[below right,color=black]{equals()}; - \draw[pstyle6] (1747.14pt,3162.1205pt) ellipse (3pt and 3pt); - \node at (1756.14pt,3151.0866pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (1747.14pt,3181.1884pt) ellipse (3pt and 3pt); - \node at (1756.14pt,3170.1545pt)[below right,color=black]{toString()}; - \draw[pstyle1] (1908.02pt,2892.8099pt) arc (180:270:5pt) -- (1913.02pt,2887.8099pt) -- (2047.7965pt,2887.8099pt) arc (270:360:5pt) -- (2052.7965pt,2892.8099pt) -- (2052.7965pt,3102.4212pt) arc (0:90:5pt) -- (2047.7965pt,3107.4212pt) -- (1913.02pt,3107.4212pt) arc (90:180:5pt) -- (1908.02pt,3102.4212pt) -- cycle; - \draw[pstyle2] (1930.6316pt,2903.8099pt) ellipse (11pt and 11pt); - \node at (1930.6316pt,2903.8099pt)[]{\textbf{\Large C}}; - \node at (1946.3231pt,2894.2759pt)[below right,color=black]{Dependency}; - \draw[pstyle3] (1909.02pt,2919.8099pt) -- (2051.7965pt,2919.8099pt); - \draw[pstyle3] (1909.02pt,2927.8099pt) -- (2051.7965pt,2927.8099pt); - \draw[pstyle6] (1919.02pt,2942.8439pt) ellipse (3pt and 3pt); - \node at (1928.02pt,2931.8099pt)[below right,color=black]{getType()}; - \draw[pstyle6] (1919.02pt,2961.9118pt) ellipse (3pt and 3pt); - \node at (1928.02pt,2950.8778pt)[below right,color=black]{setType()}; - \draw[pstyle6] (1919.02pt,2980.9797pt) ellipse (3pt and 3pt); - \node at (1928.02pt,2969.9457pt)[below right,color=black]{getGovernor()}; - \draw[pstyle6] (1919.02pt,3000.0476pt) ellipse (3pt and 3pt); - \node at (1928.02pt,2989.0136pt)[below right,color=black]{setGovernor()}; - \draw[pstyle6] (1919.02pt,3019.1155pt) ellipse (3pt and 3pt); - \node at (1928.02pt,3008.0816pt)[below right,color=black]{getDependent()}; - \draw[pstyle6] (1919.02pt,3038.1834pt) ellipse (3pt and 3pt); - \node at (1928.02pt,3027.1495pt)[below right,color=black]{setDependent()}; - \draw[pstyle6] (1919.02pt,3057.2514pt) ellipse (3pt and 3pt); - \node at (1928.02pt,3046.2174pt)[below right,color=black]{equals()}; - \draw[pstyle6] (1919.02pt,3076.3193pt) ellipse (3pt and 3pt); - \node at (1928.02pt,3065.2853pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (1919.02pt,3095.3872pt) ellipse (3pt and 3pt); - \node at (1928.02pt,3084.3532pt)[below right,color=black]{toString()}; - \draw[pstyle1] (2087.84pt,2845.1399pt) arc (180:270:5pt) -- (2092.84pt,2840.1399pt) -- (2281.982pt,2840.1399pt) arc (270:360:5pt) -- (2286.982pt,2845.1399pt) -- (2286.982pt,3150.0907pt) arc (0:90:5pt) -- (2281.982pt,3155.0907pt) -- (2092.84pt,3155.0907pt) arc (90:180:5pt) -- (2087.84pt,3150.0907pt) -- cycle; - \draw[pstyle2] (2153.5845pt,2856.1399pt) ellipse (11pt and 11pt); - \node at (2153.5845pt,2856.1399pt)[]{\textbf{\Large C}}; - \node at (2174.0845pt,2846.6059pt)[below right,color=black]{NlpInfo}; - \draw[pstyle3] (2088.84pt,2872.1399pt) -- (2285.982pt,2872.1399pt); - \draw[pstyle3] (2088.84pt,2880.1399pt) -- (2285.982pt,2880.1399pt); - \draw[pstyle6] (2098.84pt,2895.1739pt) ellipse (3pt and 3pt); - \node at (2107.84pt,2884.1399pt)[below right,color=black]{setTokens()}; - \draw[pstyle6] (2098.84pt,2914.2418pt) ellipse (3pt and 3pt); - \node at (2107.84pt,2903.2078pt)[below right,color=black]{setSentences()}; - \draw[pstyle6] (2098.84pt,2933.3097pt) ellipse (3pt and 3pt); - \node at (2107.84pt,2922.2757pt)[below right,color=black]{setDependencies()}; - \draw[pstyle6] (2098.84pt,2952.3776pt) ellipse (3pt and 3pt); - \node at (2107.84pt,2941.3436pt)[below right,color=black]{setNamedEntities()}; - \draw[pstyle6] (2098.84pt,2971.4455pt) ellipse (3pt and 3pt); - \node at (2107.84pt,2960.4116pt)[below right,color=black]{getOverallSentiment()}; - \draw[pstyle6] (2098.84pt,2990.5134pt) ellipse (3pt and 3pt); - \node at (2107.84pt,2979.4795pt)[below right,color=black]{setOverallSentiment()}; - \draw[pstyle6] (2098.84pt,3009.5814pt) ellipse (3pt and 3pt); - \node at (2107.84pt,2998.5474pt)[below right,color=black]{setSentiments()}; - \draw[pstyle6] (2098.84pt,3028.6493pt) ellipse (3pt and 3pt); - \node at (2107.84pt,3017.6153pt)[below right,color=black]{setTopics()}; - \draw[pstyle6] (2098.84pt,3047.7172pt) ellipse (3pt and 3pt); - \node at (2107.84pt,3036.6832pt)[below right,color=black]{setPosList()}; - \draw[pstyle6] (2098.84pt,3066.7851pt) ellipse (3pt and 3pt); - \node at (2107.84pt,3055.7512pt)[below right,color=black]{getVideoInformation()}; - \draw[pstyle6] (2098.84pt,3085.853pt) ellipse (3pt and 3pt); - \node at (2107.84pt,3074.8191pt)[below right,color=black]{setVideoInformation()}; - \draw[pstyle6] (2098.84pt,3104.9209pt) ellipse (3pt and 3pt); - \node at (2107.84pt,3093.887pt)[below right,color=black]{equals()}; - \draw[pstyle6] (2098.84pt,3123.9889pt) ellipse (3pt and 3pt); - \node at (2107.84pt,3112.9549pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (2098.84pt,3143.0568pt) ellipse (3pt and 3pt); - \node at (2107.84pt,3132.0228pt)[below right,color=black]{toString()}; - \draw[pstyle1] (1725.52pt,3657.5899pt) arc (180:270:5pt) -- (1730.52pt,3652.5899pt) -- (1878.2955pt,3652.5899pt) arc (270:360:5pt) -- (1883.2955pt,3657.5899pt) -- (1883.2955pt,3962.5407pt) arc (0:90:5pt) -- (1878.2955pt,3967.5407pt) -- (1730.52pt,3967.5407pt) arc (90:180:5pt) -- (1725.52pt,3962.5407pt) -- cycle; - \draw[pstyle2] (1786.9153pt,3668.5899pt) ellipse (11pt and 11pt); - \node at (1786.9153pt,3668.5899pt)[]{\textbf{\Large C}}; - \node at (1807.4153pt,3659.0559pt)[below right,color=black]{Pos}; - \draw[pstyle3] (1726.52pt,3684.5899pt) -- (1882.2955pt,3684.5899pt); - \draw[pstyle3] (1726.52pt,3692.5899pt) -- (1882.2955pt,3692.5899pt); - \draw[pstyle6] (1736.52pt,3707.6239pt) ellipse (3pt and 3pt); - \node at (1745.52pt,3696.5899pt)[below right,color=black]{getPosValue()}; - \draw[pstyle6] (1736.52pt,3726.6918pt) ellipse (3pt and 3pt); - \node at (1745.52pt,3715.6578pt)[below right,color=black]{setPosValue()}; - \draw[pstyle6] (1736.52pt,3745.7597pt) ellipse (3pt and 3pt); - \node at (1745.52pt,3734.7257pt)[below right,color=black]{getCoarseValue()}; - \draw[pstyle6] (1736.52pt,3764.8276pt) ellipse (3pt and 3pt); - \node at (1745.52pt,3753.7936pt)[below right,color=black]{setCoarseValue()}; - \draw[pstyle6] (1736.52pt,3783.8955pt) ellipse (3pt and 3pt); - \node at (1745.52pt,3772.8616pt)[below right,color=black]{getBegin()}; - \draw[pstyle6] (1736.52pt,3802.9634pt) ellipse (3pt and 3pt); - \node at (1745.52pt,3791.9295pt)[below right,color=black]{setBegin()}; - \draw[pstyle6] (1736.52pt,3822.0314pt) ellipse (3pt and 3pt); - \node at (1745.52pt,3810.9974pt)[below right,color=black]{getEnd()}; - \draw[pstyle6] (1736.52pt,3841.0993pt) ellipse (3pt and 3pt); - \node at (1745.52pt,3830.0653pt)[below right,color=black]{setEnd()}; - \draw[pstyle6] (1736.52pt,3860.1672pt) ellipse (3pt and 3pt); - \node at (1745.52pt,3849.1332pt)[below right,color=black]{getCoveredText()}; - \draw[pstyle6] (1736.52pt,3879.2351pt) ellipse (3pt and 3pt); - \node at (1745.52pt,3868.2012pt)[below right,color=black]{setCoveredText()}; - \draw[pstyle6] (1736.52pt,3898.303pt) ellipse (3pt and 3pt); - \node at (1745.52pt,3887.2691pt)[below right,color=black]{equals()}; - \draw[pstyle6] (1736.52pt,3917.3709pt) ellipse (3pt and 3pt); - \node at (1745.52pt,3906.337pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (1736.52pt,3936.4389pt) ellipse (3pt and 3pt); - \node at (1745.52pt,3925.4049pt)[below right,color=black]{toString()}; - \draw[pstyle6] (1736.52pt,3955.5068pt) ellipse (3pt and 3pt); - \node at (1745.52pt,3944.4728pt)[below right,color=black]{toXML()}; - \draw[pstyle1] (1918.27pt,3743.3899pt) arc (180:270:5pt) -- (1923.27pt,3738.3899pt) -- (2025.5408pt,3738.3899pt) arc (270:360:5pt) -- (2030.5408pt,3743.3899pt) -- (2030.5408pt,3876.7295pt) arc (0:90:5pt) -- (2025.5408pt,3881.7295pt) -- (1923.27pt,3881.7295pt) arc (90:180:5pt) -- (1918.27pt,3876.7295pt) -- cycle; - \draw[pstyle2] (1938.1138pt,3754.3899pt) ellipse (11pt and 11pt); - \node at (1938.1138pt,3754.3899pt)[]{\textbf{\Large C}}; - \node at (1953.1902pt,3744.8559pt)[below right,color=black]{Sentence}; - \draw[pstyle3] (1919.27pt,3770.3899pt) -- (2029.5408pt,3770.3899pt); - \draw[pstyle3] (1919.27pt,3778.3899pt) -- (2029.5408pt,3778.3899pt); - \draw[pstyle6] (1929.27pt,3793.4239pt) ellipse (3pt and 3pt); - \node at (1938.27pt,3782.3899pt)[below right,color=black]{getText()}; - \draw[pstyle6] (1929.27pt,3812.4918pt) ellipse (3pt and 3pt); - \node at (1938.27pt,3801.4578pt)[below right,color=black]{setText()}; - \draw[pstyle6] (1929.27pt,3831.5597pt) ellipse (3pt and 3pt); - \node at (1938.27pt,3820.5257pt)[below right,color=black]{equals()}; - \draw[pstyle6] (1929.27pt,3850.6276pt) ellipse (3pt and 3pt); - \node at (1938.27pt,3839.5936pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (1929.27pt,3869.6955pt) ellipse (3pt and 3pt); - \node at (1938.27pt,3858.6616pt)[below right,color=black]{toString()}; - \draw[pstyle1] (2638.69pt,2835.6099pt) arc (180:270:5pt) -- (2643.69pt,2830.6099pt) -- (2773.1273pt,2830.6099pt) arc (270:360:5pt) -- (2778.1273pt,2835.6099pt) -- (2778.1273pt,3159.6287pt) arc (0:90:5pt) -- (2773.1273pt,3164.6287pt) -- (2643.69pt,3164.6287pt) arc (90:180:5pt) -- (2638.69pt,3159.6287pt) -- cycle; - \draw[pstyle2] (2666.4501pt,2846.6099pt) ellipse (11pt and 11pt); - \node at (2666.4501pt,2846.6099pt)[]{\textbf{\Large C}}; - \node at (2683.2857pt,2837.0759pt)[below right,color=black]{Sentiment}; - \draw[pstyle3] (2639.69pt,2862.6099pt) -- (2777.1273pt,2862.6099pt); - \draw[pstyle3] (2639.69pt,2870.6099pt) -- (2777.1273pt,2870.6099pt); - \draw[pstyle6] (2649.69pt,2885.6439pt) ellipse (3pt and 3pt); - \node at (2658.69pt,2874.6099pt)[below right,color=black]{getBegin()}; - \draw[pstyle6] (2649.69pt,2904.7118pt) ellipse (3pt and 3pt); - \node at (2658.69pt,2893.6778pt)[below right,color=black]{setBegin()}; - \draw[pstyle6] (2649.69pt,2923.7797pt) ellipse (3pt and 3pt); - \node at (2658.69pt,2912.7457pt)[below right,color=black]{getEnd()}; - \draw[pstyle6] (2649.69pt,2942.8476pt) ellipse (3pt and 3pt); - \node at (2658.69pt,2931.8136pt)[below right,color=black]{setEnd()}; - \draw[pstyle6] (2649.69pt,2961.9155pt) ellipse (3pt and 3pt); - \node at (2658.69pt,2950.8816pt)[below right,color=black]{getSentiment()}; - \draw[pstyle6] (2649.69pt,2980.9834pt) ellipse (3pt and 3pt); - \node at (2658.69pt,2969.9495pt)[below right,color=black]{setSentiment()}; - \draw[pstyle6] (2649.69pt,3000.0514pt) ellipse (3pt and 3pt); - \node at (2658.69pt,2989.0174pt)[below right,color=black]{getNegative()}; - \draw[pstyle6] (2649.69pt,3019.1193pt) ellipse (3pt and 3pt); - \node at (2658.69pt,3008.0853pt)[below right,color=black]{setNegative()}; - \draw[pstyle6] (2649.69pt,3038.1872pt) ellipse (3pt and 3pt); - \node at (2658.69pt,3027.1532pt)[below right,color=black]{getNeutral()}; - \draw[pstyle6] (2649.69pt,3057.2551pt) ellipse (3pt and 3pt); - \node at (2658.69pt,3046.2212pt)[below right,color=black]{setNeutral()}; - \draw[pstyle6] (2649.69pt,3076.323pt) ellipse (3pt and 3pt); - \node at (2658.69pt,3065.2891pt)[below right,color=black]{getPositive()}; - \draw[pstyle6] (2649.69pt,3095.3909pt) ellipse (3pt and 3pt); - \node at (2658.69pt,3084.357pt)[below right,color=black]{setPositive()}; - \draw[pstyle6] (2649.69pt,3114.4589pt) ellipse (3pt and 3pt); - \node at (2658.69pt,3103.4249pt)[below right,color=black]{equals()}; - \draw[pstyle6] (2649.69pt,3133.5268pt) ellipse (3pt and 3pt); - \node at (2658.69pt,3122.4928pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (2649.69pt,3152.5947pt) ellipse (3pt and 3pt); - \node at (2658.69pt,3141.5607pt)[below right,color=black]{toString()}; - \draw[pstyle1] (2066.02pt,3752.9199pt) arc (180:270:5pt) -- (2071.02pt,3747.9199pt) -- (2231.8063pt,3747.9199pt) arc (270:360:5pt) -- (2236.8063pt,3752.9199pt) -- (2236.8063pt,3867.1916pt) arc (0:90:5pt) -- (2231.8063pt,3872.1916pt) -- (2071.02pt,3872.1916pt) arc (90:180:5pt) -- (2066.02pt,3867.1916pt) -- cycle; - \draw[pstyle2] (2081.02pt,3763.9199pt) ellipse (11pt and 11pt); - \node at (2081.02pt,3763.9199pt)[]{\textbf{\Large C}}; - \node at (2095.02pt,3754.3859pt)[below right,color=black]{VideoInformation}; - \draw[pstyle3] (2067.02pt,3779.9199pt) -- (2235.8063pt,3779.9199pt); - \draw[pstyle3] (2067.02pt,3787.9199pt) -- (2235.8063pt,3787.9199pt); - \draw[pstyle6] (2077.02pt,3802.9539pt) ellipse (3pt and 3pt); - \node at (2086.02pt,3791.9199pt)[below right,color=black]{setAudioTokens()}; - \draw[pstyle6] (2077.02pt,3822.0218pt) ellipse (3pt and 3pt); - \node at (2086.02pt,3810.9878pt)[below right,color=black]{equals()}; - \draw[pstyle6] (2077.02pt,3841.0897pt) ellipse (3pt and 3pt); - \node at (2086.02pt,3830.0557pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (2077.02pt,3860.1576pt) ellipse (3pt and 3pt); - \node at (2086.02pt,3849.1236pt)[below right,color=black]{toString()}; - \draw[pstyle1] (1502.1pt,2816.5399pt) arc (180:270:5pt) -- (1507.1pt,2811.5399pt) -- (1695.7182pt,2811.5399pt) arc (270:360:5pt) -- (1700.7182pt,2816.5399pt) -- (1700.7182pt,3178.6945pt) arc (0:90:5pt) -- (1695.7182pt,3183.6945pt) -- (1507.1pt,3183.6945pt) arc (90:180:5pt) -- (1502.1pt,3178.6945pt) -- cycle; - \draw[pstyle2] (1517.1pt,2827.5399pt) ellipse (11pt and 11pt); - \node at (1517.1pt,2827.5399pt)[]{\textbf{\Large C}}; - \node at (1531.1pt,2818.0059pt)[below right,color=black]{SentimentOfSentence}; - \draw[pstyle3] (1503.1pt,2843.5399pt) -- (1699.7182pt,2843.5399pt); - \draw[pstyle3] (1503.1pt,2851.5399pt) -- (1699.7182pt,2851.5399pt); - \draw[pstyle6] (1513.1pt,2866.5739pt) ellipse (3pt and 3pt); - \node at (1522.1pt,2855.5399pt)[below right,color=black]{getBegin()}; - \draw[pstyle6] (1513.1pt,2885.6418pt) ellipse (3pt and 3pt); - \node at (1522.1pt,2874.6078pt)[below right,color=black]{setBegin()}; - \draw[pstyle6] (1513.1pt,2904.7097pt) ellipse (3pt and 3pt); - \node at (1522.1pt,2893.6757pt)[below right,color=black]{getEnd()}; - \draw[pstyle6] (1513.1pt,2923.7776pt) ellipse (3pt and 3pt); - \node at (1522.1pt,2912.7436pt)[below right,color=black]{setEnd()}; - \draw[pstyle6] (1513.1pt,2942.8455pt) ellipse (3pt and 3pt); - \node at (1522.1pt,2931.8116pt)[below right,color=black]{getText()}; - \draw[pstyle6] (1513.1pt,2961.9134pt) ellipse (3pt and 3pt); - \node at (1522.1pt,2950.8795pt)[below right,color=black]{setText()}; - \draw[pstyle6] (1513.1pt,2980.9814pt) ellipse (3pt and 3pt); - \node at (1522.1pt,2969.9474pt)[below right,color=black]{getSentiment()}; - \draw[pstyle6] (1513.1pt,3000.0493pt) ellipse (3pt and 3pt); - \node at (1522.1pt,2989.0153pt)[below right,color=black]{setSentiment()}; - \draw[pstyle6] (1513.1pt,3019.1172pt) ellipse (3pt and 3pt); - \node at (1522.1pt,3008.0832pt)[below right,color=black]{getNegative()}; - \draw[pstyle6] (1513.1pt,3038.1851pt) ellipse (3pt and 3pt); - \node at (1522.1pt,3027.1512pt)[below right,color=black]{setNegative()}; - \draw[pstyle6] (1513.1pt,3057.253pt) ellipse (3pt and 3pt); - \node at (1522.1pt,3046.2191pt)[below right,color=black]{getNeutral()}; - \draw[pstyle6] (1513.1pt,3076.3209pt) ellipse (3pt and 3pt); - \node at (1522.1pt,3065.287pt)[below right,color=black]{setNeutral()}; - \draw[pstyle6] (1513.1pt,3095.3889pt) ellipse (3pt and 3pt); - \node at (1522.1pt,3084.3549pt)[below right,color=black]{getPositive()}; - \draw[pstyle6] (1513.1pt,3114.4568pt) ellipse (3pt and 3pt); - \node at (1522.1pt,3103.4228pt)[below right,color=black]{setPositive()}; - \draw[pstyle6] (1513.1pt,3133.5247pt) ellipse (3pt and 3pt); - \node at (1522.1pt,3122.4907pt)[below right,color=black]{equals()}; - \draw[pstyle6] (1513.1pt,3152.5926pt) ellipse (3pt and 3pt); - \node at (1522.1pt,3141.5587pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (1513.1pt,3171.6605pt) ellipse (3pt and 3pt); - \node at (1522.1pt,3160.6266pt)[below right,color=black]{toString()}; - \draw[pstyle1] (622.7pt,3590.8499pt) arc (180:270:5pt) -- (627.7pt,3585.8499pt) -- (799.1205pt,3585.8499pt) arc (270:360:5pt) -- (804.1205pt,3590.8499pt) -- (804.1205pt,4029.2762pt) arc (0:90:5pt) -- (799.1205pt,4034.2762pt) -- (627.7pt,4034.2762pt) arc (90:180:5pt) -- (622.7pt,4029.2762pt) -- cycle; - \draw[pstyle2] (646.8963pt,3601.8499pt) ellipse (11pt and 11pt); - \node at (646.8963pt,3601.8499pt)[]{\textbf{\Large C}}; - \node at (662.9399pt,3592.3159pt)[below right,color=black]{SpeechMetaData}; - \draw[pstyle3] (623.7pt,3617.8499pt) -- (803.1205pt,3617.8499pt); - \draw[pstyle3] (623.7pt,3625.8499pt) -- (803.1205pt,3625.8499pt); - \draw[pstyle6] (633.7pt,3640.8839pt) ellipse (3pt and 3pt); - \node at (642.7pt,3629.8499pt)[below right,color=black]{getSpeechKey()}; - \draw[pstyle6] (633.7pt,3659.9518pt) ellipse (3pt and 3pt); - \node at (642.7pt,3648.9178pt)[below right,color=black]{setSpeechKey()}; - \draw[pstyle6] (633.7pt,3679.0197pt) ellipse (3pt and 3pt); - \node at (642.7pt,3667.9857pt)[below right,color=black]{getSpeechId()}; - \draw[pstyle6] (633.7pt,3698.0876pt) ellipse (3pt and 3pt); - \node at (642.7pt,3687.0536pt)[below right,color=black]{setSpeechId()}; - \draw[pstyle6] (633.7pt,3717.1555pt) ellipse (3pt and 3pt); - \node at (642.7pt,3706.1216pt)[below right,color=black]{getSpeakerId()}; - \draw[pstyle6] (633.7pt,3736.2234pt) ellipse (3pt and 3pt); - \node at (642.7pt,3725.1895pt)[below right,color=black]{setSpeakerId()}; - \draw[pstyle6] (633.7pt,3755.2914pt) ellipse (3pt and 3pt); - \node at (642.7pt,3744.2574pt)[below right,color=black]{getSpeakerName()}; - \draw[pstyle6] (633.7pt,3774.3593pt) ellipse (3pt and 3pt); - \node at (642.7pt,3763.3253pt)[below right,color=black]{setSpeakerName()}; - \draw[pstyle6] (633.7pt,3793.4272pt) ellipse (3pt and 3pt); - \node at (642.7pt,3782.3932pt)[below right,color=black]{getFraktion()}; - \draw[pstyle6] (633.7pt,3812.4951pt) ellipse (3pt and 3pt); - \node at (642.7pt,3801.4612pt)[below right,color=black]{setFraktion()}; - \draw[pstyle6] (633.7pt,3831.563pt) ellipse (3pt and 3pt); - \node at (642.7pt,3820.5291pt)[below right,color=black]{getSessionId()}; - \draw[pstyle6] (633.7pt,3850.6309pt) ellipse (3pt and 3pt); - \node at (642.7pt,3839.597pt)[below right,color=black]{setSessionId()}; - \draw[pstyle6] (633.7pt,3869.6989pt) ellipse (3pt and 3pt); - \node at (642.7pt,3858.6649pt)[below right,color=black]{getDateTime()}; - \draw[pstyle6] (633.7pt,3888.7668pt) ellipse (3pt and 3pt); - \node at (642.7pt,3877.7328pt)[below right,color=black]{setDateTime()}; - \draw[pstyle6] (633.7pt,3907.8347pt) ellipse (3pt and 3pt); - \node at (642.7pt,3896.8007pt)[below right,color=black]{getDateTimeString()}; - \draw[pstyle6] (633.7pt,3926.9026pt) ellipse (3pt and 3pt); - \node at (642.7pt,3915.8687pt)[below right,color=black]{setDateTimeString()}; - \draw[pstyle6] (633.7pt,3945.9705pt) ellipse (3pt and 3pt); - \node at (642.7pt,3934.9366pt)[below right,color=black]{getAgendaTitle()}; - \draw[pstyle6] (633.7pt,3965.0384pt) ellipse (3pt and 3pt); - \node at (642.7pt,3954.0045pt)[below right,color=black]{setAgendaTitle()}; - \draw[pstyle6] (633.7pt,3984.1064pt) ellipse (3pt and 3pt); - \node at (642.7pt,3973.0724pt)[below right,color=black]{equals()}; - \draw[pstyle6] (633.7pt,4003.1743pt) ellipse (3pt and 3pt); - \node at (642.7pt,3992.1403pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (633.7pt,4022.2422pt) ellipse (3pt and 3pt); - \node at (642.7pt,4011.2082pt)[below right,color=black]{toString()}; - \draw[pstyle1] (839.23pt,3657.5899pt) arc (180:270:5pt) -- (844.23pt,3652.5899pt) -- (994.5859pt,3652.5899pt) arc (270:360:5pt) -- (999.5859pt,3657.5899pt) -- (999.5859pt,3962.5407pt) arc (0:90:5pt) -- (994.5859pt,3967.5407pt) -- (844.23pt,3967.5407pt) arc (90:180:5pt) -- (839.23pt,3962.5407pt) -- cycle; - \draw[pstyle2] (887.9346pt,3668.5899pt) ellipse (11pt and 11pt); - \node at (887.9346pt,3668.5899pt)[]{\textbf{\Large C}}; - \node at (908.4346pt,3659.0559pt)[below right,color=black]{Speech}; - \draw[pstyle3] (840.23pt,3684.5899pt) -- (998.5859pt,3684.5899pt); - \draw[pstyle3] (840.23pt,3692.5899pt) -- (998.5859pt,3692.5899pt); - \draw[pstyle6] (850.23pt,3707.6239pt) ellipse (3pt and 3pt); - \node at (859.23pt,3696.5899pt)[below right,color=black]{getId()}; - \draw[pstyle6] (850.23pt,3726.6918pt) ellipse (3pt and 3pt); - \node at (859.23pt,3715.6578pt)[below right,color=black]{setId()}; - \draw[pstyle6] (850.23pt,3745.7597pt) ellipse (3pt and 3pt); - \node at (859.23pt,3734.7257pt)[below right,color=black]{getText()}; - \draw[pstyle6] (850.23pt,3764.8276pt) ellipse (3pt and 3pt); - \node at (859.23pt,3753.7936pt)[below right,color=black]{setText()}; - \draw[pstyle6] (850.23pt,3783.8955pt) ellipse (3pt and 3pt); - \node at (859.23pt,3772.8616pt)[below right,color=black]{getSpeakerId()}; - \draw[pstyle6] (850.23pt,3802.9634pt) ellipse (3pt and 3pt); - \node at (859.23pt,3791.9295pt)[below right,color=black]{setSpeakerId()}; - \draw[pstyle6] (850.23pt,3822.0314pt) ellipse (3pt and 3pt); - \node at (859.23pt,3810.9974pt)[below right,color=black]{getProtocol()}; - \draw[pstyle6] (850.23pt,3841.0993pt) ellipse (3pt and 3pt); - \node at (859.23pt,3830.0653pt)[below right,color=black]{setProtocol()}; - \draw[pstyle6] (850.23pt,3860.1672pt) ellipse (3pt and 3pt); - \node at (859.23pt,3849.1332pt)[below right,color=black]{setTextContents()}; - \draw[pstyle6] (850.23pt,3879.2351pt) ellipse (3pt and 3pt); - \node at (859.23pt,3868.2012pt)[below right,color=black]{getAgenda()}; - \draw[pstyle6] (850.23pt,3898.303pt) ellipse (3pt and 3pt); - \node at (859.23pt,3887.2691pt)[below right,color=black]{setAgenda()}; - \draw[pstyle6] (850.23pt,3917.3709pt) ellipse (3pt and 3pt); - \node at (859.23pt,3906.337pt)[below right,color=black]{equals()}; - \draw[pstyle6] (850.23pt,3936.4389pt) ellipse (3pt and 3pt); - \node at (859.23pt,3925.4049pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (850.23pt,3955.5068pt) ellipse (3pt and 3pt); - \node at (859.23pt,3944.4728pt)[below right,color=black]{toString()}; - \draw[pstyle1] (317.27pt,3705.2599pt) arc (180:270:5pt) -- (322.27pt,3700.2599pt) -- (424.5408pt,3700.2599pt) arc (270:360:5pt) -- (429.5408pt,3705.2599pt) -- (429.5408pt,3914.8712pt) arc (0:90:5pt) -- (424.5408pt,3919.8712pt) -- (322.27pt,3919.8712pt) arc (90:180:5pt) -- (317.27pt,3914.8712pt) -- cycle; - \draw[pstyle2] (342.1017pt,3716.2599pt) ellipse (11pt and 11pt); - \node at (342.1017pt,3716.2599pt)[]{\textbf{\Large C}}; - \node at (358.2865pt,3706.7259pt)[below right,color=black]{Agenda}; - \draw[pstyle3] (318.27pt,3732.2599pt) -- (428.5408pt,3732.2599pt); - \draw[pstyle3] (318.27pt,3740.2599pt) -- (428.5408pt,3740.2599pt); - \draw[pstyle6] (328.27pt,3755.2939pt) ellipse (3pt and 3pt); - \node at (337.27pt,3744.2599pt)[below right,color=black]{getIndex()}; - \draw[pstyle6] (328.27pt,3774.3618pt) ellipse (3pt and 3pt); - \node at (337.27pt,3763.3278pt)[below right,color=black]{setIndex()}; - \draw[pstyle6] (328.27pt,3793.4297pt) ellipse (3pt and 3pt); - \node at (337.27pt,3782.3957pt)[below right,color=black]{getId()}; - \draw[pstyle6] (328.27pt,3812.4976pt) ellipse (3pt and 3pt); - \node at (337.27pt,3801.4636pt)[below right,color=black]{setId()}; - \draw[pstyle6] (328.27pt,3831.5655pt) ellipse (3pt and 3pt); - \node at (337.27pt,3820.5316pt)[below right,color=black]{getTitle()}; - \draw[pstyle6] (328.27pt,3850.6334pt) ellipse (3pt and 3pt); - \node at (337.27pt,3839.5995pt)[below right,color=black]{setTitle()}; - \draw[pstyle6] (328.27pt,3869.7014pt) ellipse (3pt and 3pt); - \node at (337.27pt,3858.6674pt)[below right,color=black]{equals()}; - \draw[pstyle6] (328.27pt,3888.7693pt) ellipse (3pt and 3pt); - \node at (337.27pt,3877.7353pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (328.27pt,3907.8372pt) ellipse (3pt and 3pt); - \node at (337.27pt,3896.8032pt)[below right,color=black]{toString()}; - \draw[pstyle1] (465.02pt,3686.1899pt) arc (180:270:5pt) -- (470.02pt,3681.1899pt) -- (582.8068pt,3681.1899pt) arc (270:360:5pt) -- (587.8068pt,3686.1899pt) -- (587.8068pt,3933.937pt) arc (0:90:5pt) -- (582.8068pt,3938.937pt) -- (470.02pt,3938.937pt) arc (90:180:5pt) -- (465.02pt,3933.937pt) -- cycle; - \draw[pstyle2] (487.1861pt,3697.1899pt) ellipse (11pt and 11pt); - \node at (487.1861pt,3697.1899pt)[]{\textbf{\Large C}}; - \node at (502.7786pt,3687.6559pt)[below right,color=black]{Comment}; - \draw[pstyle3] (466.02pt,3713.1899pt) -- (586.8068pt,3713.1899pt); - \draw[pstyle3] (466.02pt,3721.1899pt) -- (586.8068pt,3721.1899pt); - \draw[pstyle6] (476.02pt,3736.2239pt) ellipse (3pt and 3pt); - \node at (485.02pt,3725.1899pt)[below right,color=black]{getId()}; - \draw[pstyle6] (476.02pt,3755.2918pt) ellipse (3pt and 3pt); - \node at (485.02pt,3744.2578pt)[below right,color=black]{setId()}; - \draw[pstyle6] (476.02pt,3774.3597pt) ellipse (3pt and 3pt); - \node at (485.02pt,3763.3257pt)[below right,color=black]{getText()}; - \draw[pstyle6] (476.02pt,3793.4276pt) ellipse (3pt and 3pt); - \node at (485.02pt,3782.3936pt)[below right,color=black]{setText()}; - \draw[pstyle6] (476.02pt,3812.4955pt) ellipse (3pt and 3pt); - \node at (485.02pt,3801.4616pt)[below right,color=black]{getSpeaker()}; - \draw[pstyle6] (476.02pt,3831.5634pt) ellipse (3pt and 3pt); - \node at (485.02pt,3820.5295pt)[below right,color=black]{setSpeaker()}; - \draw[pstyle6] (476.02pt,3850.6314pt) ellipse (3pt and 3pt); - \node at (485.02pt,3839.5974pt)[below right,color=black]{getSpeech()}; - \draw[pstyle6] (476.02pt,3869.6993pt) ellipse (3pt and 3pt); - \node at (485.02pt,3858.6653pt)[below right,color=black]{setSpeech()}; - \draw[pstyle6] (476.02pt,3888.7672pt) ellipse (3pt and 3pt); - \node at (485.02pt,3877.7332pt)[below right,color=black]{equals()}; - \draw[pstyle6] (476.02pt,3907.8351pt) ellipse (3pt and 3pt); - \node at (485.02pt,3896.8012pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (476.02pt,3926.903pt) ellipse (3pt and 3pt); - \node at (485.02pt,3915.8691pt)[below right,color=black]{toString()}; - \draw[pstyle1] (317.14pt,4223.2199pt) arc (180:270:5pt) -- (322.14pt,4218.2199pt) -- (448.6886pt,4218.2199pt) arc (270:360:5pt) -- (453.6886pt,4223.2199pt) -- (453.6886pt,4585.3745pt) arc (0:90:5pt) -- (448.6886pt,4590.3745pt) -- (322.14pt,4590.3745pt) arc (90:180:5pt) -- (317.14pt,4585.3745pt) -- cycle; - \draw[pstyle2] (350.2677pt,4234.2199pt) ellipse (11pt and 11pt); - \node at (350.2677pt,4234.2199pt)[]{\textbf{\Large C}}; - \node at (368.296pt,4224.6859pt)[below right,color=black]{Protocol}; - \draw[pstyle3] (318.14pt,4250.2199pt) -- (452.6886pt,4250.2199pt); - \draw[pstyle3] (318.14pt,4258.2199pt) -- (452.6886pt,4258.2199pt); - \draw[pstyle6] (328.14pt,4273.2539pt) ellipse (3pt and 3pt); - \node at (337.14pt,4262.2199pt)[below right,color=black]{getDate()}; - \draw[pstyle6] (328.14pt,4292.3218pt) ellipse (3pt and 3pt); - \node at (337.14pt,4281.2878pt)[below right,color=black]{setDate()}; - \draw[pstyle6] (328.14pt,4311.3897pt) ellipse (3pt and 3pt); - \node at (337.14pt,4300.3557pt)[below right,color=black]{getStartTime()}; - \draw[pstyle6] (328.14pt,4330.4576pt) ellipse (3pt and 3pt); - \node at (337.14pt,4319.4236pt)[below right,color=black]{setStartTime()}; - \draw[pstyle6] (328.14pt,4349.5255pt) ellipse (3pt and 3pt); - \node at (337.14pt,4338.4916pt)[below right,color=black]{getEndTime()}; - \draw[pstyle6] (328.14pt,4368.5934pt) ellipse (3pt and 3pt); - \node at (337.14pt,4357.5595pt)[below right,color=black]{setEndTime()}; - \draw[pstyle6] (328.14pt,4387.6614pt) ellipse (3pt and 3pt); - \node at (337.14pt,4376.6274pt)[below right,color=black]{getIndex()}; - \draw[pstyle6] (328.14pt,4406.7293pt) ellipse (3pt and 3pt); - \node at (337.14pt,4395.6953pt)[below right,color=black]{setIndex()}; - \draw[pstyle6] (328.14pt,4425.7972pt) ellipse (3pt and 3pt); - \node at (337.14pt,4414.7632pt)[below right,color=black]{getTitel()}; - \draw[pstyle6] (328.14pt,4444.8651pt) ellipse (3pt and 3pt); - \node at (337.14pt,4433.8312pt)[below right,color=black]{setTitel()}; - \draw[pstyle6] (328.14pt,4463.933pt) ellipse (3pt and 3pt); - \node at (337.14pt,4452.8991pt)[below right,color=black]{getPlace()}; - \draw[pstyle6] (328.14pt,4483.0009pt) ellipse (3pt and 3pt); - \node at (337.14pt,4471.967pt)[below right,color=black]{setPlace()}; - \draw[pstyle6] (328.14pt,4502.0689pt) ellipse (3pt and 3pt); - \node at (337.14pt,4491.0349pt)[below right,color=black]{getWp()}; - \draw[pstyle6] (328.14pt,4521.1368pt) ellipse (3pt and 3pt); - \node at (337.14pt,4510.1028pt)[below right,color=black]{setWp()}; - \draw[pstyle6] (328.14pt,4540.2047pt) ellipse (3pt and 3pt); - \node at (337.14pt,4529.1707pt)[below right,color=black]{equals()}; - \draw[pstyle6] (328.14pt,4559.2726pt) ellipse (3pt and 3pt); - \node at (337.14pt,4548.2387pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (328.14pt,4578.3405pt) ellipse (3pt and 3pt); - \node at (337.14pt,4567.3066pt)[below right,color=black]{toString()}; - \draw[pstyle1] (489.06pt,4280.4199pt) arc (180:270:5pt) -- (494.06pt,4275.4199pt) -- (622.767pt,4275.4199pt) arc (270:360:5pt) -- (627.767pt,4280.4199pt) -- (627.767pt,4528.167pt) arc (0:90:5pt) -- (622.767pt,4533.167pt) -- (494.06pt,4533.167pt) arc (90:180:5pt) -- (489.06pt,4528.167pt) -- cycle; - \draw[pstyle2] (509.7363pt,4291.4199pt) ellipse (11pt and 11pt); - \node at (509.7363pt,4291.4199pt)[]{\textbf{\Large C}}; - \node at (524.9978pt,4281.8859pt)[below right,color=black]{TextContent}; - \draw[pstyle3] (490.06pt,4307.4199pt) -- (626.767pt,4307.4199pt); - \draw[pstyle3] (490.06pt,4315.4199pt) -- (626.767pt,4315.4199pt); - \draw[pstyle6] (500.06pt,4330.4539pt) ellipse (3pt and 3pt); - \node at (509.06pt,4319.4199pt)[below right,color=black]{getId()}; - \draw[pstyle6] (500.06pt,4349.5218pt) ellipse (3pt and 3pt); - \node at (509.06pt,4338.4878pt)[below right,color=black]{setId()}; - \draw[pstyle6] (500.06pt,4368.5897pt) ellipse (3pt and 3pt); - \node at (509.06pt,4357.5557pt)[below right,color=black]{getSpeakerId()}; - \draw[pstyle6] (500.06pt,4387.6576pt) ellipse (3pt and 3pt); - \node at (509.06pt,4376.6236pt)[below right,color=black]{setSpeakerId()}; - \draw[pstyle6] (500.06pt,4406.7255pt) ellipse (3pt and 3pt); - \node at (509.06pt,4395.6916pt)[below right,color=black]{getText()}; - \draw[pstyle6] (500.06pt,4425.7934pt) ellipse (3pt and 3pt); - \node at (509.06pt,4414.7595pt)[below right,color=black]{setText()}; - \draw[pstyle6] (500.06pt,4444.8614pt) ellipse (3pt and 3pt); - \node at (509.06pt,4433.8274pt)[below right,color=black]{getType()}; - \draw[pstyle6] (500.06pt,4463.9293pt) ellipse (3pt and 3pt); - \node at (509.06pt,4452.8953pt)[below right,color=black]{setType()}; - \draw[pstyle6] (500.06pt,4482.9972pt) ellipse (3pt and 3pt); - \node at (509.06pt,4471.9632pt)[below right,color=black]{equals()}; - \draw[pstyle6] (500.06pt,4502.0651pt) ellipse (3pt and 3pt); - \node at (509.06pt,4491.0312pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (500.06pt,4521.133pt) ellipse (3pt and 3pt); - \node at (509.06pt,4510.0991pt)[below right,color=black]{toString()}; - \draw[pstyle1] (3759.43pt,2635.3899pt) arc (180:270:5pt) -- (3764.43pt,2630.3899pt) -- (4042.3907pt,2630.3899pt) arc (270:360:5pt) -- (4047.3907pt,2635.3899pt) -- (4047.3907pt,3359.8349pt) arc (0:90:5pt) -- (4042.3907pt,3364.8349pt) -- (3764.43pt,3364.8349pt) arc (90:180:5pt) -- (3759.43pt,3359.8349pt) -- cycle; - \draw[pstyle2] (3816.6383pt,2646.3899pt) ellipse (11pt and 11pt); - \node at (3816.6383pt,2646.3899pt)[]{\textbf{\Large C}}; - \node at (3837.1383pt,2636.8559pt)[below right,color=black]{BiografischeAngaben}; - \draw[pstyle3] (3760.43pt,2662.3899pt) -- (4046.3907pt,2662.3899pt); - \draw[pstyle5] (3767.43pt,2674.4239pt) rectangle (3773.43pt,2680.4239pt); - \node at (3779.43pt,2666.3899pt)[below right,color=black]{geburtsdatum}; - \draw[pstyle5] (3767.43pt,2693.4918pt) rectangle (3773.43pt,2699.4918pt); - \node at (3779.43pt,2685.4578pt)[below right,color=black]{geburtsort}; - \draw[pstyle5] (3767.43pt,2712.5597pt) rectangle (3773.43pt,2718.5597pt); - \node at (3779.43pt,2704.5257pt)[below right,color=black]{geburtsland}; - \draw[pstyle5] (3767.43pt,2731.6276pt) rectangle (3773.43pt,2737.6276pt); - \node at (3779.43pt,2723.5936pt)[below right,color=black]{sterbedatum}; - \draw[pstyle5] (3767.43pt,2750.6955pt) rectangle (3773.43pt,2756.6955pt); - \node at (3779.43pt,2742.6616pt)[below right,color=black]{gender}; - \draw[pstyle5] (3767.43pt,2769.7634pt) rectangle (3773.43pt,2775.7634pt); - \node at (3779.43pt,2761.7295pt)[below right,color=black]{vorkommen...}; - \draw[pstyle5] (3767.43pt,2788.8314pt) rectangle (3773.43pt,2794.8314pt); - \node at (3779.43pt,2780.7974pt)[below right,color=black]{religion}; - \draw[pstyle5] (3767.43pt,2807.8993pt) rectangle (3773.43pt,2813.8993pt); - \node at (3779.43pt,2799.8653pt)[below right,color=black]{beruf}; - \draw[pstyle5] (3767.43pt,2826.9672pt) rectangle (3773.43pt,2832.9672pt); - \node at (3779.43pt,2818.9332pt)[below right,color=black]{parteiKuerzel}; - \draw[pstyle5] (3767.43pt,2846.0351pt) rectangle (3773.43pt,2852.0351pt); - \node at (3779.43pt,2838.0012pt)[below right,color=black]{vitaKurz}; - \draw[pstyle5] (3767.43pt,2865.103pt) rectangle (3773.43pt,2871.103pt); - \node at (3779.43pt,2857.0691pt)[below right,color=black]{veroeffentlichungspflichtiges}; - \draw[pstyle3] (3760.43pt,2880.137pt) -- (4046.3907pt,2880.137pt); - \draw[pstyle6] (3770.43pt,2895.1709pt) ellipse (3pt and 3pt); - \node at (3779.43pt,2884.137pt)[below right,color=black]{getGeburtsdatum()}; - \draw[pstyle6] (3770.43pt,2914.2389pt) ellipse (3pt and 3pt); - \node at (3779.43pt,2903.2049pt)[below right,color=black]{setGeburtsdatum()}; - \draw[pstyle6] (3770.43pt,2933.3068pt) ellipse (3pt and 3pt); - \node at (3779.43pt,2922.2728pt)[below right,color=black]{getGeburtsort()}; - \draw[pstyle6] (3770.43pt,2952.3747pt) ellipse (3pt and 3pt); - \node at (3779.43pt,2941.3407pt)[below right,color=black]{setGeburtsort()}; - \draw[pstyle6] (3770.43pt,2971.4426pt) ellipse (3pt and 3pt); - \node at (3779.43pt,2960.4087pt)[below right,color=black]{getGeburtsland()}; - \draw[pstyle6] (3770.43pt,2990.5105pt) ellipse (3pt and 3pt); - \node at (3779.43pt,2979.4766pt)[below right,color=black]{setGeburtsland()}; - \draw[pstyle6] (3770.43pt,3009.5784pt) ellipse (3pt and 3pt); - \node at (3779.43pt,2998.5445pt)[below right,color=black]{getSterbedatum()}; - \draw[pstyle6] (3770.43pt,3028.6464pt) ellipse (3pt and 3pt); - \node at (3779.43pt,3017.6124pt)[below right,color=black]{setSterbedatum()}; - \draw[pstyle6] (3770.43pt,3047.7143pt) ellipse (3pt and 3pt); - \node at (3779.43pt,3036.6803pt)[below right,color=black]{getGender()}; - \draw[pstyle6] (3770.43pt,3066.7822pt) ellipse (3pt and 3pt); - \node at (3779.43pt,3055.7482pt)[below right,color=black]{setGender()}; - \draw[pstyle6] (3770.43pt,3085.8501pt) ellipse (3pt and 3pt); - \node at (3779.43pt,3074.8162pt)[below right,color=black]{getFamilienstand()}; - \draw[pstyle6] (3770.43pt,3104.918pt) ellipse (3pt and 3pt); - \node at (3779.43pt,3093.8841pt)[below right,color=black]{setFamilienstand()}; - \draw[pstyle6] (3770.43pt,3123.9859pt) ellipse (3pt and 3pt); - \node at (3779.43pt,3112.952pt)[below right,color=black]{getReligion()}; - \draw[pstyle6] (3770.43pt,3143.0539pt) ellipse (3pt and 3pt); - \node at (3779.43pt,3132.0199pt)[below right,color=black]{setReligion()}; - \draw[pstyle6] (3770.43pt,3162.1218pt) ellipse (3pt and 3pt); - \node at (3779.43pt,3151.0878pt)[below right,color=black]{getBeruf()}; - \draw[pstyle6] (3770.43pt,3181.1897pt) ellipse (3pt and 3pt); - \node at (3779.43pt,3170.1557pt)[below right,color=black]{setBeruf()}; - \draw[pstyle6] (3770.43pt,3200.2576pt) ellipse (3pt and 3pt); - \node at (3779.43pt,3189.2237pt)[below right,color=black]{getParteiKuerzel()}; - \draw[pstyle6] (3770.43pt,3219.3255pt) ellipse (3pt and 3pt); - \node at (3779.43pt,3208.2916pt)[below right,color=black]{setParteiKuerzel()}; - \draw[pstyle6] (3770.43pt,3238.3934pt) ellipse (3pt and 3pt); - \node at (3779.43pt,3227.3595pt)[below right,color=black]{getVitaKurz()}; - \draw[pstyle6] (3770.43pt,3257.4614pt) ellipse (3pt and 3pt); - \node at (3779.43pt,3246.4274pt)[below right,color=black]{setVitaKurz()}; - \draw[pstyle6] (3770.43pt,3276.5293pt) ellipse (3pt and 3pt); - \node at (3779.43pt,3265.4953pt)[below right,color=black]{getVeroeffentlichungspflichtiges()}; - \draw[pstyle6] (3770.43pt,3295.5972pt) ellipse (3pt and 3pt); - \node at (3779.43pt,3284.5632pt)[below right,color=black]{setVeroeffentlichungspflichtiges()}; - \draw[pstyle6] (3770.43pt,3314.6651pt) ellipse (3pt and 3pt); - \node at (3779.43pt,3303.6312pt)[below right,color=black]{equals()}; - \draw[pstyle6] (3770.43pt,3333.733pt) ellipse (3pt and 3pt); - \node at (3779.43pt,3322.6991pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (3770.43pt,3352.8009pt) ellipse (3pt and 3pt); - \node at (3779.43pt,3341.767pt)[below right,color=black]{toString()}; - \draw[pstyle1] (3181.77pt,2749.7999pt) arc (180:270:5pt) -- (3186.77pt,2744.7999pt) -- (3326.0418pt,2744.7999pt) arc (270:360:5pt) -- (3331.0418pt,2749.7999pt) -- (3331.0418pt,3245.4299pt) arc (0:90:5pt) -- (3326.0418pt,3250.4299pt) -- (3186.77pt,3250.4299pt) arc (90:180:5pt) -- (3181.77pt,3245.4299pt) -- cycle; - \draw[pstyle2] (3212.9113pt,2760.7999pt) ellipse (11pt and 11pt); - \node at (3212.9113pt,2760.7999pt)[]{\textbf{\Large C}}; - \node at (3230.4983pt,2751.2659pt)[below right,color=black]{Institution}; - \draw[pstyle3] (3182.77pt,2776.7999pt) -- (3330.0418pt,2776.7999pt); - \draw[pstyle5] (3189.77pt,2788.8339pt) rectangle (3195.77pt,2794.8339pt); - \node at (3201.77pt,2780.7999pt)[below right,color=black]{insartLang}; - \draw[pstyle5] (3189.77pt,2807.9018pt) rectangle (3195.77pt,2813.9018pt); - \node at (3201.77pt,2799.8678pt)[below right,color=black]{insLang}; - \draw[pstyle5] (3189.77pt,2826.9697pt) rectangle (3195.77pt,2832.9697pt); - \node at (3201.77pt,2818.9357pt)[below right,color=black]{mdbinsVon}; - \draw[pstyle5] (3189.77pt,2846.0376pt) rectangle (3195.77pt,2852.0376pt); - \node at (3201.77pt,2838.0036pt)[below right,color=black]{mdbinsBis}; - \draw[pstyle5] (3189.77pt,2865.1055pt) rectangle (3195.77pt,2871.1055pt); - \node at (3201.77pt,2857.0716pt)[below right,color=black]{fktLang}; - \draw[pstyle5] (3189.77pt,2884.1734pt) rectangle (3195.77pt,2890.1734pt); - \node at (3201.77pt,2876.1395pt)[below right,color=black]{fktinsVon}; - \draw[pstyle5] (3189.77pt,2903.2414pt) rectangle (3195.77pt,2909.2414pt); - \node at (3201.77pt,2895.2074pt)[below right,color=black]{fktinsBis}; - \draw[pstyle3] (3182.77pt,2918.2753pt) -- (3330.0418pt,2918.2753pt); - \draw[pstyle6] (3192.77pt,2933.3093pt) ellipse (3pt and 3pt); - \node at (3201.77pt,2922.2753pt)[below right,color=black]{getInsartLang()}; - \draw[pstyle6] (3192.77pt,2952.3772pt) ellipse (3pt and 3pt); - \node at (3201.77pt,2941.3432pt)[below right,color=black]{setInsartLang()}; - \draw[pstyle6] (3192.77pt,2971.4451pt) ellipse (3pt and 3pt); - \node at (3201.77pt,2960.4112pt)[below right,color=black]{getInsLang()}; - \draw[pstyle6] (3192.77pt,2990.513pt) ellipse (3pt and 3pt); - \node at (3201.77pt,2979.4791pt)[below right,color=black]{setInsLang()}; - \draw[pstyle6] (3192.77pt,3009.5809pt) ellipse (3pt and 3pt); - \node at (3201.77pt,2998.547pt)[below right,color=black]{getMdbinsVon()}; - \draw[pstyle6] (3192.77pt,3028.6489pt) ellipse (3pt and 3pt); - \node at (3201.77pt,3017.6149pt)[below right,color=black]{setMdbinsVon()}; - \draw[pstyle6] (3192.77pt,3047.7168pt) ellipse (3pt and 3pt); - \node at (3201.77pt,3036.6828pt)[below right,color=black]{getMdbinsBis()}; - \draw[pstyle6] (3192.77pt,3066.7847pt) ellipse (3pt and 3pt); - \node at (3201.77pt,3055.7507pt)[below right,color=black]{setMdbinsBis()}; - \draw[pstyle6] (3192.77pt,3085.8526pt) ellipse (3pt and 3pt); - \node at (3201.77pt,3074.8187pt)[below right,color=black]{getFktLang()}; - \draw[pstyle6] (3192.77pt,3104.9205pt) ellipse (3pt and 3pt); - \node at (3201.77pt,3093.8866pt)[below right,color=black]{setFktLang()}; - \draw[pstyle6] (3192.77pt,3123.9884pt) ellipse (3pt and 3pt); - \node at (3201.77pt,3112.9545pt)[below right,color=black]{getFktinsVon()}; - \draw[pstyle6] (3192.77pt,3143.0564pt) ellipse (3pt and 3pt); - \node at (3201.77pt,3132.0224pt)[below right,color=black]{setFktinsVon()}; - \draw[pstyle6] (3192.77pt,3162.1243pt) ellipse (3pt and 3pt); - \node at (3201.77pt,3151.0903pt)[below right,color=black]{getFktinsBis()}; - \draw[pstyle6] (3192.77pt,3181.1922pt) ellipse (3pt and 3pt); - \node at (3201.77pt,3170.1582pt)[below right,color=black]{setFktinsBis()}; - \draw[pstyle6] (3192.77pt,3200.2601pt) ellipse (3pt and 3pt); - \node at (3201.77pt,3189.2262pt)[below right,color=black]{equals()}; - \draw[pstyle6] (3192.77pt,3219.328pt) ellipse (3pt and 3pt); - \node at (3201.77pt,3208.2941pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (3192.77pt,3238.3959pt) ellipse (3pt and 3pt); - \node at (3201.77pt,3227.362pt)[below right,color=black]{toString()}; - \draw[pstyle1] (2987.66pt,2702.1299pt) arc (180:270:5pt) -- (2992.66pt,2697.1299pt) -- (3142.1558pt,2697.1299pt) arc (270:360:5pt) -- (3147.1558pt,2702.1299pt) -- (3147.1558pt,3293.0995pt) arc (0:90:5pt) -- (3142.1558pt,3298.0995pt) -- (2992.66pt,3298.0995pt) arc (90:180:5pt) -- (2987.66pt,3293.0995pt) -- cycle; - \draw[pstyle2] (3014.6022pt,2713.1299pt) ellipse (11pt and 11pt); - \node at (3014.6022pt,2713.1299pt)[]{\textbf{\Large C}}; - \node at (3031.256pt,2703.5959pt)[below right,color=black]{Wahlperiode}; - \draw[pstyle3] (2988.66pt,2729.1299pt) -- (3146.1558pt,2729.1299pt); - \draw[pstyle5] (2995.66pt,2741.1639pt) rectangle (3001.66pt,2747.1639pt); - \node at (3007.66pt,2733.1299pt)[below right,color=black]{wp}; - \draw[pstyle5] (2995.66pt,2760.2318pt) rectangle (3001.66pt,2766.2318pt); - \node at (3007.66pt,2752.1978pt)[below right,color=black]{mdbWpVon}; - \draw[pstyle5] (2995.66pt,2779.2997pt) rectangle (3001.66pt,2785.2997pt); - \node at (3007.66pt,2771.2657pt)[below right,color=black]{mdbWpBis}; - \draw[pstyle5] (2995.66pt,2798.3676pt) rectangle (3001.66pt,2804.3676pt); - \node at (3007.66pt,2790.3336pt)[below right,color=black]{leer}; - \draw[pstyle5] (2995.66pt,2817.4355pt) rectangle (3001.66pt,2823.4355pt); - \node at (3007.66pt,2809.4016pt)[below right,color=black]{wkrName}; - \draw[pstyle5] (2995.66pt,2836.5034pt) rectangle (3001.66pt,2842.5034pt); - \node at (3007.66pt,2828.4695pt)[below right,color=black]{wkrLand}; - \draw[pstyle5] (2995.66pt,2855.5714pt) rectangle (3001.66pt,2861.5714pt); - \node at (3007.66pt,2847.5374pt)[below right,color=black]{liste}; - \draw[pstyle5] (2995.66pt,2874.6393pt) rectangle (3001.66pt,2880.6393pt); - \node at (3007.66pt,2866.6053pt)[below right,color=black]{mandatsart}; - \draw[pstyle5] (2995.66pt,2893.7072pt) rectangle (3001.66pt,2899.7072pt); - \node at (3007.66pt,2885.6732pt)[below right,color=black]{institutionen}; - \draw[pstyle3] (2988.66pt,2908.7412pt) -- (3146.1558pt,2908.7412pt); - \draw[pstyle6] (2998.66pt,2923.7751pt) ellipse (3pt and 3pt); - \node at (3007.66pt,2912.7412pt)[below right,color=black]{getWp()}; - \draw[pstyle6] (2998.66pt,2942.843pt) ellipse (3pt and 3pt); - \node at (3007.66pt,2931.8091pt)[below right,color=black]{setWp()}; - \draw[pstyle6] (2998.66pt,2961.9109pt) ellipse (3pt and 3pt); - \node at (3007.66pt,2950.877pt)[below right,color=black]{getMdbWpVon()}; - \draw[pstyle6] (2998.66pt,2980.9789pt) ellipse (3pt and 3pt); - \node at (3007.66pt,2969.9449pt)[below right,color=black]{setMdbWpVon()}; - \draw[pstyle6] (2998.66pt,3000.0468pt) ellipse (3pt and 3pt); - \node at (3007.66pt,2989.0128pt)[below right,color=black]{getMdbWpBis()}; - \draw[pstyle6] (2998.66pt,3019.1147pt) ellipse (3pt and 3pt); - \node at (3007.66pt,3008.0807pt)[below right,color=black]{setMdbWpBis()}; - \draw[pstyle6] (2998.66pt,3038.1826pt) ellipse (3pt and 3pt); - \node at (3007.66pt,3027.1487pt)[below right,color=black]{getWknNr()}; - \draw[pstyle6] (2998.66pt,3057.2505pt) ellipse (3pt and 3pt); - \node at (3007.66pt,3046.2166pt)[below right,color=black]{setWknNr()}; - \draw[pstyle6] (2998.66pt,3076.3184pt) ellipse (3pt and 3pt); - \node at (3007.66pt,3065.2845pt)[below right,color=black]{getWkrName()}; - \draw[pstyle6] (2998.66pt,3095.3864pt) ellipse (3pt and 3pt); - \node at (3007.66pt,3084.3524pt)[below right,color=black]{setWkrName()}; - \draw[pstyle6] (2998.66pt,3114.4543pt) ellipse (3pt and 3pt); - \node at (3007.66pt,3103.4203pt)[below right,color=black]{getWkrLand()}; - \draw[pstyle6] (2998.66pt,3133.5222pt) ellipse (3pt and 3pt); - \node at (3007.66pt,3122.4882pt)[below right,color=black]{setWkrLand()}; - \draw[pstyle6] (2998.66pt,3152.5901pt) ellipse (3pt and 3pt); - \node at (3007.66pt,3141.5562pt)[below right,color=black]{getListe()}; - \draw[pstyle6] (2998.66pt,3171.658pt) ellipse (3pt and 3pt); - \node at (3007.66pt,3160.6241pt)[below right,color=black]{setListe()}; - \draw[pstyle6] (2998.66pt,3190.7259pt) ellipse (3pt and 3pt); - \node at (3007.66pt,3179.692pt)[below right,color=black]{getMandatsart()}; - \draw[pstyle6] (2998.66pt,3209.7939pt) ellipse (3pt and 3pt); - \node at (3007.66pt,3198.7599pt)[below right,color=black]{setMandatsart()}; - \draw[pstyle6] (2998.66pt,3228.8618pt) ellipse (3pt and 3pt); - \node at (3007.66pt,3217.8278pt)[below right,color=black]{setInstitutionen()}; - \draw[pstyle6] (2998.66pt,3247.9297pt) ellipse (3pt and 3pt); - \node at (3007.66pt,3236.8957pt)[below right,color=black]{equals()}; - \draw[pstyle6] (2998.66pt,3266.9976pt) ellipse (3pt and 3pt); - \node at (3007.66pt,3255.9637pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (2998.66pt,3286.0655pt) ellipse (3pt and 3pt); - \node at (3007.66pt,3275.0316pt)[below right,color=black]{toString()}; - \draw[pstyle1] (3365.85pt,2692.5999pt) arc (180:270:5pt) -- (3370.85pt,2687.5999pt) -- (3513.968pt,2687.5999pt) arc (270:360:5pt) -- (3518.968pt,2692.5999pt) -- (3518.968pt,3302.6374pt) arc (0:90:5pt) -- (3513.968pt,3307.6374pt) -- (3370.85pt,3307.6374pt) arc (90:180:5pt) -- (3365.85pt,3302.6374pt) -- cycle; - \draw[pstyle2] (3399.0434pt,2703.5999pt) ellipse (11pt and 11pt); - \node at (3399.0434pt,2703.5999pt)[]{\textbf{\Large C}}; - \node at (3417.0864pt,2694.0659pt)[below right,color=black]{MdbName}; - \draw[pstyle3] (3366.85pt,2719.5999pt) -- (3517.968pt,2719.5999pt); - \draw[pstyle5] (3373.85pt,2731.6339pt) rectangle (3379.85pt,2737.6339pt); - \node at (3385.85pt,2723.5999pt)[below right,color=black]{nachname}; - \draw[pstyle5] (3373.85pt,2750.7018pt) rectangle (3379.85pt,2756.7018pt); - \node at (3385.85pt,2742.6678pt)[below right,color=black]{vorname}; - \draw[pstyle5] (3373.85pt,2769.7697pt) rectangle (3379.85pt,2775.7697pt); - \node at (3385.85pt,2761.7357pt)[below right,color=black]{ortszusatz}; - \draw[pstyle5] (3373.85pt,2788.8376pt) rectangle (3379.85pt,2794.8376pt); - \node at (3385.85pt,2780.8036pt)[below right,color=black]{adel}; - \draw[pstyle5] (3373.85pt,2807.9055pt) rectangle (3379.85pt,2813.9055pt); - \node at (3385.85pt,2799.8716pt)[below right,color=black]{praefix}; - \draw[pstyle5] (3373.85pt,2826.9734pt) rectangle (3379.85pt,2832.9734pt); - \node at (3385.85pt,2818.9395pt)[below right,color=black]{andereTitel}; - \draw[pstyle5] (3373.85pt,2846.0414pt) rectangle (3379.85pt,2852.0414pt); - \node at (3385.85pt,2838.0074pt)[below right,color=black]{akadTitel}; - \draw[pstyle5] (3373.85pt,2865.1093pt) rectangle (3379.85pt,2871.1093pt); - \node at (3385.85pt,2857.0753pt)[below right,color=black]{historieVon}; - \draw[pstyle5] (3373.85pt,2884.1772pt) rectangle (3379.85pt,2890.1772pt); - \node at (3385.85pt,2876.1432pt)[below right,color=black]{historieBis}; - \draw[pstyle3] (3366.85pt,2899.2112pt) -- (3517.968pt,2899.2112pt); - \draw[pstyle6] (3376.85pt,2914.2451pt) ellipse (3pt and 3pt); - \node at (3385.85pt,2903.2112pt)[below right,color=black]{getNachname()}; - \draw[pstyle6] (3376.85pt,2933.313pt) ellipse (3pt and 3pt); - \node at (3385.85pt,2922.2791pt)[below right,color=black]{setNachname()}; - \draw[pstyle6] (3376.85pt,2952.3809pt) ellipse (3pt and 3pt); - \node at (3385.85pt,2941.347pt)[below right,color=black]{getVorname()}; - \draw[pstyle6] (3376.85pt,2971.4489pt) ellipse (3pt and 3pt); - \node at (3385.85pt,2960.4149pt)[below right,color=black]{setVorname()}; - \draw[pstyle6] (3376.85pt,2990.5168pt) ellipse (3pt and 3pt); - \node at (3385.85pt,2979.4828pt)[below right,color=black]{getOrtszusatz()}; - \draw[pstyle6] (3376.85pt,3009.5847pt) ellipse (3pt and 3pt); - \node at (3385.85pt,2998.5507pt)[below right,color=black]{setOrtszusatz()}; - \draw[pstyle6] (3376.85pt,3028.6526pt) ellipse (3pt and 3pt); - \node at (3385.85pt,3017.6187pt)[below right,color=black]{getAdel()}; - \draw[pstyle6] (3376.85pt,3047.7205pt) ellipse (3pt and 3pt); - \node at (3385.85pt,3036.6866pt)[below right,color=black]{setAdel()}; - \draw[pstyle6] (3376.85pt,3066.7884pt) ellipse (3pt and 3pt); - \node at (3385.85pt,3055.7545pt)[below right,color=black]{getPraefix()}; - \draw[pstyle6] (3376.85pt,3085.8564pt) ellipse (3pt and 3pt); - \node at (3385.85pt,3074.8224pt)[below right,color=black]{setPraefix()}; - \draw[pstyle6] (3376.85pt,3104.9243pt) ellipse (3pt and 3pt); - \node at (3385.85pt,3093.8903pt)[below right,color=black]{getAndereTitel()}; - \draw[pstyle6] (3376.85pt,3123.9922pt) ellipse (3pt and 3pt); - \node at (3385.85pt,3112.9582pt)[below right,color=black]{setAndereTitel()}; - \draw[pstyle6] (3376.85pt,3143.0601pt) ellipse (3pt and 3pt); - \node at (3385.85pt,3132.0262pt)[below right,color=black]{getAkadTitel()}; - \draw[pstyle6] (3376.85pt,3162.128pt) ellipse (3pt and 3pt); - \node at (3385.85pt,3151.0941pt)[below right,color=black]{setAkadTitel()}; - \draw[pstyle6] (3376.85pt,3181.1959pt) ellipse (3pt and 3pt); - \node at (3385.85pt,3170.162pt)[below right,color=black]{getHistorieVon()}; - \draw[pstyle6] (3376.85pt,3200.2639pt) ellipse (3pt and 3pt); - \node at (3385.85pt,3189.2299pt)[below right,color=black]{setHistorieVon()}; - \draw[pstyle6] (3376.85pt,3219.3318pt) ellipse (3pt and 3pt); - \node at (3385.85pt,3208.2978pt)[below right,color=black]{getHistorieBis()}; - \draw[pstyle6] (3376.85pt,3238.3997pt) ellipse (3pt and 3pt); - \node at (3385.85pt,3227.3657pt)[below right,color=black]{setHistorieBis()}; - \draw[pstyle6] (3376.85pt,3257.4676pt) ellipse (3pt and 3pt); - \node at (3385.85pt,3246.4337pt)[below right,color=black]{equals()}; - \draw[pstyle6] (3376.85pt,3276.5355pt) ellipse (3pt and 3pt); - \node at (3385.85pt,3265.5016pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (3376.85pt,3295.6034pt) ellipse (3pt and 3pt); - \node at (3385.85pt,3284.5695pt)[below right,color=black]{toString()}; - \draw[pstyle1] (3554.23pt,2854.6699pt) arc (180:270:5pt) -- (3559.23pt,2849.6699pt) -- (3719.5989pt,2849.6699pt) arc (270:360:5pt) -- (3724.5989pt,2854.6699pt) -- (3724.5989pt,3140.5528pt) arc (0:90:5pt) -- (3719.5989pt,3145.5528pt) -- (3559.23pt,3145.5528pt) arc (90:180:5pt) -- (3554.23pt,3140.5528pt) -- cycle; - \draw[pstyle2] (3617.5889pt,2865.6699pt) ellipse (11pt and 11pt); - \node at (3617.5889pt,2865.6699pt)[]{\textbf{\Large C}}; - \node at (3638.0889pt,2856.1359pt)[below right,color=black]{Mdb}; - \draw[pstyle3] (3555.23pt,2881.6699pt) -- (3723.5989pt,2881.6699pt); - \draw[pstyle5] (3562.23pt,2893.7039pt) rectangle (3568.23pt,2899.7039pt); - \node at (3574.23pt,2885.6699pt)[below right,color=black]{id}; - \draw[pstyle5] (3562.23pt,2912.7718pt) rectangle (3568.23pt,2918.7718pt); - \node at (3574.23pt,2904.7378pt)[below right,color=black]{namen}; - \draw[pstyle5] (3562.23pt,2931.8397pt) rectangle (3568.23pt,2937.8397pt); - \node at (3574.23pt,2923.8057pt)[below right,color=black]{bio}; - \draw[pstyle5] (3562.23pt,2950.9076pt) rectangle (3568.23pt,2956.9076pt); - \node at (3574.23pt,2942.8736pt)[below right,color=black]{wahlperioden}; - \draw[pstyle3] (3555.23pt,2965.9416pt) -- (3723.5989pt,2965.9416pt); - \draw[pstyle6] (3565.23pt,2980.9755pt) ellipse (3pt and 3pt); - \node at (3574.23pt,2969.9416pt)[below right,color=black]{getId()}; - \draw[pstyle6] (3565.23pt,3000.0434pt) ellipse (3pt and 3pt); - \node at (3574.23pt,2989.0095pt)[below right,color=black]{setId()}; - \draw[pstyle6] (3565.23pt,3019.1114pt) ellipse (3pt and 3pt); - \node at (3574.23pt,3008.0774pt)[below right,color=black]{setNamen()}; - \draw[pstyle6] (3565.23pt,3038.1793pt) ellipse (3pt and 3pt); - \node at (3574.23pt,3027.1453pt)[below right,color=black]{getBio()}; - \draw[pstyle6] (3565.23pt,3057.2472pt) ellipse (3pt and 3pt); - \node at (3574.23pt,3046.2132pt)[below right,color=black]{setBio()}; - \draw[pstyle6] (3565.23pt,3076.3151pt) ellipse (3pt and 3pt); - \node at (3574.23pt,3065.2812pt)[below right,color=black]{setWahlperioden()}; - \draw[pstyle6] (3565.23pt,3095.383pt) ellipse (3pt and 3pt); - \node at (3574.23pt,3084.3491pt)[below right,color=black]{equals()}; - \draw[pstyle6] (3565.23pt,3114.4509pt) ellipse (3pt and 3pt); - \node at (3574.23pt,3103.417pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (3565.23pt,3133.5189pt) ellipse (3pt and 3pt); - \node at (3574.23pt,3122.4849pt)[below right,color=black]{toString()}; - \draw[pstyle1] (4082.68pt,2959.5499pt) arc (180:270:5pt) -- (4087.68pt,2954.5499pt) -- (4199.1316pt,2954.5499pt) arc (270:360:5pt) -- (4204.1316pt,2959.5499pt) -- (4204.1316pt,3035.6857pt) arc (0:90:5pt) -- (4199.1316pt,3040.6857pt) -- (4087.68pt,3040.6857pt) arc (90:180:5pt) -- (4082.68pt,3035.6857pt) -- cycle; - \draw[pstyle10] (4097.68pt,2970.5499pt) ellipse (11pt and 11pt); - \node at (4097.68pt,2970.5499pt)[]{\textbf{\Large E}}; - \node at (4111.68pt,2961.0159pt)[below right,color=black]{Mandatsart}; - \draw[pstyle3] (4083.68pt,2986.5499pt) -- (4203.1316pt,2986.5499pt); - \draw[pstyle5] (4090.68pt,2998.5839pt) rectangle (4096.68pt,3004.5839pt); - \node at (4102.68pt,2990.5499pt)[below right,color=black]{text}; - \draw[pstyle3] (4083.68pt,3013.6178pt) -- (4203.1316pt,3013.6178pt); - \draw[pstyle6] (4093.68pt,3028.6518pt) ellipse (3pt and 3pt); - \node at (4102.68pt,3017.6178pt)[below right,color=black]{byText()}; - \draw[pstyle1] (4239.01pt,2902.3399pt) arc (180:270:5pt) -- (4244.01pt,2897.3399pt) -- (4380.8105pt,2897.3399pt) arc (270:360:5pt) -- (4385.8105pt,2902.3399pt) -- (4385.8105pt,3092.8832pt) arc (0:90:5pt) -- (4380.8105pt,3097.8832pt) -- (4244.01pt,3097.8832pt) arc (90:180:5pt) -- (4239.01pt,3092.8832pt) -- cycle; - \draw[pstyle2] (4254.01pt,2913.3399pt) ellipse (11pt and 11pt); - \node at (4254.01pt,2913.3399pt)[]{\textbf{\Large C}}; - \node at (4268.01pt,2903.8059pt)[below right,color=black]{MdbDocument}; - \draw[pstyle3] (4240.01pt,2929.3399pt) -- (4384.8105pt,2929.3399pt); - \draw[pstyle5] (4247.01pt,2941.3739pt) rectangle (4253.01pt,2947.3739pt); - \node at (4259.01pt,2933.3399pt)[below right,color=black]{version}; - \draw[pstyle5] (4247.01pt,2960.4418pt) rectangle (4253.01pt,2966.4418pt); - \node at (4259.01pt,2952.4078pt)[below right,color=black]{mdbs}; - \draw[pstyle3] (4240.01pt,2975.4757pt) -- (4384.8105pt,2975.4757pt); - \draw[pstyle6] (4250.01pt,2990.5097pt) ellipse (3pt and 3pt); - \node at (4259.01pt,2979.4757pt)[below right,color=black]{getVersion()}; - \draw[pstyle6] (4250.01pt,3009.5776pt) ellipse (3pt and 3pt); - \node at (4259.01pt,2998.5436pt)[below right,color=black]{setVersion()}; - \draw[pstyle6] (4250.01pt,3028.6455pt) ellipse (3pt and 3pt); - \node at (4259.01pt,3017.6116pt)[below right,color=black]{setMdbs()}; - \draw[pstyle6] (4250.01pt,3047.7134pt) ellipse (3pt and 3pt); - \node at (4259.01pt,3036.6795pt)[below right,color=black]{equals()}; - \draw[pstyle6] (4250.01pt,3066.7814pt) ellipse (3pt and 3pt); - \node at (4259.01pt,3055.7474pt)[below right,color=black]{hashCode()}; - \draw[pstyle6] (4250.01pt,3085.8493pt) ellipse (3pt and 3pt); - \node at (4259.01pt,3074.8153pt)[below right,color=black]{toString()}; - \draw[pstyle1] (7531.34pt,2978.6199pt) arc (180:270:5pt) -- (7536.34pt,2973.6199pt) -- (7728.4798pt,2973.6199pt) arc (270:360:5pt) -- (7733.4798pt,2978.6199pt) -- (7733.4798pt,3016.6199pt) arc (0:90:5pt) -- (7728.4798pt,3021.6199pt) -- (7536.34pt,3021.6199pt) arc (90:180:5pt) -- (7531.34pt,3016.6199pt) -- cycle; - \draw[pstyle2] (7546.34pt,2989.6199pt) ellipse (11pt and 11pt); - \node at (7546.34pt,2989.6199pt)[]{\textbf{\Large C}}; - \node at (7560.34pt,2980.0859pt)[below right,color=black]{ServerErrorException}; - \draw[pstyle3] (7532.34pt,3005.6199pt) -- (7732.4798pt,3005.6199pt); - \draw[pstyle3] (7532.34pt,3013.6199pt) -- (7732.4798pt,3013.6199pt); - \draw[pstyle1] (7768.83pt,2978.6199pt) arc (180:270:5pt) -- (7773.83pt,2973.6199pt) -- (8006.9955pt,2973.6199pt) arc (270:360:5pt) -- (8011.9955pt,2978.6199pt) -- (8011.9955pt,3016.6199pt) arc (0:90:5pt) -- (8006.9955pt,3021.6199pt) -- (7773.83pt,3021.6199pt) arc (90:180:5pt) -- (7768.83pt,3016.6199pt) -- cycle; - \draw[pstyle2] (7783.83pt,2989.6199pt) ellipse (11pt and 11pt); - \node at (7783.83pt,2989.6199pt)[]{\textbf{\Large C}}; - \node at (7797.83pt,2980.0859pt)[below right,color=black]{SessionNotFoundException}; - \draw[pstyle3] (7769.83pt,3005.6199pt) -- (8010.9955pt,3005.6199pt); - \draw[pstyle3] (7769.83pt,3013.6199pt) -- (8010.9955pt,3013.6199pt); - \draw[pstyle1] (6654.39pt,2978.6199pt) arc (180:270:5pt) -- (6659.39pt,2973.6199pt) -- (6929.4266pt,2973.6199pt) arc (270:360:5pt) -- (6934.4266pt,2978.6199pt) -- (6934.4266pt,3016.6199pt) arc (0:90:5pt) -- (6929.4266pt,3021.6199pt) -- (6659.39pt,3021.6199pt) arc (90:180:5pt) -- (6654.39pt,3016.6199pt) -- cycle; - \draw[pstyle2] (6669.39pt,2989.6199pt) ellipse (11pt and 11pt); - \node at (6669.39pt,2989.6199pt)[]{\textbf{\Large C}}; - \node at (6683.39pt,2980.0859pt)[below right,color=black]{FractionAlreadyExistsException}; - \draw[pstyle3] (6655.39pt,3005.6199pt) -- (6933.4266pt,3005.6199pt); - \draw[pstyle3] (6655.39pt,3013.6199pt) -- (6933.4266pt,3013.6199pt); - \draw[pstyle1] (6969.19pt,2978.6199pt) arc (180:270:5pt) -- (6974.19pt,2973.6199pt) -- (7204.6291pt,2973.6199pt) arc (270:360:5pt) -- (7209.6291pt,2978.6199pt) -- (7209.6291pt,3016.6199pt) arc (0:90:5pt) -- (7204.6291pt,3021.6199pt) -- (6974.19pt,3021.6199pt) arc (90:180:5pt) -- (6969.19pt,3016.6199pt) -- cycle; - \draw[pstyle2] (6984.19pt,2989.6199pt) ellipse (11pt and 11pt); - \node at (6984.19pt,2989.6199pt)[]{\textbf{\Large C}}; - \node at (6998.19pt,2980.0859pt)[below right,color=black]{SpeechNotFoundException}; - \draw[pstyle3] (6970.19pt,3005.6199pt) -- (7208.6291pt,3005.6199pt); - \draw[pstyle3] (6970.19pt,3013.6199pt) -- (7208.6291pt,3013.6199pt); - \draw[pstyle1] (7244.88pt,2978.6199pt) arc (180:270:5pt) -- (7249.88pt,2973.6199pt) -- (7490.9487pt,2973.6199pt) arc (270:360:5pt) -- (7495.9487pt,2978.6199pt) -- (7495.9487pt,3016.6199pt) arc (0:90:5pt) -- (7490.9487pt,3021.6199pt) -- (7249.88pt,3021.6199pt) arc (90:180:5pt) -- (7244.88pt,3016.6199pt) -- cycle; - \draw[pstyle2] (7259.88pt,2989.6199pt) ellipse (11pt and 11pt); - \node at (7259.88pt,2989.6199pt)[]{\textbf{\Large C}}; - \node at (7273.88pt,2980.0859pt)[below right,color=black]{FractionNotFoundException}; - \draw[pstyle3] (7245.88pt,3005.6199pt) -- (7494.9487pt,3005.6199pt); - \draw[pstyle3] (7245.88pt,3013.6199pt) -- (7494.9487pt,3013.6199pt); - \draw[pstyle1] (6668.65pt,3791.0599pt) arc (180:270:5pt) -- (6673.65pt,3786.0599pt) -- (6915.1731pt,3786.0599pt) arc (270:360:5pt) -- (6920.1731pt,3791.0599pt) -- (6920.1731pt,3829.0599pt) arc (0:90:5pt) -- (6915.1731pt,3834.0599pt) -- (6673.65pt,3834.0599pt) arc (90:180:5pt) -- (6668.65pt,3829.0599pt) -- cycle; - \draw[pstyle2] (6683.65pt,3802.0599pt) ellipse (11pt and 11pt); - \node at (6683.65pt,3802.0599pt)[]{\textbf{\Large C}}; - \node at (6697.65pt,3792.5259pt)[below right,color=black]{MemberNotFoundException}; - \draw[pstyle3] (6669.65pt,3818.0599pt) -- (6919.1731pt,3818.0599pt); - \draw[pstyle3] (6669.65pt,3826.0599pt) -- (6919.1731pt,3826.0599pt); - \draw[pstyle1] (6955.36pt,3791.0599pt) arc (180:270:5pt) -- (6960.36pt,3786.0599pt) -- (7230.4616pt,3786.0599pt) arc (270:360:5pt) -- (7235.4616pt,3791.0599pt) -- (7235.4616pt,3829.0599pt) arc (0:90:5pt) -- (7230.4616pt,3834.0599pt) -- (6960.36pt,3834.0599pt) arc (90:180:5pt) -- (6955.36pt,3829.0599pt) -- cycle; - \draw[pstyle2] (6970.36pt,3802.0599pt) ellipse (11pt and 11pt); - \node at (6970.36pt,3802.0599pt)[]{\textbf{\Large C}}; - \node at (6984.36pt,3792.5259pt)[below right,color=black]{AgendaItemNotFoundException}; - \draw[pstyle3] (6956.36pt,3818.0599pt) -- (7234.4616pt,3818.0599pt); - \draw[pstyle3] (6956.36pt,3826.0599pt) -- (7234.4616pt,3826.0599pt); - \draw[pstyle1] (5524.44pt,426.2099pt) arc (180:270:5pt) -- (5529.44pt,421.2099pt) -- (5793.3792pt,421.2099pt) arc (270:360:5pt) -- (5798.3792pt,426.2099pt) -- (5798.3792pt,788.3645pt) arc (0:90:5pt) -- (5793.3792pt,793.3645pt) -- (5529.44pt,793.3645pt) arc (90:180:5pt) -- (5524.44pt,788.3645pt) -- cycle; - \draw[pstyle2] (5628.7029pt,437.2099pt) ellipse (11pt and 11pt); - \node at (5628.7029pt,437.2099pt)[]{\textbf{\Large C}}; - \node at (5649.2029pt,427.6759pt)[below right,color=black]{TeXUtil}; - \draw[pstyle3] (5525.44pt,453.2099pt) -- (5797.3792pt,453.2099pt); - \draw[pstyle5] (5532.44pt,465.2439pt) rectangle (5538.44pt,471.2439pt); - \node at (5544.44pt,457.2099pt)[below right,color=black]{PREAMBLE}; - \draw[pstyle5] (5532.44pt,484.3118pt) rectangle (5538.44pt,490.3118pt); - \node at (5544.44pt,476.2778pt)[below right,color=black]{BEGIN\_DOCUMENT}; - \draw[pstyle5] (5532.44pt,503.3797pt) rectangle (5538.44pt,509.3797pt); - \node at (5544.44pt,495.3457pt)[below right,color=black]{END\_DOCUMENT}; - \draw[pstyle5] (5532.44pt,522.4476pt) rectangle (5538.44pt,528.4476pt); - \node at (5544.44pt,514.4136pt)[below right,color=black]{TABLEOFCONTENTS}; - \draw[pstyle5] (5532.44pt,541.5155pt) rectangle (5538.44pt,547.5155pt); - \node at (5544.44pt,533.4816pt)[below right,color=black]{NEWPAGE}; - \draw[pstyle3] (5525.44pt,556.5495pt) -- (5797.3792pt,556.5495pt); - \draw[pstyle7] (5532.44pt,568.5834pt) rectangle (5538.44pt,574.5834pt); - \node at (5544.44pt,560.5495pt)[below right,color=black]{readFileContentFromTeXDir()}; - \draw[pstyle6] (5535.44pt,590.6514pt) ellipse (3pt and 3pt); - \node at (5544.44pt,579.6174pt)[below right,color=black]{getSpeechToTexComponent()}; - \draw[pstyle6] (5535.44pt,609.7193pt) ellipse (3pt and 3pt); - \node at (5544.44pt,598.6853pt)[below right,color=black]{createTempDir()}; - \draw[pstyle6] (5535.44pt,628.7872pt) ellipse (3pt and 3pt); - \node at (5544.44pt,617.7532pt)[below right,color=black]{deleteTeXTempDirContents()}; - \draw[pstyle6] (5535.44pt,647.8551pt) ellipse (3pt and 3pt); - \node at (5544.44pt,636.8212pt)[below right,color=black]{visitFile()}; - \draw[pstyle6] (5535.44pt,666.923pt) ellipse (3pt and 3pt); - \node at (5544.44pt,655.8891pt)[below right,color=black]{postVisitDirectory()}; - \draw[pstyle6] (5535.44pt,685.9909pt) ellipse (3pt and 3pt); - \node at (5544.44pt,674.957pt)[below right,color=black]{tryDeleteTeXTempDirContents()}; - \draw[pstyle6] (5535.44pt,705.0589pt) ellipse (3pt and 3pt); - \node at (5544.44pt,694.0249pt)[below right,color=black]{isTeXSdkInstalled()}; - \draw[pstyle6] (5535.44pt,724.1268pt) ellipse (3pt and 3pt); - \node at (5544.44pt,713.0928pt)[below right,color=black]{generateChartView()}; - \draw[pstyle6] (5535.44pt,743.1947pt) ellipse (3pt and 3pt); - \node at (5544.44pt,732.1607pt)[below right,color=black]{generateBubbleChartLatex()}; - \draw[pstyle6] (5535.44pt,762.2626pt) ellipse (3pt and 3pt); - \node at (5544.44pt,751.2287pt)[below right,color=black]{generateBarChartLatex()}; - \draw[pstyle6] (5535.44pt,781.3305pt) ellipse (3pt and 3pt); - \node at (5544.44pt,770.2966pt)[below right,color=black]{generateRadarChartLatex()}; - \draw[pstyle1] (5147.57pt,492.9499pt) arc (180:270:5pt) -- (5152.57pt,487.9499pt) -- (5484.2471pt,487.9499pt) arc (270:360:5pt) -- (5489.2471pt,492.9499pt) -- (5489.2471pt,721.6291pt) arc (0:90:5pt) -- (5484.2471pt,726.6291pt) -- (5152.57pt,726.6291pt) arc (90:180:5pt) -- (5147.57pt,721.6291pt) -- cycle; - \draw[pstyle2] (5282.3506pt,503.9499pt) ellipse (11pt and 11pt); - \node at (5282.3506pt,503.9499pt)[]{\textbf{\Large C}}; - \node at (5302.8506pt,494.4159pt)[below right,color=black]{XMLUtil}; - \draw[pstyle3] (5148.57pt,519.9499pt) -- (5488.2471pt,519.9499pt); - \draw[pstyle3] (5148.57pt,527.9499pt) -- (5488.2471pt,527.9499pt); - \draw[pstyle6] (5158.57pt,542.9839pt) ellipse (3pt and 3pt); - \node at (5167.57pt,531.9499pt)[below right,color=black]{documentToString()}; - \draw[pstyle6] (5158.57pt,562.0518pt) ellipse (3pt and 3pt); - \node at (5167.57pt,551.0178pt)[below right,color=black]{createXmlDocument()}; - \draw[pstyle6] (5158.57pt,581.1197pt) ellipse (3pt and 3pt); - \node at (5167.57pt,570.0857pt)[below right,color=black]{addNlpData()}; - \draw[pstyle6] (5158.57pt,600.1876pt) ellipse (3pt and 3pt); - \node at (5167.57pt,589.1536pt)[below right,color=black]{addSpeechById()}; - \draw[pstyle6] (5158.57pt,619.2555pt) ellipse (3pt and 3pt); - \node at (5167.57pt,608.2216pt)[below right,color=black]{addSpeechBySpeech()}; - \draw[pstyle6] (5158.57pt,638.3234pt) ellipse (3pt and 3pt); - \node at (5167.57pt,627.2895pt)[below right,color=black]{getExportedSpeechById()}; - \draw[pstyle6] (5158.57pt,657.3914pt) ellipse (3pt and 3pt); - \node at (5167.57pt,646.3574pt)[below right,color=black]{getExportedSpeechesFromSpeakerById()}; - \draw[pstyle6] (5158.57pt,676.4593pt) ellipse (3pt and 3pt); - \node at (5167.57pt,665.4253pt)[below right,color=black]{getExportedAllSpeeches()}; - \draw[pstyle6] (5158.57pt,695.5272pt) ellipse (3pt and 3pt); - \node at (5167.57pt,684.4932pt)[below right,color=black]{getExportedSpeechesWhithTopic()}; - \draw[pstyle6] (5158.57pt,714.5951pt) ellipse (3pt and 3pt); - \node at (5167.57pt,703.5612pt)[below right,color=black]{getExportedSpeechesbyIds()}; - \draw[pstyle1] (13866.88pt,3791.0599pt) arc (180:270:5pt) -- (13871.88pt,3786.0599pt) -- (13934.9381pt,3786.0599pt) arc (270:360:5pt) -- (13939.9381pt,3791.0599pt) -- (13939.9381pt,3829.0599pt) arc (0:90:5pt) -- (13934.9381pt,3834.0599pt) -- (13871.88pt,3834.0599pt) arc (90:180:5pt) -- (13866.88pt,3829.0599pt) -- cycle; - \draw[pstyle2] (13881.88pt,3802.0599pt) ellipse (11pt and 11pt); - \node at (13881.88pt,3802.0599pt)[]{\textbf{\Large C}}; - \node at (13895.88pt,3792.5259pt)[below right,color=black]{static}; - \draw[pstyle3] (13867.88pt,3818.0599pt) -- (13938.9381pt,3818.0599pt); - \draw[pstyle3] (13867.88pt,3826.0599pt) -- (13938.9381pt,3826.0599pt); - \draw[pstyle11] (13301.0987pt,789.8403pt) ..controls (13275.1287pt,903.9703pt) and (13242.82pt,1045.9699pt) .. (13217.28pt,1158.1999pt); - \draw[pstyle12] (13302.43pt,783.9899pt) -- (13296.5328pt,791.8781pt) -- (13301.3206pt,788.8653pt) -- (13304.3334pt,793.6531pt) -- (13302.43pt,783.9899pt) -- cycle; - \node at (13292.5825pt,791.8178pt)[below right,color=black]{1}; - \node at (13210.9299pt,1132.694pt)[below right,color=black]{1}; - \draw[pstyle11] (13383.9689pt,789.8386pt) ..controls (13416.6389pt,932.5486pt) and (13460.05pt,1122.1399pt) .. (13485.83pt,1234.7399pt); - \draw[pstyle12] (13382.63pt,783.9899pt) -- (13380.7392pt,793.6556pt) -- (13383.7458pt,788.8638pt) -- (13388.5375pt,791.8703pt) -- (13382.63pt,783.9899pt) -- cycle; - \node at (13376.166pt,791.8178pt)[below right,color=black]{1}; - \node at (13475.7338pt,1209.2265pt)[below right,color=black]{1}; - \draw[pstyle11] (13187.7823pt,612.3957pt) ..controls (12438.2123pt,633.1157pt) and (9074.36pt,736.8099pt) .. (8052.41pt,953.9099pt) ..controls (7686.31pt,1031.6899pt) and (7274.72pt,1216.2999pt) .. (7115.42pt,1291.7099pt); - \draw[pstyle12] (13193.78pt,612.2299pt) -- (13184.6729pt,608.4801pt) -- (13188.7819pt,612.3681pt) -- (13184.894pt,616.4771pt) -- (13193.78pt,612.2299pt) -- cycle; - \node at (13177.9197pt,595.0644pt)[below right,color=black]{1}; - \node at (7120.0583pt,1266.4232pt)[below right,color=black]{1}; - \draw[pstyle11] (13495.7641pt,711.7143pt) ..controls (13572.6841pt,772.6143pt) and (13654.4pt,854.1699pt) .. (13696.41pt,953.9099pt) ..controls (13723.56pt,1018.3699pt) and (13730.17pt,1522.1499pt) .. (13696.41pt,1583.3999pt) ..controls (13681.95pt,1609.6499pt) and (13661.66pt,1599.3399pt) .. (13639.41pt,1619.3999pt) ..controls (13264.73pt,1957.1899pt) and (13391.09pt,2290.7399pt) .. (12937.41pt,2511.3299pt) ..controls (12914.91pt,2522.2699pt) and (5751.28pt,2504.1199pt) .. (5731.41pt,2519.3299pt) ..controls (5613.57pt,2609.4599pt) and (5595.57pt,2795.2899pt) .. (5596.33pt,2906.6199pt); - \draw[pstyle12] (13491.06pt,707.9899pt) -- (13495.6333pt,716.7126pt) -- (13494.9801pt,711.0936pt) -- (13500.5991pt,710.4404pt) -- (13491.06pt,707.9899pt) -- cycle; - \node at (13498.4631pt,695.4728pt)[below right,color=black]{1}; - \node at (5587.5663pt,2881.0997pt)[below right,color=black]{1}; - \draw[pstyle11] (13495.4529pt,725.0202pt) ..controls (13562.9929pt,785.7102pt) and (13631.3pt,862.7899pt) .. (13667.41pt,953.9099pt) ..controls (13680.3pt,986.4199pt) and (13690.15pt,1556.8299pt) .. (13667.41pt,1583.3999pt) ..controls (13633.78pt,1622.7099pt) and (13485.9pt,1601.3699pt) .. (13437.41pt,1619.3999pt) ..controls (12734.66pt,1880.8399pt) and (12726.19pt,2304.7499pt) .. (12005.41pt,2511.3299pt) ..controls (11982.97pt,2517.7599pt) and (5300.91pt,2506.4899pt) .. (5281.41pt,2519.3299pt) ..controls (5170.98pt,2592.0299pt) and (5119.48pt,2737.8299pt) .. (5095.62pt,2849.2599pt); - \draw[pstyle12] (13490.99pt,721.0099pt) -- (13495.0109pt,730.0006pt) -- (13494.7091pt,724.3518pt) -- (13500.3579pt,724.05pt) -- (13490.99pt,721.0099pt) -- cycle; - \node at (13498.8671pt,727.3299pt)[below right,color=black]{1}; - \node at (5088.4655pt,2824.1904pt)[below right,color=black]{1}; - \draw[pstyle11] (13495.6408pt,697.2649pt) ..controls (13584.0808pt,757.4349pt) and (13683.62pt,843.4399pt) .. (13733.41pt,953.9099pt) ..controls (13835.87pt,1181.2399pt) and (13648.15pt,2507.0199pt) .. (13643.41pt,2511.3299pt) ..controls (13623.7pt,2529.2399pt) and (5994.42pt,2502.9599pt) .. (5973.41pt,2519.3299pt) ..controls (5856.91pt,2610.0699pt) and (5842.54pt,2795.6899pt) .. (5845.52pt,2906.8099pt); - \draw[pstyle12] (13490.68pt,693.8899pt) -- (13495.8711pt,702.2596pt) -- (13494.814pt,696.7024pt) -- (13500.3712pt,695.6453pt) -- (13490.68pt,693.8899pt) -- cycle; - \node at (13498.5411pt,680.935pt)[below right,color=black]{1}; - \node at (5836.6005pt,2881.306pt)[below right,color=black]{1}; - \draw[pstyle11] (13187.96pt,616.9865pt) ..controls (12601.09pt,650.9465pt) and (10448.76pt,784.5899pt) .. (9786.41pt,953.9099pt) ..controls (9510.37pt,1024.4799pt) and (9208.88pt,1170.2199pt) .. (9043.86pt,1256.4599pt); - \draw[pstyle12] (13193.95pt,616.6399pt) -- (13184.734pt,613.1665pt) -- (13188.9584pt,616.9287pt) -- (13185.1961pt,621.1531pt) -- (13193.95pt,616.6399pt) -- cycle; - \node at (13177.6226pt,617.6352pt)[below right,color=black]{1}; - \node at (9051.3548pt,1234.9885pt)[below right,color=black]{1}; - \draw[pstyle11] (13189.5843pt,733.5151pt) ..controls (13124.8843pt,794.2151pt) and (13058.49pt,868.7799pt) .. (13015.41pt,953.9099pt) ..controls (12887.04pt,1207.6099pt) and (13118.38pt,1399.6599pt) .. (12901.41pt,1583.3999pt) ..controls (12790.07pt,1677.6999pt) and (10388.77pt,1527.5499pt) .. (10275.41pt,1619.3999pt) ..controls (10152.66pt,1718.8599pt) and (10163.66pt,1936.6699pt) .. (10172.91pt,2019.4999pt); - \draw[pstyle12] (13193.96pt,729.4099pt) -- (13184.6596pt,732.6506pt) -- (13190.3135pt,732.8309pt) -- (13190.1332pt,738.4849pt) -- (13193.96pt,729.4099pt) -- cycle; - \node at (13177.6332pt,718.6426pt)[below right,color=black]{1}; - \node at (10163.2732pt,1994.229pt)[below right,color=black]{1}; - \draw[pstyle11] (13187.7364pt,615.1369pt) ..controls (12580.4464pt,643.2069pt) and (10314.37pt,760.1999pt) .. (10063.41pt,953.9099pt) ..controls (9973.41pt,1023.3799pt) and (9941.27pt,1157.6499pt) .. (9929.79pt,1244.1099pt); - \draw[pstyle12] (13193.73pt,614.8599pt) -- (13184.5549pt,611.2797pt) -- (13188.7353pt,615.0908pt) -- (13184.9243pt,619.2712pt) -- (13193.73pt,614.8599pt) -- cycle; - \node at (13177.8671pt,597.83pt)[below right,color=black]{1}; - \node at (9922.0266pt,1218.8415pt)[below right,color=black]{1}; - \draw[pstyle11] (13496.9739pt,636.3496pt) ..controls (13662.6539pt,674.8996pt) and (13916.92pt,762.4099pt) .. (14035.41pt,953.9099pt) ..controls (14178.88pt,1185.7799pt) and (14078.57pt,3138.6799pt) .. (14035.41pt,3407.9099pt) ..controls (14011.56pt,3556.6799pt) and (13940.94pt,3725.0999pt) .. (13914.01pt,3785.7599pt); - \draw[pstyle12] (13491.13pt,634.9899pt) -- (13498.9893pt,640.9254pt) -- (13495.9999pt,636.123pt) -- (13500.8023pt,633.1336pt) -- (13491.13pt,634.9899pt) -- cycle; - \node at (13498.5365pt,618.9368pt)[below right,color=black]{1}; - \node at (13917.7997pt,3760.4454pt)[below right,color=black]{1}; - \draw[pstyle11] (4996.7457pt,732.5493pt) ..controls (5017.6457pt,809.3393pt) and (5056.1pt,897.9099pt) .. (5131.41pt,945.9099pt) ..controls (5158.74pt,963.3299pt) and (9772.1pt,934.9799pt) .. (9798.41pt,953.9099pt) ..controls (9890.08pt,1019.8599pt) and (9915.4pt,1156.5099pt) .. (9921.89pt,1244.2199pt); - \draw[pstyle12] (4995.17pt,726.7599pt) -- (4993.674pt,736.4945pt) -- (4996.4831pt,731.5844pt) -- (5001.3932pt,734.3935pt) -- (4995.17pt,726.7599pt) -- cycle; - \node at (4988.264pt,734.5796pt)[below right,color=black]{1}; - \node at (9913.3817pt,1218.6817pt)[below right,color=black]{1}; - \draw[pstyle11] (2155.6344pt,723.127pt) ..controls (2138.9244pt,801.207pt) and (2104.45pt,895.2999pt) .. (2028.41pt,945.9099pt) ..controls (2007.25pt,959.9899pt) and (216.34pt,935.8999pt) .. (198.41pt,953.9099pt) ..controls (6pt,1147.1599pt) and (44.51pt,3218.1899pt) .. (240.41pt,3407.9099pt) ..controls (255.88pt,3422.8799pt) and (998.4pt,3402.7099pt) .. (1015.41pt,3415.9099pt) ..controls (1083.64pt,3468.8599pt) and (1110.65pt,3560.8999pt) .. (1120.24pt,3642.6099pt); - \draw[pstyle12] (2156.89pt,717.2599pt) -- (2151.0951pt,725.2235pt) -- (2155.8436pt,722.1492pt) -- (2158.918pt,726.8977pt) -- (2156.89pt,717.2599pt) -- cycle; - \node at (2156.196pt,725.2436pt)[below right,color=black]{1}; - \node at (1120.4348pt,3617.1044pt)[below right,color=black]{1}; - \draw[pstyle11] (2155.6336pt,723.1269pt) ..controls (2138.9136pt,801.2069pt) and (2104.45pt,895.2999pt) .. (2028.41pt,945.9099pt) ..controls (2007.53pt,959.8099pt) and (240.11pt,936.1299pt) .. (222.41pt,953.9099pt) ..controls (171.57pt,1004.9799pt) and (244.17pt,3294.7199pt) .. (365.41pt,3407.9099pt) ..controls (382.43pt,3423.7899pt) and (1184.8pt,3401.9199pt) .. (1203.41pt,3415.9099pt) ..controls (1220.79pt,3428.9599pt) and (1235.7pt,3444.4899pt) .. (1248.48pt,3461.7099pt); - \draw[pstyle12] (2156.89pt,717.2599pt) -- (2151.0941pt,725.2228pt) -- (2155.843pt,722.1491pt) -- (2158.9168pt,726.898pt) -- (2156.89pt,717.2599pt) -- cycle; - \node at (2147.6585pt,725.2436pt)[below right,color=black]{1}; - \node at (1238.6813pt,3436.3544pt)[below right,color=black]{1}; - \draw[pstyle11] (4714.9162pt,2481.5583pt) ..controls (4700.3862pt,2494.0883pt) and (4689.43pt,2501.5099pt) .. (4672.91pt,2511.3299pt) ..controls (4650.07pt,2524.8899pt) and (868.64pt,2502.7199pt) .. (847.91pt,2519.3299pt) ..controls (775.38pt,2577.4099pt) and (745.11pt,2672.9799pt) .. (732.86pt,2763.4099pt); - \draw[pstyle12] (4719.46pt,2477.6399pt) -- (4710.032pt,2480.4883pt) -- (4715.6735pt,2480.9052pt) -- (4715.2565pt,2486.5467pt) -- (4719.46pt,2477.6399pt) -- cycle; - \node at (4703.4545pt,2495.9127pt)[below right,color=black]{1}; - \node at (725.0778pt,2738.4577pt)[below right,color=black]{1}; - \draw[pstyle11] (701.2182pt,2757.4429pt) ..controls (710.7382pt,2667.0129pt) and (740.38pt,2577.4099pt) .. (812.91pt,2519.3299pt) ..controls (833.64pt,2502.7199pt) and (4615.07pt,2524.8899pt) .. (4637.91pt,2511.3299pt) ..controls (4668.42pt,2493.1899pt) and (4695.46pt,2469.8799pt) .. (4719.42pt,2443.3999pt); - \draw[pstyle12] (700.59pt,2763.4099pt) -- (705.5103pt,2754.8781pt) -- (701.1135pt,2758.4374pt) -- (697.5542pt,2754.0406pt) -- (700.59pt,2763.4099pt) -- cycle; - \node at (691.749pt,2738.4577pt)[below right,color=black]{1}; - \node at (4703.4128pt,2442.511pt)[below right,color=black]{1}; - \draw[pstyle11] (4715.1156pt,2465.7204pt) ..controls (4695.7156pt,2484.7404pt) and (4678.72pt,2497.4499pt) .. (4655.41pt,2511.3299pt) ..controls (4631.14pt,2525.7799pt) and (2642.83pt,2500.8999pt) .. (2621.41pt,2519.3299pt) ..controls (2521.13pt,2605.5899pt) and (2516.34pt,2766.7799pt) .. (2527.43pt,2877.7899pt); - \draw[pstyle12] (4719.4pt,2461.5199pt) -- (4710.1731pt,2464.9643pt) -- (4715.8297pt,2465.0203pt) -- (4715.7737pt,2470.6769pt) -- (4719.4pt,2461.5199pt) -- cycle; - \node at (4703.392pt,2461.3954pt)[below right,color=black]{1}; - \node at (2517.9061pt,2852.5914pt)[below right,color=black]{1}; - \draw[pstyle11] (5097.1831pt,2062.2474pt) ..controls (5633.0831pt,2087.9574pt) and (7160.02pt,2189.1499pt) .. (7513.41pt,2519.3299pt) ..controls (7647.42pt,2644.5299pt) and (7640.34pt,2895.5399pt) .. (7634.57pt,2973.1799pt); - \draw[pstyle12] (5091.19pt,2061.9599pt) -- (5099.988pt,2066.3866pt) -- (5096.1843pt,2062.1995pt) -- (5100.3713pt,2058.3958pt) -- (5091.19pt,2061.9599pt) -- cycle; - \node at (5099.2044pt,2044.979pt)[below right,color=black]{1}; - \node at (7626.1468pt,2947.8295pt)[below right,color=black]{1}; - \draw[pstyle11] (5097.5064pt,2059.8083pt) ..controls (5665.0764pt,2079.5383pt) and (7353.61pt,2167.1199pt) .. (7751.41pt,2519.3299pt) ..controls (7890.34pt,2642.3299pt) and (7893.95pt,2895.3799pt) .. (7891.55pt,2973.2699pt); - \draw[pstyle12] (5091.51pt,2059.5999pt) -- (5100.3656pt,2063.9102pt) -- (5096.507pt,2059.7736pt) -- (5100.6435pt,2055.915pt) -- (5091.51pt,2059.5999pt) -- cycle; - \node at (5098.9432pt,2060.1895pt)[below right,color=black]{1}; - \node at (7882.8647pt,2947.9425pt)[below right,color=black]{1}; - \draw[pstyle11] (4715.4983pt,1670.7702pt) ..controls (4695.8983pt,1649.9402pt) and (4678.65pt,1635.3999pt) .. (4655.41pt,1619.3999pt) ..controls (4571.99pt,1561.9799pt) and (4513.47pt,1641.3499pt) .. (4430.41pt,1583.3999pt) ..controls (4346.79pt,1525.0699pt) and (4306.05pt,1401.7299pt) .. (4292.14pt,1350.1299pt); - \draw[pstyle12] (4719.61pt,1675.1399pt) -- (4716.3556pt,1665.8443pt) -- (4716.1836pt,1671.4985pt) -- (4710.5294pt,1671.3265pt) -- (4719.61pt,1675.1399pt) -- cycle; - \node at (4703.6108pt,1659.5572pt)[below right,color=black]{1}; - \node at (4284.5843pt,1357.8358pt)[below right,color=black]{1}; - \draw[pstyle11] (4716.8836pt,1661.4656pt) ..controls (4651.9336pt,1526.7956pt) and (4591.61pt,1401.7199pt) .. (4566.66pt,1349.9799pt); - \draw[pstyle12] (4719.49pt,1666.8699pt) -- (4719.1832pt,1657.0258pt) -- (4717.318pt,1662.3663pt) -- (4711.9775pt,1660.5011pt) -- (4719.49pt,1666.8699pt) -- cycle; - \node at (4703.4858pt,1633.2211pt)[below right,color=black]{1}; - \node at (4560.3803pt,1357.6512pt)[below right,color=black]{1}; - \draw[pstyle11] (4715.0917pt,1666.6429pt) ..controls (4695.6217pt,1647.1329pt) and (4678.6pt,1633.8999pt) .. (4655.41pt,1619.3999pt) ..controls (4558.5pt,1558.8399pt) and (4237.02pt,1647.4999pt) .. (4142.41pt,1583.3999pt) ..controls (4076.43pt,1538.6999pt) and (4044.4pt,1448.6799pt) .. (4029.71pt,1388.0199pt); - \draw[pstyle12] (4719.33pt,1670.8899pt) -- (4715.8039pt,1661.6939pt) -- (4715.7981pt,1667.3507pt) -- (4710.1412pt,1667.3449pt) -- (4719.33pt,1670.8899pt) -- cycle; - \node at (4703.319pt,1637.4107pt)[below right,color=black]{1}; - \node at (4022.5295pt,1395.8093pt)[below right,color=black]{1}; - \draw[pstyle11] (5095.5214pt,2297.2599pt) ..controls (5174.2314pt,2380.9199pt) and (5268.8pt,2461.8999pt) .. (5377.41pt,2511.3299pt) ..controls (5396.49pt,2520.0099pt) and (5455.31pt,2505.8999pt) .. (5471.41pt,2519.3299pt) ..controls (5584.87pt,2613.9099pt) and (5604.56pt,2796.8499pt) .. (5605.25pt,2906.7299pt); - \draw[pstyle12] (5091.41pt,2292.8899pt) -- (5094.6638pt,2302.1858pt) -- (5094.8362pt,2296.5315pt) -- (5100.4904pt,2296.7039pt) -- (5091.41pt,2292.8899pt) -- cycle; - \node at (5098.8393pt,2284.9283pt)[below right,color=black]{1}; - \node at (5605.9403pt,2881.2191pt)[below right,color=black]{1}; - \draw[pstyle11] (4971.5339pt,2493.4766pt) ..controls (4994.7339pt,2623.5066pt) and (5018.92pt,2751.5199pt) .. (5038.99pt,2849.3399pt); - \draw[pstyle12] (4970.48pt,2487.5699pt) -- (4968.123pt,2497.1326pt) -- (4971.3582pt,2492.4922pt) -- (4975.9986pt,2495.7274pt) -- (4970.48pt,2487.5699pt) -- cycle; - \node at (4963.5329pt,2495.185pt)[below right,color=black]{1}; - \node at (5028.7898pt,2823.7858pt)[below right,color=black]{1}; - \draw[pstyle11] (5057.7575pt,2843.4112pt) ..controls (5042.5375pt,2745.5912pt) and (5020.38pt,2617.5999pt) .. (4996.66pt,2487.5699pt); - \draw[pstyle12] (5058.68pt,2849.3399pt) -- (5061.2488pt,2839.8319pt) -- (5057.9113pt,2844.3993pt) -- (5053.3439pt,2841.0619pt) -- (5058.68pt,2849.3399pt) -- cycle; - \node at (5049.5566pt,2823.7858pt)[below right,color=black]{1}; - \node at (4990.1629pt,2495.185pt)[below right,color=black]{1}; - \draw[pstyle11] (4818.7379pt,2493.4563pt) ..controls (4780.2779pt,2688.2663pt) and (4741.27pt,2885.8899pt) .. (4725.9pt,2963.7099pt); - \draw[pstyle12] (4819.9pt,2487.5699pt) -- (4814.2326pt,2495.6247pt) -- (4818.9316pt,2492.4752pt) -- (4822.0811pt,2497.1742pt) -- (4819.9pt,2487.5699pt) -- cycle; - \node at (4810.3648pt,2495.185pt)[below right,color=black]{1}; - \node at (4728.0015pt,2938.4311pt)[below right,color=black]{1}; - \draw[pstyle11] (5097.0541pt,2091.6321pt) ..controls (5584.2641pt,2184.3921pt) and (6934.33pt,2428.2699pt) .. (8076.41pt,2511.3299pt) ..controls (8103.24pt,2513.2799pt) and (11923.66pt,2511.5599pt) .. (11949.41pt,2519.3299pt) ..controls (12855.22pt,2792.3299pt) and (13729.13pt,3635.0199pt) .. (13880.4pt,3785.8299pt); - \draw[pstyle12] (5091.16pt,2090.5099pt) -- (5099.2531pt,2096.1226pt) -- (5096.0718pt,2091.4451pt) -- (5100.7493pt,2088.2638pt) -- (5091.16pt,2090.5099pt) -- cycle; - \node at (5099.1731pt,2074.7335pt)[below right,color=black]{1}; - \node at (13865.5272pt,3760.5333pt)[below right,color=black]{1}; - \draw[pstyle11] (2686.6829pt,686.4504pt) ..controls (2804.7829pt,745.1504pt) and (2951.27pt,834.0699pt) .. (3050.41pt,953.9099pt) ..controls (3124.12pt,1043.0099pt) and (3164.21pt,1173.6299pt) .. (3183.19pt,1253.6899pt); - \draw[pstyle12] (2681.31pt,683.7799pt) -- (2687.589pt,691.3676pt) -- (2685.7874pt,686.0053pt) -- (2691.1497pt,684.2038pt) -- (2681.31pt,683.7799pt) -- cycle; - \node at (2688.8652pt,669.6631pt)[below right,color=black]{1}; - \node at (3173.33pt,1228.4279pt)[below right,color=black]{1}; - \draw[pstyle11] (2687.3137pt,631.5202pt) ..controls (3019.3837pt,677.3502pt) and (3717.74pt,790.6299pt) .. (3894.41pt,953.9099pt) ..controls (3982.38pt,1035.2199pt) and (4007.99pt,1180.6399pt) .. (4015.41pt,1263.1199pt); - \draw[pstyle12] (2681.37pt,630.6999pt) -- (2689.7386pt,635.8928pt) -- (2686.3231pt,631.3835pt) -- (2690.8324pt,627.9679pt) -- (2681.37pt,630.6999pt) -- cycle; - \node at (2689.1475pt,615.1069pt)[below right,color=black]{1}; - \node at (4006.6229pt,1237.9472pt)[below right,color=black]{1}; - \draw[pstyle11] (2326.4872pt,938.4286pt) ..controls (2320.9872pt,942.3086pt) and (2320.23pt,942.5099pt) .. (2314.41pt,945.9099pt) ..controls (2295.93pt,956.7299pt) and (787.7pt,938.9099pt) .. (772.41pt,953.9099pt) ..controls (764.41pt,961.7499pt) and (737.89pt,2229.8299pt) .. (727.07pt,2763.8299pt); - \draw[pstyle12] (2331.39pt,934.9699pt) -- (2321.73pt,936.8894pt) -- (2327.3043pt,937.8521pt) -- (2326.3416pt,943.4265pt) -- (2331.39pt,934.9699pt) -- cycle; - \node at (2321.5136pt,954.4257pt)[below right,color=black]{1}; - \node at (719.1005pt,2738.1354pt)[below right,color=black]{1}; - \draw[pstyle11] (706.5212pt,2757.4912pt) ..controls (675.1612pt,2248.2512pt) and (617.78pt,1077.9699pt) .. (744.41pt,953.9099pt) ..controls (759.99pt,938.6499pt) and (2295.59pt,956.9199pt) .. (2314.41pt,945.9099pt) ..controls (2320.23pt,942.5099pt) and (2325.89pt,938.8499pt) .. (2331.39pt,934.9699pt); - \draw[pstyle12] (706.89pt,2763.4799pt) -- (710.3292pt,2754.2511pt) -- (706.5827pt,2758.4894pt) -- (702.3444pt,2754.7428pt) -- (706.89pt,2763.4799pt) -- cycle; - \node at (698.2557pt,2738.53pt)[below right,color=black]{1}; - \node at (2315.2866pt,950.219pt)[below right,color=black]{1}; - \draw[pstyle11] (2326.4872pt,938.4286pt) ..controls (2320.9872pt,942.3086pt) and (2320.23pt,942.4999pt) .. (2314.41pt,945.9099pt) ..controls (2297.25pt,955.9599pt) and (896.45pt,939.8199pt) .. (882.41pt,953.9099pt) ..controls (795.58pt,1041.0999pt) and (767.62pt,2392.6699pt) .. (881.41pt,2511.3299pt) ..controls (896.11pt,2526.6599pt) and (1056.3pt,2505.4799pt) .. (1072.41pt,2519.3299pt) ..controls (1170.51pt,2603.6699pt) and (1184.49pt,2758.0699pt) .. (1179.9pt,2868.4299pt); - \draw[pstyle12] (2331.39pt,934.9699pt) -- (2321.73pt,936.8894pt) -- (2327.3043pt,937.8521pt) -- (2326.3416pt,943.4265pt) -- (2331.39pt,934.9699pt) -- cycle; - \node at (2315.6412pt,947.4268pt)[below right,color=black]{1}; - \node at (1172.5505pt,2843.0613pt)[below right,color=black]{1}; - \draw[pstyle11] (2326.4872pt,938.4286pt) ..controls (2320.9872pt,942.3086pt) and (2320.23pt,942.4999pt) .. (2314.41pt,945.9099pt) ..controls (2296.27pt,956.5299pt) and (816.23pt,939.0099pt) .. (801.41pt,953.9099pt) ..controls (770.9pt,984.5799pt) and (775.2pt,2476.9099pt) .. (801.41pt,2511.3299pt) ..controls (809.51pt,2521.9599pt) and (821.05pt,2509.7699pt) .. (830.41pt,2519.3299pt) ..controls (856.43pt,2545.8899pt) and (877.1pt,2577.2099pt) .. (893.49pt,2610.8999pt); - \draw[pstyle12] (2331.39pt,934.9699pt) -- (2321.73pt,936.8894pt) -- (2327.3043pt,937.8521pt) -- (2326.3416pt,943.4265pt) -- (2331.39pt,934.9699pt) -- cycle; - \node at (2315.2866pt,932.4487pt)[below right,color=black]{1}; - \node at (884.236pt,2585.8792pt)[below right,color=black]{1}; - \draw[pstyle11] (2326.4872pt,938.4286pt) ..controls (2320.9872pt,942.3086pt) and (2320.23pt,942.4999pt) .. (2314.41pt,945.9099pt) ..controls (2297.88pt,955.5899pt) and (948.91pt,940.3299pt) .. (935.41pt,953.9099pt) ..controls (874.41pt,1015.2699pt) and (874.41pt,2449.9699pt) .. (935.41pt,2511.3299pt) ..controls (948.82pt,2524.8099pt) and (2289.87pt,2507.0699pt) .. (2304.41pt,2519.3299pt) ..controls (2412.06pt,2610.0299pt) and (2415.33pt,2785.9399pt) .. (2404.66pt,2896.9999pt); - \draw[pstyle12] (2331.39pt,934.9699pt) -- (2321.73pt,936.8894pt) -- (2327.3043pt,937.8521pt) -- (2326.3416pt,943.4265pt) -- (2331.39pt,934.9699pt) -- cycle; - \node at (2321.5136pt,954.4257pt)[below right,color=black]{1}; - \node at (2397.5355pt,2871.6731pt)[below right,color=black]{1}; - \draw[pstyle11] (2326.4772pt,938.4186pt) ..controls (2320.9772pt,942.2986pt) and (2320.23pt,942.4999pt) .. (2314.41pt,945.9099pt) ..controls (2286.68pt,962.1699pt) and (1183pt,934.4699pt) .. (1157.41pt,953.9099pt) ..controls (912.5pt,1140.0099pt) and (1010.04pt,1314.7799pt) .. (967.41pt,1619.3999pt) ..controls (953.67pt,1717.5499pt) and (897.49pt,2441.0999pt) .. (967.41pt,2511.3299pt) ..controls (985.32pt,2529.3199pt) and (2776.12pt,2502.8199pt) .. (2795.41pt,2519.3299pt) ..controls (2898.98pt,2607.9199pt) and (2902.14pt,2776.1399pt) .. (2890.6pt,2887.3399pt); - \draw[pstyle12] (2331.38pt,934.9599pt) -- (2321.72pt,936.8794pt) -- (2327.2943pt,937.8421pt) -- (2326.3316pt,943.4165pt) -- (2331.38pt,934.9599pt) -- cycle; - \node at (2315.6303pt,947.4159pt)[below right,color=black]{1}; - \node at (2883.6111pt,2862.0133pt)[below right,color=black]{1}; - \draw[pstyle11] (2326.4872pt,938.4286pt) ..controls (2320.9872pt,942.3086pt) and (2320.23pt,942.5099pt) .. (2314.41pt,945.9099pt) ..controls (2294.56pt,957.5199pt) and (675.23pt,938.2199pt) .. (658.41pt,953.9099pt) ..controls (132pt,1444.9799pt) and (343.08pt,2436.7499pt) .. (454.45pt,2830.2599pt); - \draw[pstyle12] (2331.39pt,934.9699pt) -- (2321.73pt,936.8894pt) -- (2327.3043pt,937.8521pt) -- (2326.3416pt,943.4265pt) -- (2331.39pt,934.9699pt) -- cycle; - \node at (2315.2866pt,950.219pt)[below right,color=black]{1}; - \node at (443.7485pt,2804.7588pt)[below right,color=black]{1}; - \draw[pstyle11] (2326.4872pt,938.4386pt) ..controls (2320.9872pt,942.3186pt) and (2320.23pt,942.5099pt) .. (2314.41pt,945.9099pt) ..controls (2290.69pt,959.7699pt) and (356.19pt,934.8399pt) .. (336.41pt,953.9099pt) ..controls (287.33pt,1001.2299pt) and (236.46pt,3359.4299pt) .. (284.41pt,3407.9099pt) ..controls (298.69pt,3422.3399pt) and (999.37pt,3403.4499pt) .. (1015.41pt,3415.9099pt) ..controls (1083.62pt,3468.8899pt) and (1110.63pt,3560.9199pt) .. (1120.23pt,3642.6299pt); - \draw[pstyle12] (2331.39pt,934.9799pt) -- (2321.73pt,936.8994pt) -- (2327.3043pt,937.8621pt) -- (2326.3416pt,943.4365pt) -- (2331.39pt,934.9799pt) -- cycle; - \node at (2315.2866pt,950.2295pt)[below right,color=black]{1}; - \node at (1112.0368pt,3617.1254pt)[below right,color=black]{1}; - \draw[pstyle11] (2326.4872pt,938.4386pt) ..controls (2320.9872pt,942.3186pt) and (2320.23pt,942.5099pt) .. (2314.41pt,945.9099pt) ..controls (2290.05pt,960.1399pt) and (303.66pt,934.2699pt) .. (283.41pt,953.9099pt) ..controls (234.47pt,1001.3699pt) and (209.76pt,3359.1499pt) .. (257.41pt,3407.9099pt) ..controls (270.93pt,3421.7399pt) and (590.17pt,3404.0099pt) .. (605.41pt,3415.9099pt) ..controls (657.93pt,3456.9099pt) and (686.43pt,3520.8999pt) .. (701.47pt,3585.4499pt); - \draw[pstyle12] (2331.39pt,934.9799pt) -- (2321.73pt,936.8994pt) -- (2327.3043pt,937.8621pt) -- (2326.3416pt,943.4365pt) -- (2331.39pt,934.9799pt) -- cycle; - \node at (2315.2866pt,932.4592pt)[below right,color=black]{1}; - \node at (692.9039pt,3560.0851pt)[below right,color=black]{1}; - \draw[pstyle11] (2326.4714pt,938.4045pt) ..controls (2320.9714pt,942.2945pt) and (2320.22pt,942.4899pt) .. (2314.41pt,945.9099pt) ..controls (2293.79pt,958.0299pt) and (1470.24pt,936.9199pt) .. (1453.41pt,953.9099pt) ..controls (1331.62pt,1076.8399pt) and (1331.18pt,2388.8399pt) .. (1453.41pt,2511.3299pt) ..controls (1472.19pt,2530.1399pt) and (5260.88pt,2502.4399pt) .. (5281.41pt,2519.3299pt) ..controls (5397.24pt,2614.5799pt) and (5398.12pt,2807.1999pt) .. (5387.76pt,2916.3699pt); - \draw[pstyle12] (2331.37pt,934.9399pt) -- (2321.7123pt,936.8711pt) -- (2327.2878pt,937.8271pt) -- (2326.3319pt,943.4026pt) -- (2331.37pt,934.9399pt) -- cycle; - \node at (2315.2656pt,932.4174pt)[below right,color=black]{1}; - \node at (5380.5018pt,2890.5705pt)[below right,color=black]{1}; - \draw[pstyle11] (2326.8699pt,938.0806pt) ..controls (2321.2499pt,942.1006pt) and (2320.36pt,942.3899pt) .. (2314.41pt,945.9099pt) ..controls (2290.65pt,959.9899pt) and (1840.07pt,938.1199pt) .. (1817.41pt,953.9099pt) ..controls (1529.57pt,1154.4499pt) and (1311.6pt,2263.0099pt) .. (1559.41pt,2511.3299pt) ..controls (1578.6pt,2530.5499pt) and (5449.84pt,2502.8099pt) .. (5471.41pt,2519.3299pt) ..controls (5589.21pt,2609.5199pt) and (5607.22pt,2795.3299pt) .. (5606.48pt,2906.6399pt); - \draw[pstyle12] (2331.75pt,934.5899pt) -- (2322.1028pt,936.5726pt) -- (2327.6833pt,937.4988pt) -- (2326.7571pt,943.0793pt) -- (2331.75pt,934.5899pt) -- cycle; - \node at (2315.6629pt,932.0515pt)[below right,color=black]{1}; - \node at (5609.3168pt,2881.4892pt)[below right,color=black]{1}; - \draw[pstyle11] (2326.4744pt,938.4087pt) ..controls (2320.9844pt,942.2987pt) and (2320.22pt,942.4899pt) .. (2314.41pt,945.9099pt) ..controls (2292.9pt,958.5499pt) and (1433.97pt,936.1899pt) .. (1416.41pt,953.9099pt) ..controls (1172.78pt,1199.7199pt) and (1171.97pt,2266.3199pt) .. (1416.41pt,2511.3299pt) ..controls (1433.35pt,2528.2999pt) and (4849.39pt,2506.1299pt) .. (4869.41pt,2519.3299pt) ..controls (4979.8pt,2592.0999pt) and (5031.31pt,2737.8899pt) .. (5055.17pt,2849.2899pt); - \draw[pstyle12] (2331.37pt,934.9399pt) -- (2321.714pt,936.8794pt) -- (2327.2903pt,937.8306pt) -- (2326.3391pt,943.4069pt) -- (2331.37pt,934.9399pt) -- cycle; - \node at (2321.4925pt,954.3939pt)[below right,color=black]{1}; - \node at (5052.2103pt,2823.5754pt)[below right,color=black]{1}; - \draw[pstyle11] (5053.923pt,2843.423pt) ..controls (5030.053pt,2732.013pt) and (4979.8pt,2592.0899pt) .. (4869.41pt,2519.3299pt) ..controls (4848.28pt,2505.3999pt) and (1243.28pt,2529.2399pt) .. (1225.41pt,2511.3299pt) ..controls (1114.27pt,2399.9399pt) and (1137.84pt,1046.4699pt) .. (1230.41pt,953.9099pt) ..controls (1241.06pt,943.2699pt) and (2301.42pt,953.5299pt) .. (2314.41pt,945.9099pt) ..controls (2320.23pt,942.4999pt) and (2325.88pt,938.8399pt) .. (2331.38pt,934.9499pt); - \draw[pstyle12] (5055.18pt,2849.2899pt) -- (5057.2057pt,2839.6516pt) -- (5054.1325pt,2844.4009pt) -- (5049.3833pt,2841.3276pt) -- (5055.18pt,2849.2899pt) -- cycle; - \node at (5045.8652pt,2823.733pt)[below right,color=black]{1}; - \node at (2315.2761pt,950.1981pt)[below right,color=black]{1}; - \draw[pstyle11] (2687.2963pt,623.6226pt) ..controls (3138.3863pt,663.8326pt) and (4324.68pt,783.1399pt) .. (4679.41pt,953.9099pt) ..controls (5053.44pt,1133.9699pt) and (4982.86pt,1432.0899pt) .. (5369.41pt,1583.3999pt) ..controls (5439.25pt,1610.7399pt) and (10711.87pt,1571.2999pt) .. (10769.41pt,1619.3999pt) ..controls (10885.29pt,1716.2699pt) and (10870.58pt,1921.3699pt) .. (10857.81pt,2010.0499pt); - \draw[pstyle12] (2681.32pt,623.0899pt) -- (2689.9293pt,627.8732pt) -- (2686.3003pt,623.5338pt) -- (2690.6396pt,619.9048pt) -- (2681.32pt,623.0899pt) -- cycle; - \node at (2688.8756pt,606.4127pt)[below right,color=black]{1}; - \node at (10859.7288pt,1984.526pt)[below right,color=black]{1}; - \draw[pstyle11] (4285.8057pt,1295.43pt) ..controls (4285.3457pt,1215.01pt) and (4296.04pt,967.0499pt) .. (4447.91pt,949.9099pt) ..controls (4492.51pt,944.8799pt) and (10866.31pt,944.8799pt) .. (10910.91pt,949.9099pt) ..controls (11019.28pt,962.1399pt) and (11046.44pt,1100.6899pt) .. (11051.25pt,1206.0299pt); - \draw[pstyle12] (4285.84pt,1301.4299pt) -- (4289.7885pt,1292.4072pt) -- (4285.8114pt,1296.43pt) -- (4281.7886pt,1292.4529pt) -- (4285.84pt,1301.4299pt) -- cycle; - \node at (4276.718pt,1276.1333pt)[below right,color=black]{1}; - \node at (11043.1849pt,1180.4449pt)[below right,color=black]{1}; - \draw[pstyle11] (4292.6107pt,1355.7312pt) ..controls (4305.0007pt,1408.5312pt) and (4341.95pt,1531.1899pt) .. (4430.41pt,1583.3999pt) ..controls (4557.96pt,1658.6899pt) and (9635.18pt,1543.5799pt) .. (9762.41pt,1619.3999pt) ..controls (9914.19pt,1709.8699pt) and (9975.81pt,1935.0899pt) .. (9994.09pt,2019.6199pt); - \draw[pstyle12] (4291.24pt,1349.8899pt) -- (4289.4019pt,1359.5657pt) -- (4292.3823pt,1354.7577pt) -- (4297.1903pt,1357.7381pt) -- (4291.24pt,1349.8899pt) -- cycle; - \node at (4293.3262pt,1357.5403pt)[below right,color=black]{1}; - \node at (9983.9995pt,1993.9799pt)[below right,color=black]{1}; - \draw[pstyle11] (4590.0838pt,1297.5051pt) ..controls (4688.1438pt,1219.8551pt) and (5006.46pt,985.3899pt) .. (5320.91pt,949.9099pt) ..controls (5353.6pt,946.2199pt) and (10025.22pt,946.2199pt) .. (10057.91pt,949.9099pt) ..controls (10158.34pt,961.2399pt) and (10182.31pt,1084.6499pt) .. (10184.63pt,1186.9999pt); - \draw[pstyle12] (4585.38pt,1301.2299pt) -- (4594.9189pt,1298.7786pt) -- (4589.2999pt,1298.1259pt) -- (4589.9526pt,1292.5068pt) -- (4585.38pt,1301.2299pt) -- cycle; - \node at (4584.0833pt,1275.882pt)[below right,color=black]{1}; - \node at (10176.8851pt,1161.5128pt)[below right,color=black]{1}; - \draw[pstyle11] (4613.2599pt,1352.478pt) ..controls (4737.3599pt,1406.588pt) and (5054.9pt,1536.7899pt) .. (5340.41pt,1583.3999pt) ..controls (5405.37pt,1594.0099pt) and (10028.14pt,1578.1199pt) .. (10079.41pt,1619.3999pt) ..controls (10202.47pt,1718.4899pt) and (10191.28pt,1936.5199pt) .. (10181.94pt,2019.4599pt); - \draw[pstyle12] (4607.76pt,1350.0799pt) -- (4614.4112pt,1357.3436pt) -- (4612.3433pt,1352.0783pt) -- (4617.6086pt,1350.0104pt) -- (4607.76pt,1350.0799pt) -- cycle; - \node at (4610.9847pt,1357.7743pt)[below right,color=black]{1}; - \node at (10183.656pt,1994.1811pt)[below right,color=black]{1}; - \draw[pstyle11] (2580.8548pt,1364.9456pt) ..controls (2605.8348pt,1422.6156pt) and (2664.07pt,1535.1799pt) .. (2758.41pt,1583.3999pt) ..controls (2852.26pt,1631.3899pt) and (4564.63pt,1565.8399pt) .. (4655.41pt,1619.3999pt) ..controls (4678.77pt,1633.1899pt) and (4700.15pt,1650.0599pt) .. (4719.69pt,1669.0599pt); - \draw[pstyle12] (2578.47pt,1359.4399pt) -- (2578.3768pt,1369.2883pt) -- (2580.4573pt,1364.028pt) -- (2585.7177pt,1366.1086pt) -- (2578.47pt,1359.4399pt) -- cycle; - \node at (2572.1743pt,1367.3015pt)[below right,color=black]{1}; - \node at (4703.5225pt,1617.1076pt)[below right,color=black]{1}; - \draw[pstyle11] (2542.4249pt,1364.3647pt) ..controls (2510.1849pt,1415.8347pt) and (2445.61pt,1512.2599pt) .. (2371.41pt,1583.3999pt) ..controls (2177.46pt,1769.3899pt) and (1903.32pt,1934.8099pt) .. (1770.93pt,2009.7999pt); - \draw[pstyle12] (2545.61pt,1359.2799pt) -- (2537.4425pt,1364.7838pt) -- (2542.9558pt,1363.5173pt) -- (2544.2223pt,1369.0305pt) -- (2545.61pt,1359.2799pt) -- cycle; - \node at (2533.2557pt,1367.112pt)[below right,color=black]{1}; - \node at (1774.6768pt,1984.5578pt)[below right,color=black]{1}; - \draw[pstyle11] (2549.4876pt,1365.1547pt) ..controls (2523.9876pt,1422.6547pt) and (2465.16pt,1534.2199pt) .. (2371.41pt,1583.3999pt) ..controls (2288.29pt,1627.0099pt) and (1592.35pt,1551.6299pt) .. (1527.41pt,1619.3999pt) ..controls (1253.14pt,1905.6199pt) and (1247.61pt,2230.5199pt) .. (1527.41pt,2511.3299pt) ..controls (1549.12pt,2533.1199pt) and (3717.45pt,2501.3399pt) .. (3742.41pt,2519.3299pt) ..controls (3782.05pt,2547.8999pt) and (3812.05pt,2586.7299pt) .. (3834.74pt,2629.9899pt); - \draw[pstyle12] (2551.92pt,1359.6699pt) -- (2544.6148pt,1366.2755pt) -- (2549.893pt,1364.2406pt) -- (2551.9279pt,1369.5188pt) -- (2551.92pt,1359.6699pt) -- cycle; - \node at (2550.2623pt,1367.3059pt)[below right,color=black]{1}; - \node at (3825.0412pt,2604.1828pt)[below right,color=black]{1}; - \draw[pstyle11] (2549.4757pt,1365.1439pt) ..controls (2523.9657pt,1422.6139pt) and (2465.12pt,1534.1399pt) .. (2371.41pt,1583.3999pt) ..controls (2291.47pt,1625.4299pt) and (1621.84pt,1554.1499pt) .. (1559.41pt,1619.3999pt) ..controls (1422.4pt,1762.6299pt) and (1419.41pt,2371.0199pt) .. (1559.41pt,2511.3299pt) ..controls (1577.67pt,2529.6199pt) and (5261.45pt,2502.9099pt) .. (5281.41pt,2519.3299pt) ..controls (5397.24pt,2614.5799pt) and (5398.12pt,2807.1999pt) .. (5387.76pt,2916.3699pt); - \draw[pstyle12] (2551.91pt,1359.6599pt) -- (2544.6026pt,1366.2631pt) -- (2549.8814pt,1364.2299pt) -- (2551.9146pt,1369.5088pt) -- (2551.91pt,1359.6599pt) -- cycle; - \node at (2540.8255pt,1367.2942pt)[below right,color=black]{1}; - \node at (5389.2893pt,2890.5705pt)[below right,color=black]{1}; - \draw[pstyle11] (3490.398pt,1365.2195pt) ..controls (3503.858pt,1422.2595pt) and (3538.97pt,1532.7799pt) .. (3620.41pt,1583.3999pt) ..controls (3718.14pt,1644.1599pt) and (4556.77pt,1560.1499pt) .. (4655.41pt,1619.3999pt) ..controls (4678.66pt,1633.3699pt) and (4699.96pt,1650.3799pt) .. (4719.44pt,1669.4799pt); - \draw[pstyle12] (3489.02pt,1359.3799pt) -- (3487.1939pt,1369.058pt) -- (3490.1683pt,1364.2462pt) -- (3494.9801pt,1367.2207pt) -- (3489.02pt,1359.3799pt) -- cycle; - \node at (3481.5353pt,1367.2304pt)[below right,color=black]{1}; - \node at (4703.2502pt,1636.079pt)[below right,color=black]{1}; - \draw[pstyle11] (3472.1274pt,1365.3991pt) ..controls (3456.1174pt,1420.1991pt) and (3418.16pt,1524.1099pt) .. (3344.41pt,1583.3999pt) ..controls (2851.23pt,1979.9299pt) and (2040.07pt,2041.2899pt) .. (1777.94pt,2050.6999pt); - \draw[pstyle12] (3473.81pt,1359.6399pt) -- (3467.4466pt,1367.157pt) -- (3472.4078pt,1364.4393pt) -- (3475.1256pt,1369.4005pt) -- (3473.81pt,1359.6399pt) -- cycle; - \node at (3463.5985pt,1367.2706pt)[below right,color=black]{1}; - \node at (1785.564pt,2051.2314pt)[below right,color=black]{1}; - \draw[pstyle11] (3474.5194pt,1365.3636pt) ..controls (3461.1894pt,1422.6136pt) and (3426.27pt,1533.4499pt) .. (3344.41pt,1583.3999pt) ..controls (3251.21pt,1640.2799pt) and (1455.91pt,1541.4999pt) .. (1379.41pt,1619.3999pt) ..controls (1309.98pt,1690.1199pt) and (1309.49pt,2441.0899pt) .. (1379.41pt,2511.3299pt) ..controls (1396.9pt,2528.8999pt) and (3145.33pt,2503.4999pt) .. (3164.41pt,2519.3299pt) ..controls (3230.26pt,2573.9399pt) and (3258.38pt,2660.1499pt) .. (3268.33pt,2744.3599pt); - \draw[pstyle12] (3475.88pt,1359.5199pt) -- (3469.9433pt,1367.3783pt) -- (3474.7461pt,1364.3896pt) -- (3477.7348pt,1369.1925pt) -- (3475.88pt,1359.5199pt) -- cycle; - \node at (3473.106pt,1367.1292pt)[below right,color=black]{1}; - \node at (3260.5962pt,2718.7826pt)[below right,color=black]{1}; - \draw[pstyle11] (1990.8576pt,1365.0018pt) ..controls (2009.6776pt,1422.4618pt) and (2055.62pt,1534.4899pt) .. (2143.41pt,1583.3999pt) ..controls (2265.33pt,1651.3399pt) and (4535.04pt,1548.7599pt) .. (4655.41pt,1619.3999pt) ..controls (4678.8pt,1633.1299pt) and (4700.21pt,1649.9599pt) .. (4719.77pt,1668.9299pt); - \draw[pstyle12] (1988.99pt,1359.2999pt) -- (1987.9901pt,1369.0979pt) -- (1990.5463pt,1364.0515pt) -- (1995.5927pt,1366.6078pt) -- (1988.99pt,1359.2999pt) -- cycle; - \node at (1982.0534pt,1367.1357pt)[below right,color=black]{1}; - \node at (4703.1855pt,1634.1412pt)[below right,color=black]{1}; - \draw[pstyle11] (1964.3698pt,1364.8319pt) ..controls (1918.0598pt,1482.3219pt) and (1761.91pt,1878.5499pt) .. (1710.02pt,2010.2099pt); - \draw[pstyle12] (1966.57pt,1359.2499pt) -- (1959.5483pt,1366.1561pt) -- (1964.7365pt,1363.9016pt) -- (1966.991pt,1369.0898pt) -- (1966.57pt,1359.2499pt) -- cycle; - \node at (1955.4997pt,1367.0764pt)[below right,color=black]{1}; - \node at (1704.1392pt,1984.7125pt)[below right,color=black]{1}; - \draw[pstyle11] (1826.9915pt,1352.9886pt) ..controls (1591.6915pt,1396.8186pt) and (1152.49pt,1493.4299pt) .. (1060.41pt,1619.3999pt) ..controls (1001.93pt,1699.4099pt) and (990.47pt,2441.1199pt) .. (1060.41pt,2511.3299pt) ..controls (1081.03pt,2532.0299pt) and (3141.91pt,2500.6799pt) .. (3164.41pt,2519.3299pt) ..controls (3230.28pt,2573.9199pt) and (3258.4pt,2660.1199pt) .. (3268.35pt,2744.3299pt); - \draw[pstyle12] (1832.89pt,1351.8899pt) -- (1823.3097pt,1349.6056pt) -- (1827.9745pt,1352.8055pt) -- (1824.7747pt,1357.4704pt) -- (1832.89pt,1351.8899pt) -- cycle; - \node at (1816.6687pt,1335.8791pt)[below right,color=black]{1}; - \node at (3268.8793pt,2718.7517pt)[below right,color=black]{1}; - \draw[pstyle11] (1827.0276pt,1350.9914pt) ..controls (1583.9976pt,1392.9814pt) and (1120.37pt,1488.3099pt) .. (1023.41pt,1619.3999pt) ..controls (964.48pt,1699.0799pt) and (953.48pt,2441.0999pt) .. (1023.41pt,2511.3299pt) ..controls (1042.27pt,2530.2599pt) and (2926.37pt,2502.8499pt) .. (2947.41pt,2519.3299pt) ..controls (3003.16pt,2562.9799pt) and (3035.39pt,2628.3899pt) .. (3053.49pt,2696.8999pt); - \draw[pstyle12] (1832.94pt,1349.9699pt) -- (1823.3904pt,1347.5606pt) -- (1828.013pt,1350.8212pt) -- (1824.7524pt,1355.4438pt) -- (1832.94pt,1349.9699pt) -- cycle; - \node at (1816.7214pt,1351.7838pt)[below right,color=black]{1}; - \node at (3045.0191pt,2671.6958pt)[below right,color=black]{1}; - \draw[pstyle11] (3765.3305pt,1365.1113pt) ..controls (3778.6705pt,1421.9713pt) and (3813.49pt,1532.2299pt) .. (3894.41pt,1583.3999pt) ..controls (4037.49pt,1673.8999pt) and (4510.83pt,1531.3199pt) .. (4655.41pt,1619.3999pt) ..controls (4678.76pt,1633.6299pt) and (4700.15pt,1650.9099pt) .. (4719.7pt,1670.2799pt); - \draw[pstyle12] (3763.96pt,1359.2699pt) -- (3762.1214pt,1368.9456pt) -- (3765.102pt,1364.1377pt) -- (3769.9099pt,1367.1183pt) -- (3763.96pt,1359.2699pt) -- cycle; - \node at (3756.4655pt,1367.1001pt)[below right,color=black]{1}; - \node at (4703.7046pt,1654.4922pt)[below right,color=black]{1}; - \draw[pstyle11] (3747.7001pt,1365.2799pt) ..controls (3732.3501pt,1420.3899pt) and (3695.27pt,1525.3499pt) .. (3620.41pt,1583.3999pt) ..controls (3320.79pt,1815.7899pt) and (2110.35pt,1995.4399pt) .. (1778.12pt,2041.0799pt); - \draw[pstyle12] (3749.31pt,1359.4999pt) -- (3743.0418pt,1367.0966pt) -- (3747.9684pt,1364.3165pt) -- (3750.7484pt,1369.2431pt) -- (3749.31pt,1359.4999pt) -- cycle; - \node at (3739.1889pt,1367.1057pt)[below right,color=black]{1}; - \node at (1785.7595pt,2022.3238pt)[below right,color=black]{1}; - \draw[pstyle11] (3749.6707pt,1365.3585pt) ..controls (3736.5607pt,1422.6085pt) and (3702.07pt,1533.4299pt) .. (3620.41pt,1583.3999pt) ..controls (3524.34pt,1642.1999pt) and (1672.34pt,1539.0599pt) .. (1593.41pt,1619.3999pt) ..controls (1315.61pt,1902.1899pt) and (1313.75pt,2230.3799pt) .. (1593.41pt,2511.3299pt) ..controls (1610.61pt,2528.5999pt) and (3329.62pt,2503.7999pt) .. (3348.41pt,2519.3299pt) ..controls (3399.52pt,2561.5499pt) and (3428.13pt,2622.7599pt) .. (3443.22pt,2687.3399pt); - \draw[pstyle12] (3751.01pt,1359.5099pt) -- (3745.102pt,1367.3899pt) -- (3749.8939pt,1364.3837pt) -- (3752.9001pt,1369.1757pt) -- (3751.01pt,1359.5099pt) -- cycle; - \node at (3748.2604pt,1367.1174pt)[below right,color=black]{1}; - \node at (3443.3528pt,2661.8817pt)[below right,color=black]{1}; - \draw[pstyle11] (2261.8693pt,1365.258pt) ..controls (2270.1093pt,1422.198pt) and (2295.13pt,1532.4699pt) .. (2372.41pt,1583.3999pt) ..controls (2478.32pt,1653.2099pt) and (4546.06pt,1555.1199pt) .. (4655.41pt,1619.3999pt) ..controls (4678.79pt,1633.1499pt) and (4700.19pt,1649.9899pt) .. (4719.74pt,1668.9699pt); - \draw[pstyle12] (2261.01pt,1359.3199pt) -- (2258.3402pt,1368.8pt) -- (2261.7261pt,1364.2684pt) -- (2266.2578pt,1367.6542pt) -- (2261.01pt,1359.3199pt) -- cycle; - \node at (2262.4464pt,1367.1593pt)[below right,color=black]{1}; - \node at (4703.5769pt,1617.0096pt)[below right,color=black]{1}; - \draw[pstyle11] (2245.1125pt,1364.9986pt) ..controls (2228.1325pt,1415.6386pt) and (2193.16pt,1509.3099pt) .. (2143.41pt,1583.3999pt) ..controls (2024.21pt,1760.9199pt) and (1834.91pt,1932.5999pt) .. (1744.6pt,2009.8099pt); - \draw[pstyle12] (2247.02pt,1359.3099pt) -- (2240.3663pt,1366.5713pt) -- (2245.4304pt,1364.0505pt) -- (2247.9513pt,1369.1146pt) -- (2247.02pt,1359.3099pt) -- cycle; - \node at (2236.4019pt,1367.1475pt)[below right,color=black]{1}; - \node at (1744.1505pt,1984.5694pt)[below right,color=black]{1}; - \draw[pstyle11] (2252.8517pt,1365.4867pt) ..controls (2244.5517pt,1422.2367pt) and (2219.59pt,1531.4999pt) .. (2143.41pt,1583.3999pt) ..controls (2066.94pt,1635.5099pt) and (1375.41pt,1552.5799pt) .. (1311.41pt,1619.3999pt) ..controls (1037.23pt,1905.6999pt) and (1031.61pt,2230.5199pt) .. (1311.41pt,2511.3299pt) ..controls (1333.22pt,2533.2199pt) and (3512.4pt,2499.8699pt) .. (3536.41pt,2519.3299pt) ..controls (3632.08pt,2596.8399pt) and (3652.35pt,2740.0399pt) .. (3651.97pt,2849.4399pt); - \draw[pstyle12] (2253.72pt,1359.5499pt) -- (2248.4597pt,1367.8763pt) -- (2252.9964pt,1364.4973pt) -- (2256.3754pt,1369.034pt) -- (2253.72pt,1359.5499pt) -- cycle; - \node at (2238.4079pt,1367.6552pt)[below right,color=black]{1}; - \node at (3644.4482pt,2823.8912pt)[below right,color=black]{1}; - \draw[pstyle11] (2252.9093pt,1365.5478pt) ..controls (2244.6693pt,1422.3978pt) and (2219.79pt,1531.8099pt) .. (2143.41pt,1583.3999pt) ..controls (2049.16pt,1647.0699pt) and (1199.41pt,1537.5799pt) .. (1120.41pt,1619.3999pt) ..controls (1051.58pt,1690.6999pt) and (1050.46pt,2441.1199pt) .. (1120.41pt,2511.3299pt) ..controls (1142.25pt,2533.2499pt) and (3324.54pt,2499.6299pt) .. (3348.41pt,2519.3299pt) ..controls (3399.54pt,2561.5199pt) and (3428.16pt,2622.7199pt) .. (3443.25pt,2687.2999pt); - \draw[pstyle12] (2253.77pt,1359.6099pt) -- (2248.5204pt,1367.943pt) -- (2253.0528pt,1364.5582pt) -- (2256.4376pt,1369.0906pt) -- (2253.77pt,1359.6099pt) -- cycle; - \node at (2244.443pt,1367.2353pt)[below right,color=black]{1}; - \node at (3435.004pt,2662.3348pt)[below right,color=black]{1}; - \draw[pstyle11] (2252.9115pt,1365.5582pt) ..controls (2244.6915pt,1422.4182pt) and (2219.83pt,1531.8599pt) .. (2143.41pt,1583.3999pt) ..controls (2045.71pt,1649.3099pt) and (1165.31pt,1534.6699pt) .. (1083.41pt,1619.3999pt) ..controls (1014.53pt,1690.6599pt) and (1013.48pt,2441.0999pt) .. (1083.41pt,2511.3299pt) ..controls (1101.68pt,2529.6699pt) and (2927.03pt,2503.3599pt) .. (2947.41pt,2519.3299pt) ..controls (3003.16pt,2562.9899pt) and (3035.39pt,2628.3999pt) .. (3053.48pt,2696.8999pt); - \draw[pstyle12] (2253.77pt,1359.6199pt) -- (2248.5235pt,1367.955pt) -- (2253.0546pt,1364.5685pt) -- (2256.4411pt,1369.0996pt) -- (2253.77pt,1359.6199pt) -- cycle; - \node at (2251.5118pt,1367.247pt)[below right,color=black]{1}; - \node at (3053.2213pt,2671.6958pt)[below right,color=black]{1}; - \draw[pstyle11] (2913.489pt,1365.3518pt) ..controls (2928.589pt,1422.6518pt) and (2966.97pt,1533.6099pt) .. (3050.41pt,1583.3999pt) ..controls (3203.58pt,1674.8199pt) and (4501.94pt,1528.4899pt) .. (4655.41pt,1619.3999pt) ..controls (4678.75pt,1633.2299pt) and (4700.11pt,1650.1299pt) .. (4719.64pt,1669.1499pt); - \draw[pstyle12] (2911.96pt,1359.5499pt) -- (2910.3855pt,1369.2721pt) -- (2913.2341pt,1364.3848pt) -- (2918.1214pt,1367.2335pt) -- (2911.96pt,1359.5499pt) -- cycle; - \node at (2904.6261pt,1367.1646pt)[below right,color=black]{1}; - \node at (4703.468pt,1635.7196pt)[below right,color=black]{1}; - \draw[pstyle11] (2891.4734pt,1365.0537pt) ..controls (2872.1634pt,1418.5637pt) and (2829.21pt,1519.4999pt) .. (2758.41pt,1583.3999pt) ..controls (2456.97pt,1855.4899pt) and (1972.34pt,1989.4199pt) .. (1778.02pt,2034.3999pt); - \draw[pstyle12] (2893.51pt,1359.4099pt) -- (2886.6925pt,1366.5178pt) -- (2891.8128pt,1364.113pt) -- (2894.2175pt,1369.2333pt) -- (2893.51pt,1359.4099pt) -- cycle; - \node at (2882.7978pt,1367.2659pt)[below right,color=black]{1}; - \node at (1785.4216pt,2012.2311pt)[below right,color=black]{1}; - \draw[pstyle11] (2895.3287pt,1365.3412pt) ..controls (2880.2087pt,1422.6212pt) and (2841.82pt,1533.5599pt) .. (2758.41pt,1583.3999pt) ..controls (2612.73pt,1670.4699pt) and (1387.39pt,1552.5299pt) .. (1231.41pt,1619.3999pt) ..controls (712.09pt,1842.0499pt) and (549.36pt,1997.1899pt) .. (333.41pt,2519.3299pt) ..controls (295.68pt,2610.5599pt) and (264.01pt,3337.6799pt) .. (333.41pt,3407.9099pt) ..controls (346.73pt,3421.3799pt) and (1000.45pt,3404.2799pt) .. (1015.41pt,3415.9099pt) ..controls (1083.6pt,3468.9099pt) and (1110.61pt,3560.9499pt) .. (1120.21pt,3642.6499pt); - \draw[pstyle12] (2896.86pt,1359.5399pt) -- (2890.6955pt,1367.2209pt) -- (2895.5839pt,1364.3743pt) -- (2898.4305pt,1369.2627pt) -- (2896.86pt,1359.5399pt) -- cycle; - \node at (2893.9052pt,1367.1528pt)[below right,color=black]{1}; - \node at (1120.4034pt,3617.1464pt)[below right,color=black]{1}; - \draw[pstyle11] (3218.6273pt,1403.3919pt) ..controls (3239.3073pt,1464.3619pt) and (3276.75pt,1542.9299pt) .. (3344.41pt,1583.3999pt) ..controls (3469.46pt,1658.2199pt) and (4530.22pt,1544.8199pt) .. (4655.41pt,1619.3999pt) ..controls (4678.71pt,1633.2899pt) and (4700.05pt,1650.2299pt) .. (4719.56pt,1669.2899pt); - \draw[pstyle12] (3216.7pt,1397.7099pt) -- (3215.8029pt,1407.5178pt) -- (3218.306pt,1402.4449pt) -- (3223.3789pt,1404.9481pt) -- (3216.7pt,1397.7099pt) -- cycle; - \node at (3218.9373pt,1405.421pt)[below right,color=black]{1}; - \node at (4703.5587pt,1653.4604pt)[below right,color=black]{1}; - \draw[pstyle11] (3170.7152pt,1403.1241pt) ..controls (3147.5052pt,1460.6541pt) and (3109.55pt,1534.4199pt) .. (3050.41pt,1583.3999pt) ..controls (2651.85pt,1913.5399pt) and (2007.18pt,2016.6399pt) .. (1777.77pt,2043.8199pt); - \draw[pstyle12] (3172.96pt,1397.5599pt) -- (3165.8832pt,1404.4097pt) -- (3171.0893pt,1402.1968pt) -- (3173.3022pt,1407.4028pt) -- (3172.96pt,1397.5599pt) -- cycle; - \node at (3162.2658pt,1405.2567pt)[below right,color=black]{1}; - \node at (1785.6561pt,2025.2439pt)[below right,color=black]{1}; - \draw[pstyle11] (3176.3817pt,1403.215pt) ..controls (3155.7717pt,1464.295pt) and (3118.33pt,1543.1199pt) .. (3050.41pt,1583.3999pt) ..controls (2964.15pt,1634.5699pt) and (1330.27pt,1565.9399pt) .. (1245.41pt,1619.3999pt) ..controls (869.91pt,1855.9699pt) and (1172.07pt,2275.0199pt) .. (796.41pt,2511.3299pt) ..controls (776.14pt,2524.0799pt) and (382.19pt,2502.2299pt) .. (365.41pt,2519.3299pt) ..controls (330.83pt,2554.5499pt) and (330.72pt,3372.7899pt) .. (365.41pt,3407.9099pt) ..controls (378.1pt,3420.7499pt) and (1001.16pt,3404.8199pt) .. (1015.41pt,3415.9099pt) ..controls (1083.58pt,3468.9299pt) and (1110.59pt,3560.9699pt) .. (1120.2pt,3642.6699pt); - \draw[pstyle12] (3178.3pt,1397.5299pt) -- (3171.6325pt,1404.7787pt) -- (3176.7014pt,1402.2675pt) -- (3179.2126pt,1407.3364pt) -- (3178.3pt,1397.5299pt) -- cycle; - \node at (3176.8773pt,1405.2238pt)[below right,color=black]{1}; - \node at (1111.5596pt,3617.4032pt)[below right,color=black]{1}; - \draw[pstyle11] (3176.2681pt,1403.5038pt) ..controls (3155.6281pt,1464.5438pt) and (3118.2pt,1543.1499pt) .. (3050.41pt,1583.3999pt) ..controls (2967.7pt,1632.5099pt) and (1389.35pt,1553.3699pt) .. (1319.41pt,1619.3999pt) ..controls (1174.84pt,1755.8899pt) and (1394.75pt,2375.6699pt) .. (1249.41pt,2511.3299pt) ..controls (1232.15pt,2527.4399pt) and (416.03pt,2502.5499pt) .. (399.41pt,2519.3299pt) ..controls (364.67pt,2554.3999pt) and (364.68pt,3372.8299pt) .. (399.41pt,3407.9099pt) ..controls (415.12pt,3423.7799pt) and (1185.56pt,3402.4899pt) .. (1203.41pt,3415.9099pt) ..controls (1220.78pt,3428.9699pt) and (1235.69pt,3444.4999pt) .. (1248.48pt,3461.7199pt); - \draw[pstyle12] (3178.19pt,1397.8199pt) -- (3171.5179pt,1405.0644pt) -- (3176.5884pt,1402.5564pt) -- (3179.0963pt,1407.627pt) -- (3178.19pt,1397.8199pt) -- cycle; - \node at (3161.4073pt,1405.2249pt)[below right,color=black]{1}; - \node at (1246.8688pt,3436.3646pt)[below right,color=black]{1}; - \draw[pstyle11] (3176.2253pt,1403.4428pt) ..controls (3155.5653pt,1464.4428pt) and (3118.12pt,1543.0199pt) .. (3050.41pt,1583.3999pt) ..controls (2980.87pt,1624.8799pt) and (1649.95pt,1561.4499pt) .. (1593.41pt,1619.3999pt) ..controls (1558.81pt,1654.8699pt) and (1558.41pt,2476.2499pt) .. (1593.41pt,2511.3299pt) ..controls (1612.43pt,2530.3899pt) and (5450.03pt,2502.9499pt) .. (5471.41pt,2519.3299pt) ..controls (5589.21pt,2609.5199pt) and (5607.22pt,2795.3299pt) .. (5606.48pt,2906.6399pt); - \draw[pstyle12] (3178.15pt,1397.7599pt) -- (3171.4743pt,1405.0011pt) -- (3176.5461pt,1402.4957pt) -- (3179.0515pt,1407.5674pt) -- (3178.15pt,1397.7599pt) -- cycle; - \node at (3168.0226pt,1405.2228pt)[below right,color=black]{1}; - \node at (5607.276pt,2881.1214pt)[below right,color=black]{1}; - \draw[pstyle11] (3218.2752pt,1403.4794pt) ..controls (3238.7852pt,1464.7294pt) and (3276.17pt,1543.6499pt) .. (3344.41pt,1583.3999pt) ..controls (3448.35pt,1643.9599pt) and (11896.09pt,1569.2199pt) .. (12005.41pt,1619.3999pt) ..controls (13094.12pt,2119.2299pt) and (13799.65pt,3583.7499pt) .. (13892.87pt,3785.8399pt); - \draw[pstyle12] (3216.37pt,1397.7899pt) -- (3215.4348pt,1407.5943pt) -- (3217.9576pt,1402.5311pt) -- (3223.0207pt,1405.054pt) -- (3216.37pt,1397.7899pt) -- cycle; - \node at (3209.766pt,1405.2555pt)[below right,color=black]{1}; - \node at (13881.1926pt,3760.5459pt)[below right,color=black]{1}; - \draw[pstyle11] (4046.0938pt,1393.7065pt) ..controls (4070.0938pt,1452.6165pt) and (4104.24pt,1538.6799pt) .. (4132.41pt,1619.3999pt) ..controls (4181.86pt,1761.1199pt) and (4232.02pt,1932.0199pt) .. (4254.37pt,2009.9399pt); - \draw[pstyle12] (4043.83pt,1388.1499pt) -- (4043.5212pt,1397.9939pt) -- (4045.7165pt,1392.7804pt) -- (4050.93pt,1394.9756pt) -- (4043.83pt,1388.1499pt) -- cycle; - \node at (4047.0689pt,1395.9535pt)[below right,color=black]{1}; - \node at (4243.8431pt,1984.7201pt)[below right,color=black]{1}; - \draw[pstyle11] (4018.41pt,1394.2199pt) ..controls (4018.41pt,1538.1299pt) and (4018.41pt,1887.6299pt) .. (4018.41pt,2010.0999pt); - \draw[pstyle12] (4018.41pt,1388.2199pt) -- (4014.41pt,1397.2199pt) -- (4018.41pt,1393.2199pt) -- (4022.41pt,1397.2199pt) -- (4018.41pt,1388.2199pt) -- cycle; - \node at (4010.0174pt,1395.5848pt)[below right,color=black]{1}; - \node at (4019.1039pt,1984.5843pt)[below right,color=black]{1}; - \draw[pstyle11] (4032.1274pt,1394.0326pt) ..controls (4047.4574pt,1453.9426pt) and (4078.4pt,1536.7599pt) .. (4142.41pt,1583.3999pt) ..controls (4235.98pt,1651.5899pt) and (4312.68pt,1543.8499pt) .. (4400.41pt,1619.3999pt) ..controls (4517.41pt,1720.1699pt) and (4530.14pt,1922.2399pt) .. (4529.79pt,2010.0299pt); - \draw[pstyle12] (4030.64pt,1388.2199pt) -- (4028.9959pt,1397.9306pt) -- (4031.8795pt,1393.0638pt) -- (4036.7462pt,1395.9474pt) -- (4030.64pt,1388.2199pt) -- cycle; - \node at (4032.3336pt,1395.5848pt)[below right,color=black]{1}; - \node at (4530.7126pt,1984.5027pt)[below right,color=black]{1}; - \draw[pstyle11] (4015.4276pt,1257.3202pt) ..controls (4014.3576pt,1154.3602pt) and (4029.69pt,964.5999pt) .. (4159.91pt,949.9099pt) ..controls (4184.03pt,947.1899pt) and (11126.79pt,947.1899pt) .. (11150.91pt,949.9099pt) ..controls (11220.94pt,957.8099pt) and (11254.15pt,1020.0399pt) .. (11268.82pt,1091.6599pt); - \draw[pstyle12] (4015.49pt,1263.3199pt) -- (4019.3963pt,1254.2788pt) -- (4015.438pt,1258.3202pt) -- (4011.3967pt,1254.362pt) -- (4015.49pt,1263.3199pt) -- cycle; - \node at (4015.6451pt,1237.7298pt)[below right,color=black]{1}; - \node at (11260.5898pt,1065.9578pt)[below right,color=black]{1}; - \draw[pstyle11] (4030.276pt,1393.897pt) ..controls (4044.406pt,1455.277pt) and (4074.71pt,1540.6499pt) .. (4142.41pt,1583.3999pt) ..controls (4217.25pt,1630.6699pt) and (10448.63pt,1561.3099pt) .. (10515.41pt,1619.3999pt) ..controls (10637.62pt,1725.7199pt) and (10599.94pt,1955.3499pt) .. (10583.95pt,2029.0699pt); - \draw[pstyle12] (4028.93pt,1388.0499pt) -- (4027.051pt,1397.7179pt) -- (4030.0517pt,1392.9225pt) -- (4034.8471pt,1395.9232pt) -- (4028.93pt,1388.0499pt) -- cycle; - \node at (4024.0346pt,1396.1392pt)[below right,color=black]{1}; - \node at (10586.4432pt,2003.7554pt)[below right,color=black]{1}; - \draw[pstyle11] (4030.276pt,1393.897pt) ..controls (4044.406pt,1455.277pt) and (4074.71pt,1540.6599pt) .. (4142.41pt,1583.3999pt) ..controls (4220.24pt,1632.5399pt) and (10698.75pt,1560.4199pt) .. (10769.41pt,1619.3999pt) ..controls (10885.35pt,1716.1999pt) and (10870.61pt,1921.3299pt) .. (10857.82pt,2010.0299pt); - \draw[pstyle12] (4028.93pt,1388.0499pt) -- (4027.051pt,1397.7179pt) -- (4030.0517pt,1392.9225pt) -- (4034.8471pt,1395.9232pt) -- (4028.93pt,1388.0499pt) -- cycle; - \node at (4021.6642pt,1395.8426pt)[below right,color=black]{1}; - \node at (10866.3717pt,1984.5973pt)[below right,color=black]{1}; - \draw[pstyle11] (4030.2547pt,1393.9273pt) ..controls (4044.3747pt,1455.3273pt) and (4074.67pt,1540.7199pt) .. (4142.41pt,1583.3999pt) ..controls (4255.32pt,1654.5599pt) and (13654.26pt,1527.8999pt) .. (13751.41pt,1619.3999pt) ..controls (13769.53pt,1636.4699pt) and (13863.44pt,3383.0899pt) .. (13865.41pt,3407.9099pt) ..controls (13876.79pt,3551.5699pt) and (13894.46pt,3723.7799pt) .. (13900.93pt,3785.5699pt); - \draw[pstyle12] (4028.91pt,1388.0799pt) -- (4027.0288pt,1397.7474pt) -- (4030.0306pt,1392.9527pt) -- (4034.8253pt,1395.9545pt) -- (4028.91pt,1388.0799pt) -- cycle; - \node at (4030.517pt,1395.8758pt)[below right,color=black]{1}; - \node at (13891.318pt,3760.2067pt)[below right,color=black]{1}; - \draw[pstyle11] (4264.5857pt,2004.0604pt) ..controls (4263.4757pt,1914.4704pt) and (4275.29pt,1712.2299pt) .. (4400.41pt,1619.3999pt) ..controls (4535.87pt,1518.9099pt) and (10329.95pt,1673.7099pt) .. (10472.41pt,1583.3999pt) ..controls (10517.91pt,1554.5599pt) and (10546.96pt,1503.7299pt) .. (10565.33pt,1454.8699pt); - \draw[pstyle12] (4264.66pt,2010.0599pt) -- (4268.5482pt,2001.011pt) -- (4264.5981pt,2005.0603pt) -- (4260.5488pt,2001.1101pt) -- (4264.66pt,2010.0599pt) -- cycle; - \node at (4265.0633pt,1984.5377pt)[below right,color=black]{1}; - \node at (10555.4768pt,1462.4206pt)[below right,color=black]{1}; - \draw[pstyle11] (4262.9454pt,2003.8362pt) ..controls (4258.3554pt,1903.6562pt) and (4264.11pt,1666.3799pt) .. (4417.91pt,1601.3999pt) ..controls (4455.91pt,1585.3499pt) and (10319.91pt,1585.3499pt) .. (10357.91pt,1601.3999pt) ..controls (10517.12pt,1668.6699pt) and (10469.79pt,1944.7999pt) .. (10451.25pt,2028.9199pt); - \draw[pstyle12] (4263.22pt,2009.8299pt) -- (4266.8039pt,2000.6563pt) -- (4262.9912pt,2004.8351pt) -- (4258.8123pt,2001.0224pt) -- (4263.22pt,2009.8299pt) -- cycle; - \node at (4254.1035pt,1984.5926pt)[below right,color=black]{1}; - \node at (10453.819pt,2003.5669pt)[below right,color=black]{1}; - \draw[pstyle11] (4014.1946pt,2003.961pt) ..controls (4008.7446pt,1914.631pt) and (4010.94pt,1713.5999pt) .. (4132.41pt,1619.3999pt) ..controls (4267.61pt,1514.5599pt) and (10152.14pt,1682.7799pt) .. (10291.41pt,1583.3999pt) ..controls (10338.51pt,1549.7999pt) and (10361.14pt,1489.5599pt) .. (10371.94pt,1435.8799pt); - \draw[pstyle12] (4014.56pt,2009.9499pt) -- (4018.0045pt,2000.723pt) -- (4014.2555pt,2004.9592pt) -- (4010.0194pt,2001.2102pt) -- (4014.56pt,2009.9499pt) -- cycle; - \node at (4014.6141pt,1984.7317pt)[below right,color=black]{1}; - \node at (10363.0892pt,1443.5083pt)[below right,color=black]{1}; - \draw[pstyle11] (4012.6448pt,2004.1156pt) ..controls (4003.3348pt,1903.9356pt) and (3997.85pt,1665.6499pt) .. (4149.91pt,1601.3999pt) ..controls (4188.98pt,1584.8999pt) and (10218.84pt,1584.8999pt) .. (10257.91pt,1601.3999pt) ..controls (10415.95pt,1668.1699pt) and (10355.15pt,1944.6399pt) .. (10332.46pt,2028.8899pt); - \draw[pstyle12] (4013.2pt,2010.0899pt) -- (4016.35pt,2000.7584pt) -- (4012.7373pt,2005.1114pt) -- (4008.3844pt,2001.4986pt) -- (4013.2pt,2010.0899pt) -- cycle; - \node at (4003.7059pt,1984.5726pt)[below right,color=black]{1}; - \node at (10335.3391pt,2003.5292pt)[below right,color=black]{1}; - \draw[pstyle11] (4524.3194pt,2003.9501pt) ..controls (4519.0894pt,1914.5901pt) and (4521.78pt,1713.5199pt) .. (4643.41pt,1619.3999pt) ..controls (4776.9pt,1516.1199pt) and (10579.72pt,1678.1399pt) .. (10719.41pt,1583.3999pt) ..controls (10757.02pt,1557.8999pt) and (10781.04pt,1516.2399pt) .. (10796.37pt,1473.8199pt); - \draw[pstyle12] (4524.67pt,2009.9399pt) -- (4528.1373pt,2000.7216pt) -- (4524.3779pt,2004.9484pt) -- (4520.151pt,2001.189pt) -- (4524.67pt,2009.9399pt) -- cycle; - \node at (4524.7418pt,1984.7201pt)[below right,color=black]{1}; - \node at (10795.2632pt,1481.4251pt)[below right,color=black]{1}; - \draw[pstyle11] (4522.7584pt,2004.1244pt) ..controls (4513.6784pt,1903.9444pt) and (4508.76pt,1665.6899pt) .. (4660.91pt,1601.3999pt) ..controls (4699.06pt,1585.2899pt) and (10585.76pt,1585.2899pt) .. (10623.91pt,1601.3999pt) ..controls (10782.73pt,1668.5099pt) and (10731.39pt,1944.7499pt) .. (10711.61pt,2028.9099pt); - \draw[pstyle12] (4523.3pt,2010.0999pt) -- (4526.4713pt,2000.7756pt) -- (4522.8487pt,2005.1203pt) -- (4518.5039pt,2001.4977pt) -- (4523.3pt,2010.0999pt) -- cycle; - \node at (4513.8227pt,1984.5843pt)[below right,color=black]{1}; - \node at (10714.2721pt,2003.5544pt)[below right,color=black]{1}; - \draw[pstyle11] (719.7537pt,3237.6695pt) ..controls (718.5237pt,3348.9695pt) and (717.11pt,3475.5599pt) .. (715.89pt,3585.5999pt); - \draw[pstyle12] (719.82pt,3231.6699pt) -- (715.7208pt,3240.6251pt) -- (719.7647pt,3236.6696pt) -- (723.7203pt,3240.7136pt) -- (719.82pt,3231.6699pt) -- cycle; - \node at (711.6099pt,3239.6402pt)[below right,color=black]{1}; - \node at (707.8421pt,3560.2405pt)[below right,color=black]{1}; - \draw[pstyle11] (1033.0546pt,3390.1336pt) ..controls (1052.0246pt,3481.1236pt) and (1070.05pt,3567.5699pt) .. (1085.74pt,3642.7899pt); - \draw[pstyle12] (1031.83pt,3384.2599pt) -- (1029.7511pt,3393.8868pt) -- (1032.8505pt,3389.1547pt) -- (1037.5827pt,3392.2541pt) -- (1031.83pt,3384.2599pt) -- cycle; - \node at (1025.3861pt,3392.2933pt)[below right,color=black]{1}; - \node at (1075.8762pt,3617.2932pt)[below right,color=black]{1}; - \draw[pstyle11] (935.9436pt,3390.2552pt) ..controls (932.2036pt,3485.1252pt) and (928.63pt,3575.4399pt) .. (925.6pt,3652.3099pt); - \draw[pstyle12] (936.18pt,3384.2599pt) -- (931.8286pt,3393.0953pt) -- (935.983pt,3389.256pt) -- (939.8224pt,3393.4105pt) -- (936.18pt,3384.2599pt) -- cycle; - \node at (927.7932pt,3392.2933pt)[below right,color=black]{1}; - \node at (917.7227pt,3626.7556pt)[below right,color=black]{1}; - \draw[pstyle11] (972.6295pt,2605.4472pt) ..controls (995.7295pt,2554.0472pt) and (1030.72pt,2521.9999pt) .. (1089.91pt,2515.3299pt) ..controls (1118.71pt,2512.0799pt) and (5235.11pt,2512.0799pt) .. (5263.91pt,2515.3299pt) ..controls (5424pt,2533.3899pt) and (5410.01pt,2783.3899pt) .. (5391pt,2916.1199pt); - \draw[pstyle12] (970.17pt,2610.9199pt) -- (977.5078pt,2604.3505pt) -- (972.2196pt,2606.3593pt) -- (970.2108pt,2601.0711pt) -- (970.17pt,2610.9199pt) -- cycle; - \node at (962.4736pt,2585.8996pt)[below right,color=black]{1}; - \node at (5392.7896pt,2890.576pt)[below right,color=black]{1}; - \draw[pstyle11] (2689.8889pt,2824.2706pt) ..controls (2688.2789pt,2718.2006pt) and (2707.2pt,2593.2299pt) .. (2795.41pt,2519.3299pt) ..controls (2815.21pt,2502.7299pt) and (4633.22pt,2524.5499pt) .. (4655.41pt,2511.3299pt) ..controls (4678.72pt,2497.4399pt) and (4699.99pt,2480.5399pt) .. (4719.4pt,2461.5099pt); - \draw[pstyle12] (2689.98pt,2830.2699pt) -- (2693.8429pt,2821.2102pt) -- (2689.9041pt,2825.2705pt) -- (2685.8439pt,2821.3316pt) -- (2689.98pt,2830.2699pt) -- cycle; - \node at (2678.4354pt,2805.0095pt)[below right,color=black]{1}; - \node at (4703.392pt,2479.1022pt)[below right,color=black]{1}; - \draw[pstyle11] (13034.4293pt,1497.1648pt) ..controls (12994.1593pt,1533.7548pt) and (12951.81pt,1563.4699pt) .. (12901.41pt,1583.3999pt) ..controls (12776.77pt,1632.6899pt) and (8210.1pt,1609.8199pt) .. (8076.41pt,1619.3999pt) ..controls (6935.44pt,1701.2199pt) and (5578.8pt,1931.4499pt) .. (5091.28pt,2018.4799pt); - \draw[pstyle12] (13038.87pt,1493.1299pt) -- (13029.519pt,1496.2218pt) -- (13035.1694pt,1496.4923pt) -- (13034.8989pt,1502.1427pt) -- (13038.87pt,1493.1299pt) -- cycle; - \node at (13024.7803pt,1500.5686pt)[below right,color=black]{1}; - \node at (5099.2982pt,1999.6647pt)[below right,color=black]{1}; - \draw[pstyle11] (13076.6812pt,1498.1371pt) ..controls (12900.7812pt,1773.6471pt) and (12508.69pt,2309.1399pt) .. (12005.41pt,2511.3299pt) ..controls (11985.2pt,2519.4499pt) and (5748.71pt,2506.0899pt) .. (5731.41pt,2519.3299pt) ..controls (5613.58pt,2609.4699pt) and (5595.58pt,2795.2999pt) .. (5596.33pt,2906.6199pt); - \draw[pstyle12] (13079.91pt,1493.0799pt) -- (13071.6954pt,1498.5132pt) -- (13077.2194pt,1497.2942pt) -- (13078.4383pt,1502.8182pt) -- (13079.91pt,1493.0799pt) -- cycle; - \node at (13067.5517pt,1500.5164pt)[below right,color=black]{1}; - \node at (5596.2538pt,2881.0997pt)[below right,color=black]{1}; - \draw[pstyle11] (13096.5667pt,1498.0365pt) ..controls (13071.2367pt,1534.0265pt) and (13042.98pt,1562.5899pt) .. (13004.41pt,1583.3999pt) ..controls (12903.05pt,1638.1199pt) and (11019.39pt,1545.0599pt) .. (10931.41pt,1619.3999pt) ..controls (10816.2pt,1716.7599pt) and (10830.44pt,1921.1299pt) .. (10843.05pt,2009.8099pt); - \draw[pstyle12] (13100.02pt,1493.1299pt) -- (13091.569pt,1498.1876pt) -- (13097.1423pt,1497.2187pt) -- (13098.1111pt,1502.792pt) -- (13100.02pt,1493.1299pt) -- cycle; - \node at (13088.5101pt,1500.5686pt)[below right,color=black]{1}; - \node at (10833.2691pt,1984.5694pt)[below right,color=black]{1}; - \draw[pstyle11] (13473.3107pt,1422.3723pt) ..controls (13448.0207pt,1481.2123pt) and (13408.21pt,1547.9399pt) .. (13344.41pt,1583.3999pt) ..controls (13280.46pt,1618.9599pt) and (8149.39pt,1614.1899pt) .. (8076.41pt,1619.3999pt) ..controls (6935.41pt,1700.8599pt) and (5578.79pt,1931.3099pt) .. (5091.28pt,2018.4399pt); - \draw[pstyle12] (13475.68pt,1416.8599pt) -- (13468.4511pt,1423.549pt) -- (13473.7056pt,1421.4536pt) -- (13475.801pt,1426.708pt) -- (13475.68pt,1416.8599pt) -- cycle; - \node at (13465.0353pt,1424.5204pt)[below right,color=black]{1}; - \node at (5099.2982pt,2017.3402pt)[below right,color=black]{1}; - \draw[pstyle11] (13463.1485pt,1422.0561pt) ..controls (13350.7885pt,1657.7961pt) and (13013.05pt,2285.3199pt) .. (12504.41pt,2511.3299pt) ..controls (12482.92pt,2520.8699pt) and (5750.09pt,2505.0399pt) .. (5731.41pt,2519.3299pt) ..controls (5613.58pt,2609.4699pt) and (5595.57pt,2795.2899pt) .. (5596.33pt,2906.6199pt); - \draw[pstyle12] (13465.73pt,1416.6399pt) -- (13458.2469pt,1423.0432pt) -- (13463.5787pt,1421.1534pt) -- (13465.4685pt,1426.4853pt) -- (13465.73pt,1416.6399pt) -- cycle; - \node at (13454.3235pt,1424.2835pt)[below right,color=black]{1}; - \node at (5587.5663pt,2881.0997pt)[below right,color=black]{1}; - \draw[pstyle11] (13656.6442pt,1396.6231pt) ..controls (13744.0842pt,1445.6231pt) and (13842.81pt,1518.2599pt) .. (13893.41pt,1619.3999pt) ..controls (13995.3pt,1823.0699pt) and (13915.21pt,3563.9499pt) .. (13904.54pt,3785.8299pt); - \draw[pstyle12] (13651.41pt,1393.6899pt) -- (13657.3058pt,1401.5791pt) -- (13655.7718pt,1396.1342pt) -- (13661.2167pt,1394.6002pt) -- (13651.41pt,1393.6899pt) -- cycle; - \node at (13659.1025pt,1379.7777pt)[below right,color=black]{1}; - \node at (13895.853pt,3760.5333pt)[below right,color=black]{1}; - \draw[pstyle11] (6457.2723pt,1402.8882pt) ..controls (6426.8023pt,1461.2282pt) and (6387.42pt,1541.3899pt) .. (6358.41pt,1619.3999pt) ..controls (6215.2pt,2004.4999pt) and (6439.27pt,2258.5099pt) .. (6115.41pt,2511.3299pt) ..controls (6098.59pt,2524.4599pt) and (5748.23pt,2506.1899pt) .. (5731.41pt,2519.3299pt) ..controls (5614.64pt,2610.4899pt) and (5596.21pt,2795.5099pt) .. (5596.61pt,2906.4999pt); - \draw[pstyle12] (6460.05pt,1397.5699pt) -- (6452.3379pt,1403.6956pt) -- (6457.7353pt,1402.0018pt) -- (6459.429pt,1407.3992pt) -- (6460.05pt,1397.5699pt) -- cycle; - \node at (6448.0301pt,1405.2676pt)[below right,color=black]{1}; - \node at (5585.9741pt,2881.3063pt)[below right,color=black]{1}; - \draw[pstyle11] (6779.9256pt,1403.2303pt) ..controls (6755.9156pt,1462.4503pt) and (6715.48pt,1538.5799pt) .. (6650.41pt,1583.3999pt) ..controls (6577.47pt,1633.6499pt) and (6518.51pt,1558.2799pt) .. (6454.41pt,1619.3999pt) ..controls (6159.84pt,1900.3199pt) and (6563.27pt,2255.8199pt) .. (6246.41pt,2511.3299pt) ..controls (6224.14pt,2529.2899pt) and (5754.01pt,2501.7799pt) .. (5731.41pt,2519.3299pt) ..controls (5614.39pt,2610.1799pt) and (5596.05pt,2795.2999pt) .. (5596.53pt,2906.3999pt); - \draw[pstyle12] (6782.18pt,1397.6699pt) -- (6775.0915pt,1404.5075pt) -- (6780.3013pt,1402.3035pt) -- (6782.5053pt,1407.5134pt) -- (6782.18pt,1397.6699pt) -- cycle; - \node at (6771.5069pt,1405.3772pt)[below right,color=black]{1}; - \node at (5596.3196pt,2881.1757pt)[below right,color=black]{1}; - \draw[pstyle11] (5732.3082pt,1266.7409pt) ..controls (5730.7582pt,1183.5909pt) and (5714.17pt,1028.3899pt) .. (5613.41pt,953.9099pt) ..controls (5604.75pt,947.5099pt) and (4849.14pt,946.7399pt) .. (4838.41pt,945.9099pt) ..controls (4027.01pt,883.2699pt) and (3068.43pt,714.0999pt) .. (2681.41pt,641.7999pt); - \draw[pstyle12] (5732.42pt,1272.7399pt) -- (5736.2516pt,1263.6669pt) -- (5732.3268pt,1267.7408pt) -- (5728.253pt,1263.816pt) -- (5732.42pt,1272.7399pt) -- cycle; - \node at (5724.0431pt,1247.5338pt)[below right,color=black]{1}; - \node at (2688.9694pt,643.6292pt)[below right,color=black]{1}; - \draw[pstyle11] (5711.2071pt,1384.1892pt) ..controls (5632.3571pt,1608.0992pt) and (5324.1pt,2476.4999pt) .. (5273.41pt,2511.3299pt) ..controls (5250.43pt,2527.1099pt) and (1279.91pt,2501.5699pt) .. (1258.41pt,2519.3299pt) ..controls (1158.4pt,2601.8999pt) and (1144.93pt,2757.2499pt) .. (1150.15pt,2868.2899pt); - \draw[pstyle12] (5713.2pt,1378.5299pt) -- (5706.4377pt,1385.6903pt) -- (5711.5392pt,1383.246pt) -- (5713.9835pt,1388.3475pt) -- (5713.2pt,1378.5299pt) -- cycle; - \node at (5702.3781pt,1386.4379pt)[below right,color=black]{1}; - \node at (1149.4751pt,2842.9128pt)[below right,color=black]{1}; - \draw[pstyle11] (5734.0284pt,1384.4743pt) ..controls (5743.4284pt,1602.5043pt) and (5773.55pt,2431.6899pt) .. (5691.41pt,2511.3299pt) ..controls (5676.97pt,2525.3199pt) and (2810.84pt,2506.4199pt) .. (2795.41pt,2519.3299pt) ..controls (2707.15pt,2593.1599pt) and (2688.31pt,2724.1299pt) .. (2689.94pt,2830.2199pt); - \draw[pstyle12] (5733.77pt,1378.4799pt) -- (5730.1614pt,1387.6438pt) -- (5733.9854pt,1383.4753pt) -- (5738.1539pt,1387.2993pt) -- (5733.77pt,1378.4799pt) -- cycle; - \node at (5725.5836pt,1386.3815pt)[below right,color=black]{1}; - \node at (2680.8608pt,2804.7169pt)[below right,color=black]{1}; - \draw[pstyle11] (5740.1362pt,1384.5285pt) ..controls (5748.5562pt,1442.9285pt) and (5760.51pt,1534.7399pt) .. (5765.41pt,1619.3999pt) ..controls (5771.14pt,1718.3399pt) and (5835.39pt,2441.1499pt) .. (5765.41pt,2511.3299pt) ..controls (5751.71pt,2525.0599pt) and (2986.44pt,2507.0599pt) .. (2971.41pt,2519.3299pt) ..controls (2864.71pt,2606.4199pt) and (2853.67pt,2775.6799pt) .. (2859.78pt,2887.4299pt); - \draw[pstyle12] (5739.28pt,1378.5899pt) -- (5736.6053pt,1388.0686pt) -- (5739.9935pt,1383.5387pt) -- (5744.5234pt,1386.927pt) -- (5739.28pt,1378.5899pt) -- cycle; - \node at (5731.7743pt,1386.1195pt)[below right,color=black]{1}; - \node at (2850.624pt,2862.1096pt)[below right,color=black]{1}; - \draw[pstyle11] (5720.4052pt,1384.3816pt) ..controls (5678.2252pt,1603.3816pt) and (5512.06pt,2438.9899pt) .. (5418.41pt,2511.3299pt) ..controls (5403.04pt,2523.1999pt) and (2636.14pt,2506.6699pt) .. (2621.41pt,2519.3299pt) ..controls (2521.01pt,2605.6099pt) and (2516.3pt,2766.9899pt) .. (2527.44pt,2878.0299pt); - \draw[pstyle12] (5721.54pt,1378.4899pt) -- (5715.91pt,1386.571pt) -- (5720.5944pt,1383.3997pt) -- (5723.7657pt,1388.084pt) -- (5721.54pt,1378.4899pt) -- cycle; - \node at (5711.7867pt,1386.3928pt)[below right,color=black]{1}; - \node at (2526.38pt,2852.4476pt)[below right,color=black]{1}; - \draw[pstyle11] (5749.7198pt,1384.3321pt) ..controls (5767.2898pt,1442.3221pt) and (5792.15pt,1533.5899pt) .. (5802.41pt,1619.3999pt) ..controls (5825.93pt,1816.2099pt) and (5941.48pt,2370.0999pt) .. (5802.41pt,2511.3299pt) ..controls (5782.1pt,2531.9499pt) and (5305.47pt,2503.2399pt) .. (5281.41pt,2519.3299pt) ..controls (5171.59pt,2592.7499pt) and (5120.01pt,2738.2499pt) .. (5095.97pt,2849.3999pt); - \draw[pstyle12] (5747.98pt,1378.5899pt) -- (5746.7615pt,1388.3631pt) -- (5749.4298pt,1383.3751pt) -- (5754.4178pt,1386.0434pt) -- (5747.98pt,1378.5899pt) -- cycle; - \node at (5741.5346pt,1386.1195pt)[below right,color=black]{1}; - \node at (5097.3234pt,2823.849pt)[below right,color=black]{1}; - \draw[pstyle11] (6220.0991pt,1384.4488pt) ..controls (6206.4291pt,1442.2488pt) and (6177.69pt,1528.8099pt) .. (6117.41pt,1583.3999pt) ..controls (6079.6pt,1617.6499pt) and (6040.45pt,1579.6999pt) .. (6008.41pt,1619.3999pt) ..controls (5883.24pt,1774.5299pt) and (6060.42pt,2376.7199pt) .. (5913.41pt,2511.3299pt) ..controls (5895.3pt,2527.9099pt) and (5490.25pt,2503.5699pt) .. (5471.41pt,2519.3299pt) ..controls (5356.51pt,2615.3699pt) and (5355.17pt,2807.2199pt) .. (5365.23pt,2916.1699pt); - \draw[pstyle12] (6221.48pt,1378.6099pt) -- (6215.516pt,1386.4477pt) -- (6220.3292pt,1383.4757pt) -- (6223.3012pt,1388.2889pt) -- (6221.48pt,1378.6099pt) -- cycle; - \node at (6218.5367pt,1386.1419pt)[below right,color=black]{1}; - \node at (5364.5634pt,2890.6308pt)[below right,color=black]{1}; - \draw[pstyle11] (6225.1654pt,1384.6441pt) ..controls (6201.1454pt,1603.5041pt) and (6104.56pt,2435.6099pt) .. (6016.41pt,2511.3299pt) ..controls (5992.38pt,2531.9699pt) and (5756.31pt,2499.7399pt) .. (5731.41pt,2519.3299pt) ..controls (5614.97pt,2610.9099pt) and (5596.42pt,2795.7799pt) .. (5596.71pt,2906.6399pt); - \draw[pstyle12] (6225.82pt,1378.6799pt) -- (6220.862pt,1387.1898pt) -- (6225.2745pt,1383.6501pt) -- (6228.8143pt,1388.0626pt) -- (6225.82pt,1378.6799pt) -- cycle; - \node at (6225.6493pt,1386.2204pt)[below right,color=black]{1}; - \node at (5586.1047pt,2881.4892pt)[below right,color=black]{1}; - \draw[pstyle11] (6222.042pt,1384.607pt) ..controls (6209.862pt,1443.867pt) and (6182.21pt,1533.0599pt) .. (6117.41pt,1583.3999pt) ..controls (6041.94pt,1642.0399pt) and (5971.17pt,1550.0499pt) .. (5905.41pt,1619.3999pt) ..controls (5630.85pt,1908.9799pt) and (6099.18pt,2244.5599pt) .. (5802.41pt,2511.3299pt) ..controls (5783.13pt,2528.6499pt) and (4890.24pt,2503.8999pt) .. (4869.41pt,2519.3299pt) ..controls (4724.4pt,2626.7199pt) and (4715.96pt,2874.1399pt) .. (4717.93pt,2963.5899pt); - \draw[pstyle12] (6223.25pt,1378.7299pt) -- (6217.52pt,1386.7403pt) -- (6222.2434pt,1383.6275pt) -- (6225.3562pt,1388.3509pt) -- (6223.25pt,1378.7299pt) -- cycle; - \node at (6213.7911pt,1386.2765pt)[below right,color=black]{1}; - \node at (4708.8874pt,2938.2875pt)[below right,color=black]{1}; - \draw[pstyle11] (5963.2401pt,1384.2353pt) ..controls (5942.0601pt,1439.7153pt) and (5904.77pt,1522.2999pt) .. (5849.41pt,1583.3999pt) ..controls (5829.79pt,1605.0599pt) and (5810.75pt,1595.1899pt) .. (5794.41pt,1619.3999pt) ..controls (5568.37pt,1954.4199pt) and (5929.52pt,2254.5899pt) .. (5617.41pt,2511.3299pt) ..controls (5594.03pt,2530.5599pt) and (1281.75pt,2500.0499pt) .. (1258.41pt,2519.3299pt) ..controls (1158.39pt,2601.8899pt) and (1144.93pt,2757.2399pt) .. (1150.15pt,2868.2899pt); - \draw[pstyle12] (5965.38pt,1378.6299pt) -- (5958.4332pt,1385.6114pt) -- (5963.5967pt,1383.3011pt) -- (5965.9071pt,1388.4646pt) -- (5965.38pt,1378.6299pt) -- cycle; - \node at (5963.6933pt,1386.1643pt)[below right,color=black]{1}; - \node at (1140.9876pt,2842.9128pt)[below right,color=black]{1}; - \draw[pstyle11] (5969.762pt,1384.3876pt) ..controls (5953.072pt,1443.9876pt) and (5918.44pt,1534.0699pt) .. (5849.41pt,1583.3999pt) ..controls (5763.09pt,1645.0999pt) and (5695.98pt,1552.7699pt) .. (5613.41pt,1619.3999pt) ..controls (5283.27pt,1885.8299pt) and (5622.52pt,2270.2999pt) .. (5273.41pt,2511.3299pt) ..controls (5249.4pt,2527.8999pt) and (1095.42pt,2501.3899pt) .. (1072.41pt,2519.3299pt) ..controls (1040.72pt,2544.0299pt) and (1016.6pt,2575.7499pt) .. (998.32pt,2611.0799pt); - \draw[pstyle12] (5971.38pt,1378.6099pt) -- (5965.1012pt,1386.1979pt) -- (5970.0317pt,1383.4247pt) -- (5972.8049pt,1388.3551pt) -- (5971.38pt,1378.6099pt) -- cycle; - \node at (5970.4246pt,1386.1419pt)[below right,color=black]{1}; - \node at (991.1954pt,2586.0628pt)[below right,color=black]{1}; - \draw[pstyle11] (5981.746pt,1266.8316pt) ..controls (5976.536pt,1183.4216pt) and (5953.18pt,1027.3599pt) .. (5849.41pt,953.9099pt) ..controls (5837.95pt,945.7999pt) and (4852.41pt,946.9699pt) .. (4838.41pt,945.9099pt) ..controls (4026.93pt,884.2499pt) and (3068.4pt,714.5399pt) .. (2681.4pt,641.9399pt); - \draw[pstyle12] (5982.12pt,1272.8199pt) -- (5985.5512pt,1263.588pt) -- (5981.8083pt,1267.8296pt) -- (5977.5667pt,1264.0868pt) -- (5982.12pt,1272.8199pt) -- cycle; - \node at (5973.4029pt,1247.2433pt)[below right,color=black]{1}; - \node at (2688.959pt,626.058pt)[below right,color=black]{1}; - \draw[pstyle11] (6002.9439pt,1384.3127pt) ..controls (6062.3939pt,1569.5027pt) and (6232.11pt,2197.3999pt) .. (5913.41pt,2511.3299pt) ..controls (5898.99pt,2525.5299pt) and (5747.22pt,2506.6899pt) .. (5731.41pt,2519.3299pt) ..controls (5615.86pt,2611.6999pt) and (5596.95pt,2795.8499pt) .. (5596.95pt,2906.4499pt); - \draw[pstyle12] (6001.11pt,1378.5999pt) -- (6000.0524pt,1388.3918pt) -- (6002.6383pt,1383.3606pt) -- (6007.6695pt,1385.9465pt) -- (6001.11pt,1378.5999pt) -- cycle; - \node at (6003.7779pt,1386.1307pt)[below right,color=black]{1}; - \node at (5596.9279pt,2881.2254pt)[below right,color=black]{1}; - \draw[pstyle11] (5965.5884pt,1384.4506pt) ..controls (5948.2984pt,1442.5406pt) and (5923.18pt,1533.8799pt) .. (5909.41pt,1619.3999pt) ..controls (5893.62pt,1717.4999pt) and (5917.65pt,2443.1199pt) .. (5845.41pt,2511.3299pt) ..controls (5822.62pt,2532.8399pt) and (5307.47pt,2501.9199pt) .. (5281.41pt,2519.3299pt) ..controls (5171.55pt,2592.6899pt) and (5119.97pt,2738.1999pt) .. (5095.95pt,2849.3599pt); - \draw[pstyle12] (5967.3pt,1378.6999pt) -- (5960.8988pt,1386.1848pt) -- (5965.8736pt,1383.4921pt) -- (5968.5663pt,1388.467pt) -- (5967.3pt,1378.6999pt) -- cycle; - \node at (5956.8723pt,1386.2429pt)[below right,color=black]{1}; - \node at (5091.0341pt,2823.6583pt)[below right,color=black]{1}; - \draw[pstyle11] (5995.0997pt,1384.5646pt) ..controls (6010.2197pt,1445.7346pt) and (6043.56pt,1538.7099pt) .. (6116.41pt,1583.3999pt) ..controls (6226.58pt,1650.9999pt) and (10670.28pt,1536.4499pt) .. (10769.41pt,1619.3999pt) ..controls (10885.24pt,1716.3299pt) and (10870.56pt,1921.3999pt) .. (10857.8pt,2010.0599pt); - \draw[pstyle12] (5993.66pt,1378.7399pt) -- (5991.9365pt,1388.4368pt) -- (5994.8598pt,1383.5938pt) -- (5999.7028pt,1386.5171pt) -- (5993.66pt,1378.7399pt) -- cycle; - \node at (5986.4449pt,1386.2878pt)[below right,color=black]{1}; - \node at (10850.3922pt,1984.5377pt)[below right,color=black]{1}; - \draw[pstyle11] (7047.0829pt,1365.3856pt) ..controls (7044.9629pt,1421.3556pt) and (7031.99pt,1528.7099pt) .. (6962.41pt,1583.3999pt) ..controls (6884.93pt,1644.3099pt) and (6593.4pt,1553.1899pt) .. (6520.41pt,1619.3999pt) ..controls (6222.06pt,1890.0499pt) and (6666.86pt,2251.0599pt) .. (6359.41pt,2511.3299pt) ..controls (6332.78pt,2533.8699pt) and (5759pt,2497.9699pt) .. (5731.41pt,2519.3299pt) ..controls (5614.1pt,2610.1499pt) and (5595.91pt,2795.7399pt) .. (5596.49pt,2906.8299pt); - \draw[pstyle12] (7047.31pt,1359.3899pt) -- (7042.9722pt,1368.232pt) -- (7047.1207pt,1364.3863pt) -- (7050.9665pt,1368.5349pt) -- (7047.31pt,1359.3899pt) -- cycle; - \node at (7038.5881pt,1367.2423pt)[below right,color=black]{1}; - \node at (5596.4275pt,2881.3277pt)[below right,color=black]{1}; - \draw[pstyle11] (7121.1146pt,1352.1196pt) ..controls (7281.7046pt,1406.3496pt) and (7692.3pt,1536.9899pt) .. (8052.41pt,1583.3999pt) ..controls (8131.89pt,1593.6499pt) and (13764.88pt,1563.6099pt) .. (13822.41pt,1619.3999pt) ..controls (13863.42pt,1659.1699pt) and (13898.8pt,3552.8099pt) .. (13902.99pt,3785.6699pt); - \draw[pstyle12] (7115.43pt,1350.1999pt) -- (7122.6772pt,1356.8691pt) -- (7120.1672pt,1351.7996pt) -- (7125.2367pt,1349.2896pt) -- (7115.43pt,1350.1999pt) -- cycle; - \node at (7122.8761pt,1334.8911pt)[below right,color=black]{1}; - \node at (13903.9558pt,3760.3323pt)[below right,color=black]{1}; - \draw[pstyle11] (5380.1515pt,1407.7233pt) ..controls (5309.7615pt,1462.7033pt) and (5222.86pt,1537.3699pt) .. (5155.41pt,1619.3999pt) ..controls (5133.15pt,1646.4699pt) and (5111.7pt,1675.7799pt) .. (5091.35pt,1705.9299pt); - \draw[pstyle12] (5384.88pt,1404.0299pt) -- (5375.3249pt,1406.4176pt) -- (5380.9395pt,1407.1077pt) -- (5380.2494pt,1412.7223pt) -- (5384.88pt,1404.0299pt) -- cycle; - \node at (5368.5083pt,1410.7084pt)[below right,color=black]{1}; - \node at (5098.7769pt,1675.0402pt)[below right,color=black]{1}; - \draw[pstyle11] (5486.5809pt,1238.337pt) ..controls (5478.2309pt,1150.707pt) and (5450.72pt,1020.0999pt) .. (5358.41pt,953.9099pt) ..controls (5346.67pt,945.4899pt) and (4852.81pt,947.0599pt) .. (4838.41pt,945.9099pt) ..controls (4027.17pt,881.2099pt) and (3068.5pt,713.1899pt) .. (2681.43pt,641.4899pt); - \draw[pstyle12] (5487.15pt,1244.3099pt) -- (5490.2782pt,1234.9711pt) -- (5486.6757pt,1239.3324pt) -- (5482.3143pt,1235.7299pt) -- (5487.15pt,1244.3099pt) -- cycle; - \node at (5478.4757pt,1218.7803pt)[below right,color=black]{1}; - \node at (2688.9902pt,625.589pt)[below right,color=black]{1}; - \draw[pstyle11] (5380.2128pt,1406.2173pt) ..controls (5315.9528pt,1458.9773pt) and (5243.88pt,1531.6499pt) .. (5206.41pt,1619.3999pt) ..controls (5167.46pt,1710.6099pt) and (5244.76pt,2442.4399pt) .. (5173.41pt,2511.3299pt) ..controls (5151.71pt,2532.2699pt) and (853.95pt,2500.4799pt) .. (830.41pt,2519.3299pt) ..controls (757.87pt,2577.3999pt) and (727.6pt,2672.9699pt) .. (716.72pt,2763.3999pt); - \draw[pstyle12] (5384.85pt,1402.4099pt) -- (5375.3559pt,1405.0294pt) -- (5380.9856pt,1405.5827pt) -- (5380.4324pt,1411.2124pt) -- (5384.85pt,1402.4099pt) -- cycle; - \node at (5368.476pt,1390.6628pt)[below right,color=black]{1}; - \node at (708.4082pt,2738.4473pt)[below right,color=black]{1}; - \draw[pstyle11] (5426.8588pt,1412.2827pt) ..controls (5388.0288pt,1468.7127pt) and (5343.45pt,1542.5199pt) .. (5317.41pt,1619.3999pt) ..controls (5253.37pt,1808.4799pt) and (5359.61pt,2378.6999pt) .. (5210.41pt,2511.3299pt) ..controls (5188.93pt,2530.4199pt) and (1095.07pt,2501.6599pt) .. (1072.41pt,2519.3299pt) ..controls (1040.72pt,2544.0299pt) and (1016.6pt,2575.7499pt) .. (998.32pt,2611.0799pt); - \draw[pstyle12] (5430.26pt,1407.3399pt) -- (5421.8629pt,1412.4867pt) -- (5427.4257pt,1411.4589pt) -- (5428.4534pt,1417.0216pt) -- (5430.26pt,1407.3399pt) -- cycle; - \node at (5416.9629pt,1414.8377pt)[below right,color=black]{1}; - \node at (999.3579pt,2586.0628pt)[below right,color=black]{1}; - \draw[pstyle11] (5379.7347pt,1394.6364pt) ..controls (5305.4347pt,1446.3264pt) and (5216.2pt,1522.6399pt) .. (5169.41pt,1619.3999pt) ..controls (5082.92pt,1798.2699pt) and (5252.57pt,2375.6599pt) .. (5107.41pt,2511.3299pt) ..controls (5084.61pt,2532.6299pt) and (638.77pt,2499.8299pt) .. (614.41pt,2519.3299pt) ..controls (523.54pt,2592.0599pt) and (499pt,2723.6399pt) .. (495.82pt,2830.2499pt); - \draw[pstyle12] (5384.66pt,1391.2099pt) -- (5374.9876pt,1393.0661pt) -- (5380.5556pt,1394.0653pt) -- (5379.5563pt,1399.6332pt) -- (5384.66pt,1391.2099pt) -- cycle; - \node at (5368.6138pt,1378.4259pt)[below right,color=black]{1}; - \node at (487.1224pt,2804.7483pt)[below right,color=black]{1}; - \draw[pstyle11] (5439.5003pt,1412.3182pt) ..controls (5408.1203pt,1469.4182pt) and (5372.59pt,1543.7999pt) .. (5354.41pt,1619.3999pt) ..controls (5342.82pt,1667.6199pt) and (5357.07pt,2476.8699pt) .. (5321.41pt,2511.3299pt) ..controls (5307.19pt,2525.0699pt) and (2488.54pt,2506.5899pt) .. (2473.41pt,2519.3299pt) ..controls (2365.76pt,2609.9499pt) and (2362.91pt,2785.8799pt) .. (2373.88pt,2896.9699pt); - \draw[pstyle12] (5442.39pt,1407.0599pt) -- (5434.5499pt,1413.0208pt) -- (5439.9819pt,1411.4418pt) -- (5441.5609pt,1416.8738pt) -- (5442.39pt,1407.0599pt) -- cycle; - \node at (5429.9354pt,1414.8166pt)[below right,color=black]{1}; - \node at (2364.3989pt,2871.6408pt)[below right,color=black]{1}; - \draw[pstyle11] (5492.1421pt,1412.9089pt) ..controls (5497.0021pt,1673.0689pt) and (5508.7pt,2472.6099pt) .. (5469.41pt,2511.3299pt) ..controls (5456.18pt,2524.3599pt) and (2809.65pt,2507.4099pt) .. (2795.41pt,2519.3299pt) ..controls (2707.15pt,2593.1699pt) and (2688.32pt,2724.1399pt) .. (2689.95pt,2830.2299pt); - \draw[pstyle12] (5492.03pt,1406.9099pt) -- (5488.1988pt,1415.983pt) -- (5492.1234pt,1411.909pt) -- (5496.1974pt,1415.8336pt) -- (5492.03pt,1406.9099pt) -- cycle; - \node at (5483.8345pt,1414.9353pt)[below right,color=black]{1}; - \node at (2689.2588pt,2804.7274pt)[below right,color=black]{1}; - \draw[pstyle11] (5498.5411pt,1413.3154pt) ..controls (5521.5611pt,1667.5154pt) and (5583.92pt,2433.5699pt) .. (5506.41pt,2511.3299pt) ..controls (5493.98pt,2523.7899pt) and (2985.05pt,2508.1899pt) .. (2971.41pt,2519.3299pt) ..controls (2864.72pt,2606.4299pt) and (2853.68pt,2775.6899pt) .. (2859.78pt,2887.4399pt); - \draw[pstyle12] (5498pt,1407.3399pt) -- (5494.828pt,1416.664pt) -- (5498.4509pt,1412.3195pt) -- (5502.7954pt,1415.9425pt) -- (5498pt,1407.3399pt) -- cycle; - \node at (5490.3126pt,1414.8377pt)[below right,color=black]{1}; - \node at (2859.1865pt,2862.1203pt)[below right,color=black]{1}; - \draw[pstyle11] (5482.3271pt,1413.0934pt) ..controls (5457.4871pt,1676.7134pt) and (5379.09pt,2492.7599pt) .. (5358.41pt,2511.3299pt) ..controls (5344.26pt,2524.0199pt) and (2635.82pt,2506.9399pt) .. (2621.41pt,2519.3299pt) ..controls (2521.01pt,2605.6099pt) and (2516.3pt,2766.9899pt) .. (2527.44pt,2878.0299pt); - \draw[pstyle12] (5482.89pt,1407.1199pt) -- (5478.0633pt,1415.705pt) -- (5482.4209pt,1412.0978pt) -- (5486.0281pt,1416.4555pt) -- (5482.89pt,1407.1199pt) -- cycle; - \node at (5473.9159pt,1414.8817pt)[below right,color=black]{1}; - \node at (2517.8425pt,2852.4476pt)[below right,color=black]{1}; - \draw[pstyle11] (5506.8493pt,1412.9674pt) ..controls (5517.2593pt,1471.5774pt) and (5529.01pt,1547.1399pt) .. (5534.41pt,1619.3999pt) ..controls (5541.8pt,1718.2299pt) and (5604.19pt,2440.9599pt) .. (5534.41pt,2511.3299pt) ..controls (5515.55pt,2530.3399pt) and (4589.69pt,2500.7399pt) .. (4570.41pt,2519.3299pt) ..controls (4499.26pt,2587.9199pt) and (4601.77pt,3339.5299pt) .. (4530.41pt,3407.9099pt) ..controls (4511.81pt,3425.7199pt) and (841.88pt,3400.2699pt) .. (821.41pt,3415.9099pt) ..controls (768.26pt,3456.5199pt) and (739.63pt,3520.7199pt) .. (724.66pt,3585.5599pt); - \draw[pstyle12] (5505.8pt,1407.0599pt) -- (5503.4355pt,1416.6207pt) -- (5506.6744pt,1411.9828pt) -- (5511.3123pt,1415.2217pt) -- (5505.8pt,1407.0599pt) -- cycle; - \node at (5498.7947pt,1414.8166pt)[below right,color=black]{1}; - \node at (716.9273pt,3560.199pt)[below right,color=black]{1}; - \draw[pstyle11] (5523.9844pt,1412.8609pt) ..controls (5545.0044pt,1470.8609pt) and (5568.79pt,1545.8799pt) .. (5580.41pt,1619.3999pt) ..controls (5656.28pt,2099.4699pt) and (5624.92pt,2685.3699pt) .. (5608.77pt,2906.4399pt); - \draw[pstyle12] (5521.94pt,1407.2199pt) -- (5521.2459pt,1417.0443pt) -- (5523.6436pt,1411.9207pt) -- (5528.7672pt,1414.3184pt) -- (5521.94pt,1407.2199pt) -- cycle; - \node at (5516.3218pt,1414.9903pt)[below right,color=black]{1}; - \node at (5609.7267pt,2881.2146pt)[below right,color=black]{1}; - \draw[pstyle11] (5506.9728pt,1413.1308pt) ..controls (5522.7928pt,1473.0008pt) and (5552.69pt,1544.8699pt) .. (5613.41pt,1583.3999pt) ..controls (5734.34pt,1660.1499pt) and (10659.53pt,1527.5299pt) .. (10769.41pt,1619.3999pt) ..controls (10885.27pt,1716.2899pt) and (10870.57pt,1921.3799pt) .. (10857.8pt,2010.0499pt); - \draw[pstyle12] (5505.44pt,1407.3299pt) -- (5503.872pt,1417.0531pt) -- (5506.7174pt,1412.164pt) -- (5511.6065pt,1415.0094pt) -- (5505.44pt,1407.3299pt) -- cycle; - \node at (5507.0312pt,1414.8269pt)[below right,color=black]{1}; - \node at (10859.7172pt,1984.526pt)[below right,color=black]{1}; - \draw[pstyle11] (5601.704pt,3094.5106pt) ..controls (5607.094pt,3191.2006pt) and (5631.95pt,3334.8799pt) .. (5731.41pt,3407.9099pt) ..controls (5744.27pt,3417.3499pt) and (8012.47pt,3415.3499pt) .. (8028.41pt,3415.9099pt) ..controls (10480.92pt,3502.1499pt) and (13500.04pt,3772.3699pt) .. (13866.45pt,3805.6799pt); - \draw[pstyle12] (5601.37pt,3088.5199pt) -- (5597.8771pt,3097.7286pt) -- (5601.6483pt,3093.5121pt) -- (5605.8647pt,3097.2833pt) -- (5601.37pt,3088.5199pt) -- cycle; - \node at (5593.0634pt,3096.4691pt)[below right,color=black]{1}; - \node at (13850.4232pt,3786.2136pt)[below right,color=black]{1}; - \draw[pstyle11] (5053.9229pt,2843.4131pt) ..controls (5030.0529pt,2732.0131pt) and (4979.81pt,2592.0899pt) .. (4869.41pt,2519.3299pt) ..controls (4847.81pt,2505.0899pt) and (1161.69pt,2529.6399pt) .. (1143.41pt,2511.3299pt) ..controls (1029.95pt,2397.6199pt) and (1055.96pt,1044.7699pt) .. (1146.41pt,953.9099pt) ..controls (1163.7pt,936.5499pt) and (2008.05pt,959.5299pt) .. (2028.41pt,945.9099pt) ..controls (2104.2pt,895.2099pt) and (2139.95pt,795.5299pt) .. (2156.73pt,717.5699pt); - \draw[pstyle12] (5055.18pt,2849.2799pt) -- (5057.2056pt,2839.6416pt) -- (5054.1324pt,2844.3909pt) -- (5049.3831pt,2841.3177pt) -- (5055.18pt,2849.2799pt) -- cycle; - \node at (5054.3027pt,2823.7225pt)[below right,color=black]{1}; - \node at (2147.5455pt,725.2021pt)[below right,color=black]{1}; - \draw[pstyle11] (5065.486pt,2843.5pt) ..controls (5047.846pt,2707.89pt) and (4997.72pt,2531.7799pt) .. (4851.91pt,2515.3299pt) ..controls (4827.23pt,2512.5399pt) and (1300.59pt,2512.5399pt) .. (1275.91pt,2515.3299pt) ..controls (1133.57pt,2531.3899pt) and (1129.78pt,2731.1499pt) .. (1144.44pt,2868.4899pt); - \draw[pstyle12] (5066.26pt,2849.4499pt) -- (5069.0657pt,2840.0091pt) -- (5065.615pt,2844.4917pt) -- (5061.1325pt,2841.0411pt) -- (5066.26pt,2849.4499pt) -- cycle; - \node at (5065.9886pt,2823.9018pt)[below right,color=black]{1}; - \node at (1134.9296pt,2843.125pt)[below right,color=black]{1}; - \draw[pstyle11] (5047.1804pt,2843.4227pt) ..controls (5020.1104pt,2736.2727pt) and (4968.93pt,2602.2099pt) .. (4869.41pt,2519.3299pt) ..controls (4863.28pt,2514.2199pt) and (4859.84pt,2516.2199pt) .. (4851.91pt,2515.3299pt) ..controls (4809.46pt,2510.5399pt) and (4125.36pt,2510.5399pt) .. (4082.91pt,2515.3299pt) ..controls (4014.99pt,2522.9899pt) and (3971.64pt,2569.1399pt) .. (3944.23pt,2630.0899pt); - \draw[pstyle12] (5048.65pt,2849.2399pt) -- (5050.3237pt,2839.5343pt) -- (5047.4253pt,2844.3922pt) -- (5042.5674pt,2841.4938pt) -- (5048.65pt,2849.2399pt) -- cycle; - \node at (5039.0736pt,2824.1694pt)[below right,color=black]{1}; - \node at (3937.0974pt,2604.2851pt)[below right,color=black]{1}; - \draw[pstyle11] (5047.1804pt,2843.4227pt) ..controls (5020.1104pt,2736.2727pt) and (4968.93pt,2602.2099pt) .. (4869.41pt,2519.3299pt) ..controls (4863.28pt,2514.2199pt) and (4859.84pt,2516.2199pt) .. (4851.91pt,2515.3299pt) ..controls (4821.77pt,2511.9199pt) and (3790.05pt,2511.9199pt) .. (3759.91pt,2515.3299pt) ..controls (3623.44pt,2530.7199pt) and (3610.07pt,2713.3199pt) .. (3619.49pt,2849.3099pt); - \draw[pstyle12] (5048.65pt,2849.2399pt) -- (5050.3237pt,2839.5343pt) -- (5047.4253pt,2844.3922pt) -- (5042.5674pt,2841.4938pt) -- (5048.65pt,2849.2399pt) -- cycle; - \node at (5035.2043pt,2824.3882pt)[below right,color=black]{1}; - \node at (3610.1919pt,2823.7541pt)[below right,color=black]{1}; - \draw[pstyle11] (5041.186pt,3151.5885pt) ..controls (5012.346pt,3244.1985pt) and (4961.71pt,3350.8899pt) .. (4869.41pt,3407.9099pt) ..controls (4847.75pt,3421.2899pt) and (1223.17pt,3399.8499pt) .. (1203.41pt,3415.9099pt) ..controls (1137.36pt,3469.5799pt) and (1115.42pt,3561.3899pt) .. (1110.54pt,3642.7899pt); - \draw[pstyle12] (5042.97pt,3145.8599pt) -- (5036.4749pt,3153.2636pt) -- (5041.4834pt,3150.6338pt) -- (5044.1131pt,3155.6422pt) -- (5042.97pt,3145.8599pt) -- cycle; - \node at (5033.214pt,3153.4695pt)[below right,color=black]{1}; - \node at (1110.265pt,3617.2932pt)[below right,color=black]{1}; - \draw[pstyle11] (5041.1762pt,3151.5786pt) ..controls (5012.3362pt,3244.1986pt) and (4961.7pt,3350.8899pt) .. (4869.41pt,3407.9099pt) ..controls (4849.28pt,3420.3399pt) and (1481.74pt,3402.2699pt) .. (1462.41pt,3415.9099pt) ..controls (1444.19pt,3428.7599pt) and (1428.31pt,3444.1999pt) .. (1414.48pt,3461.4199pt); - \draw[pstyle12] (5042.96pt,3145.8499pt) -- (5036.4652pt,3153.2538pt) -- (5041.4735pt,3150.6238pt) -- (5044.1034pt,3155.6322pt) -- (5042.96pt,3145.8499pt) -- cycle; - \node at (5041.591pt,3153.459pt)[below right,color=black]{1}; - \node at (1408.5719pt,3436.0576pt)[below right,color=black]{1}; - \draw[pstyle11] (5097.1964pt,2843.4751pt) ..controls (5121.2064pt,2732.2851pt) and (5171.51pt,2592.6399pt) .. (5281.41pt,2519.3299pt) ..controls (5309.37pt,2500.6699pt) and (5860.39pt,2532.5999pt) .. (5886.41pt,2511.3299pt) ..controls (6200.38pt,2254.5799pt) and (5768.15pt,1879.4299pt) .. (6079.41pt,1619.3999pt) ..controls (6124.29pt,1581.9099pt) and (7073.16pt,1588.5699pt) .. (7131.41pt,1583.3999pt) ..controls (7758.74pt,1527.7699pt) and (8502.22pt,1401.2899pt) .. (8793.03pt,1349.4599pt); - \draw[pstyle12] (5095.93pt,2849.3399pt) -- (5101.7395pt,2841.387pt) -- (5096.9854pt,2844.4525pt) -- (5093.9198pt,2839.6984pt) -- (5095.93pt,2849.3399pt) -- cycle; - \node at (5097.2812pt,2823.7858pt)[below right,color=black]{1}; - \node at (8777.1575pt,1333.414pt)[below right,color=black]{1}; - \draw[pstyle11] (5109.6542pt,3151.5685pt) ..controls (5138.4942pt,3244.1685pt) and (5189.13pt,3350.8599pt) .. (5281.41pt,3407.9099pt) ..controls (5297.64pt,3417.9399pt) and (8009.35pt,3415.2399pt) .. (8028.41pt,3415.9099pt) ..controls (10480.95pt,3501.4499pt) and (13500.04pt,3772.2799pt) .. (13866.45pt,3805.6699pt); - \draw[pstyle12] (5107.87pt,3145.8399pt) -- (5106.7272pt,3155.6222pt) -- (5109.3568pt,3150.6137pt) -- (5114.3653pt,3153.2434pt) -- (5107.87pt,3145.8399pt) -- cycle; - \node at (5101.2576pt,3153.4485pt)[below right,color=black]{1}; - \node at (13850.4232pt,3806.5486pt)[below right,color=black]{1}; - \draw[pstyle11] (5849.8977pt,2900.6327pt) ..controls (5843.1277pt,2797.3027pt) and (5818.69pt,2633.3799pt) .. (5731.41pt,2519.3299pt) ..controls (5569.15pt,2307.2899pt) and (5280.77pt,2177.2499pt) .. (5091.32pt,2110.4499pt); - \draw[pstyle12] (5850.29pt,2906.6199pt) -- (5853.693pt,2897.3776pt) -- (5849.9631pt,2901.6306pt) -- (5845.7102pt,2897.9007pt) -- (5850.29pt,2906.6199pt) -- cycle; - \node at (5850.4679pt,2881.0997pt)[below right,color=black]{1}; - \node at (5098.7458pt,2095.3617pt)[below right,color=black]{1}; - \draw[pstyle11] (8787.191pt,1346.1224pt) ..controls (8379.591pt,1413.7824pt) and (7094.46pt,1687.9999pt) .. (6586.41pt,2519.3299pt) ..controls (6483.19pt,2688.2199pt) and (6669.06pt,3272.7799pt) .. (6524.41pt,3407.9099pt) ..controls (6511.57pt,3419.8999pt) and (1476.78pt,3405.7799pt) .. (1462.41pt,3415.9099pt) ..controls (1444.04pt,3428.8599pt) and (1428.05pt,3444.4399pt) .. (1414.13pt,3461.8199pt); - \draw[pstyle12] (8793.11pt,1345.1399pt) -- (8783.5765pt,1342.6677pt) -- (8788.1775pt,1345.9587pt) -- (8784.8865pt,1350.5597pt) -- (8793.11pt,1345.1399pt) -- cycle; - \node at (8776.8389pt,1346.9553pt)[below right,color=black]{1}; - \node at (1416.4012pt,3436.467pt)[below right,color=black]{1}; - \draw[pstyle11] (9049.4913pt,1355.4714pt) ..controls (9188.6613pt,1392.2114pt) and (9404.71pt,1469.5099pt) .. (9532.41pt,1619.3999pt) ..controls (9635.28pt,1740.1499pt) and (9654.87pt,1940.7799pt) .. (9658.57pt,2019.3599pt); - \draw[pstyle12] (9043.69pt,1353.9399pt) -- (9051.3709pt,1360.1046pt) -- (9048.5244pt,1355.2161pt) -- (9053.4129pt,1352.3696pt) -- (9043.69pt,1353.9399pt) -- cycle; - \node at (9051.5796pt,1338.167pt)[below right,color=black]{1}; - \node at (9649.6545pt,1994.0614pt)[below right,color=black]{1}; - \draw[pstyle11] (9130.91pt,2093.3898pt) ..controls (9130.33pt,2180.4298pt) and (9115.29pt,2410.3799pt) .. (8974.41pt,2511.3299pt) ..controls (8946.7pt,2531.1799pt) and (4093.1pt,2499.4499pt) .. (4065.41pt,2519.3299pt) ..controls (4025.6pt,2547.8999pt) and (3995.46pt,2586.8199pt) .. (3972.65pt,2630.1799pt); - \draw[pstyle12] (9130.95pt,2087.3899pt) -- (9126.8901pt,2096.363pt) -- (9130.9167pt,2092.3898pt) -- (9134.8899pt,2096.4164pt) -- (9130.95pt,2087.3899pt) -- cycle; - \node at (9119.9191pt,2094.328pt)[below right,color=black]{1}; - \node at (3966.1835pt,2604.3773pt)[below right,color=black]{1}; - \draw[pstyle11] (9130.9093pt,2093.3798pt) ..controls (9130.3193pt,2180.4198pt) and (9115.26pt,2410.3299pt) .. (8974.41pt,2511.3299pt) ..controls (8954.64pt,2525.4999pt) and (5490.2pt,2503.8699pt) .. (5471.41pt,2519.3299pt) ..controls (5355.75pt,2614.4499pt) and (5354.71pt,2806.6599pt) .. (5365.01pt,2915.9099pt); - \draw[pstyle12] (9130.95pt,2087.3799pt) -- (9126.8891pt,2096.3526pt) -- (9130.9161pt,2092.3798pt) -- (9134.8889pt,2096.4068pt) -- (9130.95pt,2087.3799pt) -- cycle; - \node at (9131.7913pt,2095.0159pt)[below right,color=black]{1}; - \node at (5355.6074pt,2890.6268pt)[below right,color=black]{1}; - \draw[pstyle11] (9130.9086pt,2093.3798pt) ..controls (9130.3086pt,2180.4098pt) and (9115.25pt,2410.3199pt) .. (8974.41pt,2511.3299pt) ..controls (8956.11pt,2524.4499pt) and (5749.29pt,2505.6299pt) .. (5731.41pt,2519.3299pt) ..controls (5613.63pt,2609.5399pt) and (5595.61pt,2795.3399pt) .. (5596.35pt,2906.6399pt); - \draw[pstyle12] (9130.95pt,2087.3799pt) -- (9126.888pt,2096.3521pt) -- (9130.9155pt,2092.3798pt) -- (9134.8879pt,2096.4073pt) -- (9130.95pt,2087.3799pt) -- cycle; - \node at (9122.3663pt,2095.0159pt)[below right,color=black]{1}; - \node at (5587.588pt,2881.1214pt)[below right,color=black]{1}; - \draw[pstyle11] (9118.612pt,2093.0896pt) ..controls (9074.222pt,2238.8496pt) and (8897.61pt,2818.6799pt) .. (8853.37pt,2963.8999pt); - \draw[pstyle12] (9120.36pt,2087.3499pt) -- (9113.9115pt,2094.7942pt) -- (9118.9033pt,2092.133pt) -- (9121.5645pt,2097.1248pt) -- (9120.36pt,2087.3499pt) -- cycle; - \node at (9109.89pt,2094.9806pt)[below right,color=black]{1}; - \node at (8846.6389pt,2938.2661pt)[below right,color=black]{1}; - \draw[pstyle11] (8375.7307pt,2093.3155pt) ..controls (8383.5507pt,2179.7355pt) and (8390.38pt,2407.2799pt) .. (8257.41pt,2511.3299pt) ..controls (8230.56pt,2532.3299pt) and (3374.68pt,2497.5999pt) .. (3348.41pt,2519.3299pt) ..controls (3282.4pt,2573.9099pt) and (3254.28pt,2660.2499pt) .. (3244.37pt,2744.5699pt); - \draw[pstyle12] (8375.19pt,2087.3399pt) -- (8372.0174pt,2096.6638pt) -- (8375.6406pt,2092.3196pt) -- (8379.9848pt,2095.9428pt) -- (8375.19pt,2087.3399pt) -- cycle; - \node at (8367.1836pt,2094.9688pt)[below right,color=black]{1}; - \node at (3235.85pt,2718.9995pt)[below right,color=black]{1}; - \draw[pstyle11] (8375.7195pt,2093.3056pt) ..controls (8383.5195pt,2179.7056pt) and (8390.32pt,2407.1899pt) .. (8257.41pt,2511.3299pt) ..controls (8242.18pt,2523.2599pt) and (5486.35pt,2507.0299pt) .. (5471.41pt,2519.3299pt) ..controls (5355.78pt,2614.4899pt) and (5354.73pt,2806.6799pt) .. (5365.02pt,2915.9199pt); - \draw[pstyle12] (8375.18pt,2087.3299pt) -- (8372.0054pt,2096.6531pt) -- (8375.6296pt,2092.3096pt) -- (8379.973pt,2095.9338pt) -- (8375.18pt,2087.3299pt) -- cycle; - \node at (8376.5968pt,2094.957pt)[below right,color=black]{1}; - \node at (5351.7935pt,2890.8809pt)[below right,color=black]{1}; - \draw[pstyle11] (8375.7195pt,2093.3056pt) ..controls (8383.5195pt,2179.6956pt) and (8390.3pt,2407.1699pt) .. (8257.41pt,2511.3299pt) ..controls (8229.8pt,2532.9699pt) and (5759.25pt,2497.9799pt) .. (5731.41pt,2519.3299pt) ..controls (5613.66pt,2609.5899pt) and (5595.63pt,2795.3699pt) .. (5596.36pt,2906.6599pt); - \draw[pstyle12] (8375.18pt,2087.3299pt) -- (8372.0055pt,2096.6531pt) -- (8375.6296pt,2092.3096pt) -- (8379.9731pt,2095.9337pt) -- (8375.18pt,2087.3299pt) -- cycle; - \node at (8367.1718pt,2094.957pt)[below right,color=black]{1}; - \node at (5596.2864pt,2881.1431pt)[below right,color=black]{1}; - \draw[pstyle11] (8375.8786pt,2093.073pt) ..controls (8385.5786pt,2170.213pt) and (8415.14pt,2362.0799pt) .. (8485.41pt,2511.3299pt) ..controls (8574.38pt,2700.2999pt) and (8742.1pt,2889.4599pt) .. (8811.79pt,2963.7499pt); - \draw[pstyle12] (8375.13pt,2087.1199pt) -- (8372.2841pt,2096.5486pt) -- (8375.7538pt,2092.0808pt) -- (8380.2216pt,2095.5505pt) -- (8375.13pt,2087.1199pt) -- cycle; - \node at (8367.0366pt,2095.0887pt)[below right,color=black]{1}; - \node at (8796.8151pt,2938.479pt)[below right,color=black]{1}; - \draw[pstyle11] (8846.2486pt,2093.1614pt) ..controls (8850.8486pt,2179.6814pt) and (8849.41pt,2408.4499pt) .. (8713.41pt,2511.3299pt) ..controls (8685.88pt,2532.1499pt) and (3769.25pt,2497.6199pt) .. (3742.41pt,2519.3299pt) ..controls (3646.66pt,2596.7399pt) and (3626.41pt,2739.9599pt) .. (3626.8pt,2849.3899pt); - \draw[pstyle12] (8845.93pt,2087.1699pt) -- (8842.4135pt,2096.3696pt) -- (8846.1955pt,2092.1628pt) -- (8850.4022pt,2095.9448pt) -- (8845.93pt,2087.1699pt) -- cycle; - \node at (8847.1243pt,2094.7685pt)[below right,color=black]{1}; - \node at (3626.3392pt,2823.8385pt)[below right,color=black]{1}; - \draw[pstyle11] (8846.2486pt,2093.1614pt) ..controls (8850.8486pt,2179.6714pt) and (8849.4pt,2408.4299pt) .. (8713.41pt,2511.3299pt) ..controls (8689.46pt,2529.4399pt) and (4412.25pt,2499.8399pt) .. (4389.41pt,2519.3299pt) ..controls (4282.62pt,2610.4399pt) and (4282.5pt,2786.2199pt) .. (4295.25pt,2897.1499pt); - \draw[pstyle12] (8845.93pt,2087.1699pt) -- (8842.4135pt,2096.3696pt) -- (8846.1955pt,2092.1628pt) -- (8850.4022pt,2095.9448pt) -- (8845.93pt,2087.1699pt) -- cycle; - \node at (8836.6675pt,2095.1875pt)[below right,color=black]{1}; - \node at (4285.5788pt,2871.4951pt)[below right,color=black]{1}; - \draw[pstyle11] (8846.2366pt,2093.1515pt) ..controls (8850.8066pt,2179.6315pt) and (8849.31pt,2408.3099pt) .. (8713.41pt,2511.3299pt) ..controls (8689.3pt,2529.5999pt) and (6559.68pt,2501.2699pt) .. (6535.41pt,2519.3299pt) ..controls (6408.1pt,2614.0699pt) and (6388.75pt,2817.7399pt) .. (6388.04pt,2925.8399pt); - \draw[pstyle12] (8845.92pt,2087.1599pt) -- (8842.4005pt,2096.3584pt) -- (8846.1839pt,2092.1529pt) -- (8850.3894pt,2095.9363pt) -- (8845.92pt,2087.1599pt) -- cycle; - \node at (8837.6794pt,2095.0233pt)[below right,color=black]{1}; - \node at (6388.2391pt,2900.0979pt)[below right,color=black]{1}; - \draw[pstyle11] (8843.41pt,2093.3499pt) ..controls (8843.41pt,2239.1099pt) and (8843.41pt,2818.6799pt) .. (8843.41pt,2963.8999pt); - \draw[pstyle12] (8843.41pt,2087.3499pt) -- (8839.41pt,2096.3499pt) -- (8843.41pt,2092.3499pt) -- (8847.41pt,2096.3499pt) -- (8843.41pt,2087.3499pt) -- cycle; - \node at (8844.1555pt,2094.9806pt)[below right,color=black]{1}; - \node at (8834.6246pt,2938.2661pt)[below right,color=black]{1}; - \draw[pstyle11] (8603.7307pt,2093.3155pt) ..controls (8611.5507pt,2179.7355pt) and (8618.38pt,2407.2799pt) .. (8485.41pt,2511.3299pt) ..controls (8458.34pt,2532.4999pt) and (3562.94pt,2497.4799pt) .. (3536.41pt,2519.3299pt) ..controls (3485.24pt,2561.4699pt) and (3456.61pt,2622.6499pt) .. (3441.51pt,2687.2299pt); - \draw[pstyle12] (8603.19pt,2087.3399pt) -- (8600.0174pt,2096.6638pt) -- (8603.6406pt,2092.3196pt) -- (8607.9848pt,2095.9428pt) -- (8603.19pt,2087.3399pt) -- cycle; - \node at (8595.162pt,2095.5232pt)[below right,color=black]{1}; - \node at (3433.3849pt,2661.7688pt)[below right,color=black]{1}; - \draw[pstyle11] (8603.7202pt,2093.3055pt) ..controls (8611.5302pt,2179.7055pt) and (8618.33pt,2407.2099pt) .. (8485.41pt,2511.3299pt) ..controls (8468.93pt,2524.2299pt) and (5487.57pt,2506.0299pt) .. (5471.41pt,2519.3299pt) ..controls (5355.77pt,2614.4799pt) and (5354.72pt,2806.6799pt) .. (5365.02pt,2915.9199pt); - \draw[pstyle12] (8603.18pt,2087.3299pt) -- (8600.0065pt,2096.6535pt) -- (8603.6301pt,2092.3096pt) -- (8607.974pt,2095.9332pt) -- (8603.18pt,2087.3299pt) -- cycle; - \node at (8604.5981pt,2094.957pt)[below right,color=black]{1}; - \node at (5362.5435pt,2890.8809pt)[below right,color=black]{1}; - \draw[pstyle11] (8603.7195pt,2093.3056pt) ..controls (8611.5195pt,2179.6956pt) and (8618.32pt,2407.1899pt) .. (8485.41pt,2511.3299pt) ..controls (8455.3pt,2534.9199pt) and (5761.77pt,2496.0599pt) .. (5731.41pt,2519.3299pt) ..controls (5613.65pt,2609.5699pt) and (5595.62pt,2795.3599pt) .. (5596.35pt,2906.6499pt); - \draw[pstyle12] (8603.18pt,2087.3299pt) -- (8600.0055pt,2096.6531pt) -- (8603.6296pt,2092.3096pt) -- (8607.9731pt,2095.9337pt) -- (8603.18pt,2087.3299pt) -- cycle; - \node at (8595.1731pt,2094.957pt)[below right,color=black]{1}; - \node at (5587.588pt,2881.1322pt)[below right,color=black]{1}; - \draw[pstyle11] (8608.7221pt,2093.2338pt) ..controls (8626.8221pt,2168.5438pt) and (8671.44pt,2352.8899pt) .. (8712.41pt,2511.3299pt) ..controls (8756.54pt,2681.9899pt) and (8812.59pt,2885.4799pt) .. (8834.27pt,2963.7299pt); - \draw[pstyle12] (8607.32pt,2087.3999pt) -- (8605.5339pt,2097.0855pt) -- (8608.4884pt,2092.2615pt) -- (8613.3124pt,2095.216pt) -- (8607.32pt,2087.3999pt) -- cycle; - \node at (8609.3999pt,2094.7715pt)[below right,color=black]{1}; - \node at (8823.7209pt,2938.4551pt)[below right,color=black]{1}; - \draw[pstyle11] (8086.824pt,2075.3932pt) ..controls (7797.424pt,2150.8232pt) and (6716.64pt,2421.9799pt) .. (5802.41pt,2511.3299pt) ..controls (5788.17pt,2512.7199pt) and (3753.52pt,2510.3199pt) .. (3742.41pt,2519.3299pt) ..controls (3646.75pt,2596.8499pt) and (3626.48pt,2740.0499pt) .. (3626.85pt,2849.4499pt); - \draw[pstyle12] (8092.63pt,2073.8799pt) -- (8082.9121pt,2072.2792pt) -- (8087.7916pt,2075.141pt) -- (8084.9298pt,2080.0205pt) -- (8092.63pt,2073.8799pt) -- cycle; - \node at (8076.5378pt,2080.6715pt)[below right,color=black]{1}; - \node at (3617.9544pt,2823.9018pt)[below right,color=black]{1}; - \draw[pstyle11] (8086.8242pt,2075.404pt) ..controls (7797.4342pt,2150.874pt) and (6716.66pt,2422.1499pt) .. (5802.41pt,2511.3299pt) ..controls (5786.75pt,2512.8499pt) and (3548.55pt,2509.3099pt) .. (3536.41pt,2519.3299pt) ..controls (3485.28pt,2561.5199pt) and (3456.66pt,2622.7199pt) .. (3441.57pt,2687.2999pt); - \draw[pstyle12] (8092.63pt,2073.8899pt) -- (8082.9119pt,2072.2905pt) -- (8087.7918pt,2075.1516pt) -- (8084.9307pt,2080.0316pt) -- (8092.63pt,2073.8899pt) -- cycle; - \node at (8076.6287pt,2058.1665pt)[below right,color=black]{1}; - \node at (3441.659pt,2661.8407pt)[below right,color=black]{1}; - \draw[pstyle11] (8086.8244pt,2075.4247pt) ..controls (7797.4344pt,2150.9347pt) and (6716.68pt,2422.3699pt) .. (5802.41pt,2511.3299pt) ..controls (5784.18pt,2513.0999pt) and (3178.58pt,2507.7099pt) .. (3164.41pt,2519.3299pt) ..controls (3110.54pt,2563.4799pt) and (3081.3pt,2628.6399pt) .. (3066.41pt,2696.7099pt); - \draw[pstyle12] (8092.63pt,2073.9099pt) -- (8082.9117pt,2072.3118pt) -- (8087.792pt,2075.1723pt) -- (8084.9315pt,2080.0526pt) -- (8092.63pt,2073.9099pt) -- cycle; - \node at (8076.6287pt,2076.9417pt)[below right,color=black]{1}; - \node at (3058.2822pt,2671.5007pt)[below right,color=black]{1}; - \draw[pstyle11] (8086.496pt,2066.8418pt) ..controls (7798.986pt,2113.0418pt) and (6766.4pt,2292.2899pt) .. (6535.41pt,2519.3299pt) ..controls (6423.77pt,2629.0499pt) and (6397.5pt,2821.7699pt) .. (6391.69pt,2925.5799pt); - \draw[pstyle12] (8092.42pt,2065.8899pt) -- (8082.8994pt,2063.3685pt) -- (8087.4833pt,2066.6832pt) -- (8084.1686pt,2071.2671pt) -- (8092.42pt,2065.8899pt) -- cycle; - \node at (8076.3971pt,2049.3415pt)[below right,color=black]{1}; - \node at (6392.2542pt,2900.3106pt)[below right,color=black]{1}; - \draw[pstyle11] (8165.6572pt,2093.1699pt) ..controls (8165.3572pt,2172.0999pt) and (8173.39pt,2370.4699pt) .. (8257.41pt,2511.3299pt) ..controls (8388.69pt,2731.4099pt) and (8657.53pt,2896.6199pt) .. (8780.04pt,2963.7399pt); - \draw[pstyle12] (8165.68pt,2087.1699pt) -- (8161.6458pt,2096.1546pt) -- (8165.661pt,2092.1699pt) -- (8169.6458pt,2096.185pt) -- (8165.68pt,2087.1699pt) -- cycle; - \node at (8156.8717pt,2094.7685pt)[below right,color=black]{1}; - \node at (8758.8144pt,2938.467pt)[below right,color=black]{1}; - \draw[pstyle11] (9413.7827pt,2093.1064pt) ..controls (9419.5927pt,2179.4764pt) and (9421.3pt,2407.9399pt) .. (9286.41pt,2511.3299pt) ..controls (9265.38pt,2527.4399pt) and (5491.87pt,2502.4999pt) .. (5471.41pt,2519.3299pt) ..controls (5355.58pt,2614.5799pt) and (5354.7pt,2807.1999pt) .. (5365.06pt,2916.3699pt); - \draw[pstyle12] (9413.38pt,2087.1199pt) -- (9409.9931pt,2096.3681pt) -- (9413.7156pt,2092.1086pt) -- (9417.975pt,2095.8311pt) -- (9413.38pt,2087.1199pt) -- cycle; - \node at (9414.6995pt,2094.9759pt)[below right,color=black]{1}; - \node at (5355.5673pt,2890.5705pt)[below right,color=black]{1}; - \draw[pstyle11] (9413.7827pt,2093.0964pt) ..controls (9419.5927pt,2179.4764pt) and (9421.29pt,2407.9299pt) .. (9286.41pt,2511.3299pt) ..controls (9266.82pt,2526.3499pt) and (5751.01pt,2504.3099pt) .. (5731.41pt,2519.3299pt) ..controls (5613.62pt,2609.5299pt) and (5595.61pt,2795.3299pt) .. (5596.34pt,2906.6399pt); - \draw[pstyle12] (9413.38pt,2087.1099pt) -- (9409.993pt,2096.358pt) -- (9413.7155pt,2092.0986pt) -- (9417.975pt,2095.8212pt) -- (9413.38pt,2087.1099pt) -- cycle; - \node at (9405.2245pt,2094.9641pt)[below right,color=black]{1}; - \node at (5585.6214pt,2881.4892pt)[below right,color=black]{1}; - \draw[pstyle11] (9413.7814pt,2093.0965pt) ..controls (9419.5714pt,2179.4565pt) and (9421.26pt,2407.8799pt) .. (9286.41pt,2511.3299pt) ..controls (9256.09pt,2534.5799pt) and (6566.07pt,2496.5299pt) .. (6535.41pt,2519.3299pt) ..controls (6408.06pt,2614.0199pt) and (6388.73pt,2817.7099pt) .. (6388.03pt,2925.8299pt); - \draw[pstyle12] (9413.38pt,2087.1099pt) -- (9409.991pt,2096.3573pt) -- (9413.7145pt,2092.0987pt) -- (9417.9731pt,2095.8222pt) -- (9413.38pt,2087.1099pt) -- cycle; - \node at (9404.5576pt,2095.069pt)[below right,color=black]{1}; - \node at (6379.353pt,2900.0868pt)[below right,color=black]{1}; - \draw[pstyle11] (9406.1344pt,2093.3159pt) ..controls (9396.6244pt,2171.3759pt) and (9366.37pt,2365.7999pt) .. (9286.41pt,2511.3299pt) ..controls (9177.64pt,2709.2799pt) and (8972.12pt,2891.3299pt) .. (8884.57pt,2963.6599pt); - \draw[pstyle12] (9406.86pt,2087.3599pt) -- (9401.8009pt,2095.8101pt) -- (9406.2553pt,2092.3232pt) -- (9409.7422pt,2096.7776pt) -- (9406.86pt,2087.3599pt) -- cycle; - \node at (9397.5484pt,2094.9924pt)[below right,color=black]{1}; - \node at (8883.9237pt,2938.3713pt)[below right,color=black]{1}; - \draw[pstyle11] (9662.5096pt,2093.1291pt) ..controls (9667.6996pt,2179.5591pt) and (9667.81pt,2408.1399pt) .. (9532.41pt,2511.3299pt) ..controls (9516.12pt,2523.7399pt) and (6597.34pt,2505.2999pt) .. (6582.41pt,2519.3299pt) ..controls (6438.18pt,2654.8099pt) and (6668.72pt,3272.5099pt) .. (6524.41pt,3407.9099pt) ..controls (6510.94pt,3420.5499pt) and (1217.75pt,3404.2599pt) .. (1203.41pt,3415.9099pt) ..controls (1137.35pt,3469.5599pt) and (1115.4pt,3561.3699pt) .. (1110.52pt,3642.7699pt); - \draw[pstyle12] (9662.15pt,2087.1399pt) -- (9658.6967pt,2096.3635pt) -- (9662.4497pt,2092.1309pt) -- (9666.6823pt,2095.884pt) -- (9662.15pt,2087.1399pt) -- cycle; - \node at (9653.1065pt,2095.1282pt)[below right,color=black]{1}; - \node at (1101.8565pt,3617.2722pt)[below right,color=black]{1}; - \draw[pstyle11] (9662.5096pt,2093.1291pt) ..controls (9667.6996pt,2179.5591pt) and (9667.81pt,2408.1299pt) .. (9532.41pt,2511.3299pt) ..controls (9516.43pt,2523.5099pt) and (6652.98pt,2505.4799pt) .. (6638.41pt,2519.3299pt) ..controls (6495.05pt,2655.5299pt) and (6733.86pt,3271.7899pt) .. (6590.41pt,3407.9099pt) ..controls (6577.49pt,3420.1599pt) and (1476.96pt,3405.6499pt) .. (1462.41pt,3415.9099pt) ..controls (1444.04pt,3428.8599pt) and (1428.05pt,3444.4399pt) .. (1414.13pt,3461.8199pt); - \draw[pstyle12] (9662.15pt,2087.1399pt) -- (9658.6967pt,2096.3635pt) -- (9662.4497pt,2092.1309pt) -- (9666.6823pt,2095.884pt) -- (9662.15pt,2087.1399pt) -- cycle; - \node at (9668.9065pt,2095.1282pt)[below right,color=black]{1}; - \node at (1408.2137pt,3436.467pt)[below right,color=black]{1}; - \draw[pstyle11] (9662.5203pt,2093.1291pt) ..controls (9667.7203pt,2179.5791pt) and (9667.85pt,2408.1899pt) .. (9532.41pt,2511.3299pt) ..controls (9508.92pt,2529.2099pt) and (5306.06pt,2503.0799pt) .. (5281.41pt,2519.3299pt) ..controls (5171pt,2592.0699pt) and (5119.5pt,2737.8699pt) .. (5095.64pt,2849.2799pt); - \draw[pstyle12] (9662.16pt,2087.1399pt) -- (9658.7076pt,2096.3638pt) -- (9662.4602pt,2092.1309pt) -- (9666.6932pt,2095.8835pt) -- (9662.16pt,2087.1399pt) -- cycle; - \node at (9663.4395pt,2094.9996pt)[below right,color=black]{1}; - \node at (5100.142pt,2823.5636pt)[below right,color=black]{1}; - \draw[pstyle11] (9662.5096pt,2093.1291pt) ..controls (9667.6996pt,2179.5591pt) and (9667.81pt,2408.1399pt) .. (9532.41pt,2511.3299pt) ..controls (9515.86pt,2523.9399pt) and (6552.11pt,2506.9099pt) .. (6535.41pt,2519.3299pt) ..controls (6408.05pt,2614.0099pt) and (6388.73pt,2817.6999pt) .. (6388.03pt,2925.8299pt); - \draw[pstyle12] (9662.15pt,2087.1399pt) -- (9658.6967pt,2096.3635pt) -- (9662.4497pt,2092.1309pt) -- (9666.6823pt,2095.884pt) -- (9662.15pt,2087.1399pt) -- cycle; - \node at (9653.9527pt,2094.9996pt)[below right,color=black]{1}; - \node at (6379.353pt,2900.0868pt)[below right,color=black]{1}; - \draw[pstyle11] (9657.325pt,2093.1355pt) ..controls (9651.795pt,2172.8955pt) and (9628.85pt,2374.5499pt) .. (9532.41pt,2511.3299pt) ..controls (9369.27pt,2742.7099pt) and (9059.11pt,2901.5599pt) .. (8917.39pt,2965.3399pt); - \draw[pstyle12] (9657.74pt,2087.1499pt) -- (9653.1271pt,2095.8517pt) -- (9657.3942pt,2092.1379pt) -- (9661.1079pt,2096.405pt) -- (9657.74pt,2087.1499pt) -- cycle; - \node at (9648.7296pt,2095.0115pt)[below right,color=black]{1}; - \node at (8924.8408pt,2944.4873pt)[below right,color=black]{1}; - \draw[pstyle11] (9906.0248pt,1412.9267pt) ..controls (9889.6548pt,1472.6867pt) and (9859.17pt,1544.5199pt) .. (9798.41pt,1583.3999pt) ..controls (9717.81pt,1634.9899pt) and (8168.85pt,1594.6999pt) .. (8076.41pt,1619.3999pt) ..controls (7279.74pt,1832.3399pt) and (7247.11pt,2302.2799pt) .. (6449.41pt,2511.3299pt) ..controls (6430.12pt,2516.3799pt) and (5747.19pt,2507.1299pt) .. (5731.41pt,2519.3299pt) ..controls (5614.03pt,2610.0499pt) and (5595.87pt,2795.6699pt) .. (5596.47pt,2906.7999pt); - \draw[pstyle12] (9907.61pt,1407.1399pt) -- (9901.3744pt,1414.7633pt) -- (9906.289pt,1411.9622pt) -- (9909.0901pt,1416.8769pt) -- (9907.61pt,1407.1399pt) -- cycle; - \node at (9897.9245pt,1414.9034pt)[below right,color=black]{1}; - \node at (5596.2319pt,2880.6737pt)[below right,color=black]{1}; - \draw[pstyle11] (9906.1427pt,1413.0989pt) ..controls (9889.8327pt,1472.9589pt) and (9859.36pt,1544.8299pt) .. (9798.41pt,1583.3999pt) ..controls (9640.81pt,1683.1399pt) and (6599.67pt,1520.7199pt) .. (6441.41pt,1619.3999pt) ..controls (6064.82pt,1854.2399pt) and (6368.93pt,2276.3999pt) .. (5992.41pt,2511.3299pt) ..controls (5958.9pt,2532.2399pt) and (5314.29pt,2497.4399pt) .. (5281.41pt,2519.3299pt) ..controls (5171.44pt,2592.5299pt) and (5119.88pt,2738.0599pt) .. (5095.89pt,2849.2799pt); - \draw[pstyle12] (9907.72pt,1407.3099pt) -- (9901.4947pt,1414.9418pt) -- (9906.4056pt,1412.134pt) -- (9909.2133pt,1417.0449pt) -- (9907.72pt,1407.3099pt) -- cycle; - \node at (9906.7674pt,1414.8052pt)[below right,color=black]{1}; - \node at (5088.8015pt,2823.7225pt)[below right,color=black]{1}; - \draw[pstyle11] (9932.5731pt,1413.0564pt) ..controls (9949.3731pt,1571.3764pt) and (9985.46pt,1911.4399pt) .. (9996.92pt,2019.4699pt); - \draw[pstyle12] (9931.94pt,1407.0899pt) -- (9928.912pt,1416.4617pt) -- (9932.4676pt,1412.062pt) -- (9936.8674pt,1415.6176pt) -- (9931.94pt,1407.0899pt) -- cycle; - \node at (9924.3453pt,1414.8491pt)[below right,color=black]{1}; - \node at (9987.4817pt,1994.1931pt)[below right,color=black]{1}; - \draw[pstyle11] (9970.6521pt,1412.5024pt) ..controls (10013.8521pt,1491.3824pt) and (10071.28pt,1597.5399pt) .. (10079.41pt,1619.3999pt) ..controls (10133.01pt,1763.5099pt) and (10162.59pt,1945.9499pt) .. (10173.03pt,2019.4599pt); - \draw[pstyle12] (9967.77pt,1407.2399pt) -- (9968.5848pt,1417.055pt) -- (9970.1717pt,1411.6253pt) -- (9975.6014pt,1413.2122pt) -- (9967.77pt,1407.2399pt) -- cycle; - \node at (9963.1278pt,1414.7294pt)[below right,color=black]{1}; - \node at (10172.9918pt,1994.1811pt)[below right,color=black]{1}; - \draw[pstyle11] (9946.2017pt,1412.8872pt) ..controls (9966.2317pt,1472.4772pt) and (10000.98pt,1544.1499pt) .. (10063.41pt,1583.3999pt) ..controls (10129.91pt,1625.2099pt) and (10710.28pt,1567.7099pt) .. (10769.41pt,1619.3999pt) ..controls (10882.97pt,1718.6799pt) and (10869.62pt,1922.0099pt) .. (10857.51pt,2010.1099pt); - \draw[pstyle12] (9944.29pt,1407.1999pt) -- (9943.366pt,1417.0053pt) -- (9945.8831pt,1411.9393pt) -- (9950.9491pt,1414.4564pt) -- (9944.29pt,1407.1999pt) -- cycle; - \node at (9937.7567pt,1414.9686pt)[below right,color=black]{1}; - \node at (10850.0542pt,1984.596pt)[below right,color=black]{1}; - \draw[pstyle11] (11436.6154pt,1507.8605pt) ..controls (11420.6554pt,1539.0305pt) and (11402.28pt,1562.7399pt) .. (11374.41pt,1583.3999pt) ..controls (11266.89pt,1663.1199pt) and (11172.16pt,1526.9099pt) .. (11075.41pt,1619.3999pt) ..controls (10958.23pt,1731.4299pt) and (10986.09pt,1956.2799pt) .. (10998.85pt,2029.0599pt); - \draw[pstyle12] (11439.35pt,1502.5199pt) -- (11431.6877pt,1508.7078pt) -- (11437.0712pt,1506.9704pt) -- (11438.8086pt,1512.3539pt) -- (11439.35pt,1502.5199pt) -- cycle; - \node at (11429.1618pt,1510.3549pt)[below right,color=black]{1}; - \node at (10988.705pt,2003.7428pt)[below right,color=black]{1}; - \draw[pstyle11] (12740.5468pt,1441.3085pt) ..controls (12720.4168pt,1490.2285pt) and (12694.05pt,1540.8199pt) .. (12656.41pt,1583.3999pt) ..controls (12454.62pt,1811.6799pt) and (12115.89pt,1971.5599pt) .. (11981.68pt,2028.9499pt); - \draw[pstyle12] (12742.83pt,1435.7599pt) -- (12735.7061pt,1442.5607pt) -- (12740.9273pt,1440.3837pt) -- (12743.1043pt,1445.6049pt) -- (12742.83pt,1435.7599pt) -- cycle; - \node at (12732.2424pt,1443.3806pt)[below right,color=black]{1}; - \node at (11987.3799pt,2003.6046pt)[below right,color=black]{1}; - \draw[pstyle11] (12771.7436pt,1441.6376pt) ..controls (12752.6936pt,1662.1776pt) and (12685.68pt,2163.8499pt) .. (12455.41pt,2511.3299pt) ..controls (12302.17pt,2742.5599pt) and (12002.65pt,2913.1199pt) .. (11886.77pt,2973.1199pt); - \draw[pstyle12] (12772.26pt,1435.6599pt) -- (12767.5003pt,1444.2823pt) -- (12771.8297pt,1440.6413pt) -- (12775.4706pt,1444.9707pt) -- (12772.26pt,1435.6599pt) -- cycle; - \node at (12763.5235pt,1443.6456pt)[below right,color=black]{1}; - \node at (11889.9284pt,2947.7541pt)[below right,color=black]{1}; - \draw[pstyle11] (11020.4273pt,1450.9632pt) ..controls (11002.7873pt,1502.2132pt) and (10975.7pt,1551.8799pt) .. (10928.41pt,1583.3999pt) ..controls (10849.85pt,1635.7799pt) and (10150.62pt,1557.4099pt) .. (10079.41pt,1619.3999pt) ..controls (9961.42pt,1722.1299pt) and (9981.63pt,1937.4999pt) .. (9994.45pt,2019.6099pt); - \draw[pstyle12] (11022.38pt,1445.2899pt) -- (11015.6687pt,1452.4981pt) -- (11020.7527pt,1450.0177pt) -- (11023.2331pt,1455.1017pt) -- (11022.38pt,1445.2899pt) -- cycle; - \node at (11012.5617pt,1453.1194pt)[below right,color=black]{1}; - \node at (9994.0838pt,1993.9678pt)[below right,color=black]{1}; - \draw[pstyle11] (10992.6031pt,1450.6903pt) ..controls (10970.4931pt,1503.2403pt) and (10948.43pt,1560.7999pt) .. (10931.41pt,1619.3999pt) ..controls (10890.68pt,1759.6699pt) and (10865.64pt,1931.6399pt) .. (10855.55pt,2009.9299pt); - \draw[pstyle12] (10994.93pt,1445.1599pt) -- (10987.7527pt,1451.9043pt) -- (10992.9909pt,1449.7686pt) -- (10995.1266pt,1455.0068pt) -- (10994.93pt,1445.1599pt) -- cycle; - \node at (10983.4389pt,1452.9814pt)[below right,color=black]{1}; - \node at (10848.5276pt,1984.4235pt)[below right,color=black]{1}; - \draw[pstyle11] (11076.3097pt,1451.0843pt) ..controls (11093.9297pt,1502.3643pt) and (11121.04pt,1552.0099pt) .. (11168.41pt,1583.3999pt) ..controls (11258.96pt,1643.4099pt) and (12070.03pt,1541.1899pt) .. (12145.41pt,1619.3999pt) ..controls (12179.8pt,1655.0799pt) and (12159.17pt,2463.7199pt) .. (12145.41pt,2511.3299pt) ..controls (12087.76pt,2710.8299pt) and (11921.04pt,2907.2699pt) .. (11861.15pt,2973.2999pt); - \draw[pstyle12] (11074.36pt,1445.4099pt) -- (11073.5017pt,1455.2213pt) -- (11075.9848pt,1450.1385pt) -- (11081.0675pt,1452.6216pt) -- (11074.36pt,1445.4099pt) -- cycle; - \node at (11067.64pt,1452.8448pt)[below right,color=black]{1}; - \node at (11867.7933pt,2947.9802pt)[below right,color=black]{1}; - \draw[pstyle11] (10555.5543pt,1460.6755pt) ..controls (10541.2243pt,1511.5855pt) and (10527.19pt,1565.0799pt) .. (10515.41pt,1619.3999pt) ..controls (10481.77pt,1774.5599pt) and (10456.49pt,1964.1799pt) .. (10448.27pt,2029.1999pt); - \draw[pstyle12] (10557.18pt,1454.8999pt) -- (10550.8911pt,1462.4795pt) -- (10555.8253pt,1459.7129pt) -- (10558.5918pt,1464.647pt) -- (10557.18pt,1454.8999pt) -- cycle; - \node at (10546.8811pt,1462.4522pt)[below right,color=black]{1}; - \node at (10440.0135pt,2003.5147pt)[below right,color=black]{1}; - \draw[pstyle11] (10592.2693pt,1460.7282pt) ..controls (10588.0993pt,1638.5482pt) and (10580.99pt,1942.1999pt) .. (10578.96pt,2029.0999pt); - \draw[pstyle12] (10592.41pt,1454.7299pt) -- (10588.2001pt,1463.6336pt) -- (10592.2928pt,1459.7285pt) -- (10596.1979pt,1463.8212pt) -- (10592.41pt,1454.7299pt) -- cycle; - \node at (10584.0164pt,1462.7039pt)[below right,color=black]{1}; - \node at (10580.1745pt,2003.793pt)[below right,color=black]{1}; - \draw[pstyle11] (10628.042pt,1460.3521pt) ..controls (10646.452pt,1509.0421pt) and (10673.31pt,1554.1599pt) .. (10718.41pt,1583.3999pt) ..controls (10781.5pt,1624.3199pt) and (12018.95pt,1565.5299pt) .. (12071.41pt,1619.3999pt) ..controls (12105.98pt,1654.9099pt) and (12082.37pt,2462.9999pt) .. (12071.41pt,2511.3299pt) ..controls (12028.15pt,2702.1199pt) and (11900.32pt,2905.6399pt) .. (11855.31pt,2973.2799pt); - \draw[pstyle12] (10625.92pt,1454.7399pt) -- (10625.3615pt,1464.5729pt) -- (10627.6883pt,1459.4168pt) -- (10632.8445pt,1461.7436pt) -- (10625.92pt,1454.7399pt) -- cycle; - \node at (10619.4637pt,1462.7145pt)[below right,color=black]{1}; - \node at (11860.4568pt,2947.9551pt)[below right,color=black]{1}; - \draw[pstyle11] (12297.6809pt,1431.8675pt) ..controls (12279.9209pt,1487.6875pt) and (12250.62pt,1547.4299pt) .. (12197.41pt,1583.3999pt) ..controls (12099.98pt,1649.2699pt) and (11757.37pt,1541.3399pt) .. (11669.41pt,1619.3999pt) ..controls (11547.53pt,1727.5699pt) and (11571.7pt,1955.4699pt) .. (11583.26pt,2028.9799pt); - \draw[pstyle12] (12299.5pt,1426.1499pt) -- (12292.9596pt,1433.5135pt) -- (12297.9841pt,1430.9146pt) -- (12300.583pt,1435.939pt) -- (12299.5pt,1426.1499pt) -- cycle; - \node at (12289.6912pt,1433.838pt)[below right,color=black]{1}; - \node at (11573.2206pt,2003.6423pt)[below right,color=black]{1}; - \draw[pstyle11] (12342.0197pt,1432.1209pt) ..controls (12378.5897pt,1642.0409pt) and (12439.47pt,2135.7099pt) .. (12286.41pt,2511.3299pt) ..controls (12197.37pt,2729.8399pt) and (11962.19pt,2910.9199pt) .. (11873.71pt,2973.3199pt); - \draw[pstyle12] (12340.99pt,1426.2099pt) -- (12338.594pt,1435.7629pt) -- (12341.8481pt,1431.1357pt) -- (12346.4753pt,1434.3899pt) -- (12340.99pt,1426.2099pt) -- cycle; - \node at (12334.0985pt,1433.9022pt)[below right,color=black]{1}; - \node at (11883.5718pt,2948.0054pt)[below right,color=black]{1}; - \draw[pstyle11] (12531.9547pt,1441.7475pt) ..controls (12517.7347pt,1495.0975pt) and (12493.19pt,1549.2199pt) .. (12445.41pt,1583.3999pt) ..controls (12336.06pt,1661.6499pt) and (11942.75pt,1531.0299pt) .. (11841.41pt,1619.3999pt) ..controls (11727.48pt,1718.7499pt) and (11738.06pt,1922.0399pt) .. (11748.92pt,2010.1199pt); - \draw[pstyle12] (12533.5pt,1435.9499pt) -- (12527.317pt,1443.6161pt) -- (12532.2123pt,1440.7812pt) -- (12535.0471pt,1445.6765pt) -- (12533.5pt,1435.9499pt) -- cycle; - \node at (12524.1724pt,1443.5828pt)[below right,color=black]{1}; - \node at (11739.2144pt,1984.6076pt)[below right,color=black]{1}; - \draw[pstyle11] (12553.4924pt,1441.5897pt) ..controls (12555.0324pt,1659.3197pt) and (12535.41pt,2152.1399pt) .. (12344.41pt,2511.3299pt) ..controls (12227.09pt,2731.9499pt) and (11972.71pt,2911.0799pt) .. (11876.92pt,2973.1699pt); - \draw[pstyle12] (12553.45pt,1435.5899pt) -- (12549.5138pt,1444.618pt) -- (12553.4854pt,1440.5898pt) -- (12557.5136pt,1444.5614pt) -- (12553.45pt,1435.5899pt) -- cycle; - \node at (12545.3981pt,1443.5709pt)[below right,color=black]{1}; - \node at (11877.5543pt,2947.8169pt)[below right,color=black]{1}; - \draw[pstyle11] (12018.8925pt,1450.9473pt) ..controls (11997.1225pt,1501.8973pt) and (11966.27pt,1551.4399pt) .. (11917.41pt,1583.3999pt) ..controls (11840.5pt,1633.7199pt) and (11574.71pt,1559.0399pt) .. (11505.41pt,1619.3999pt) ..controls (11381.57pt,1727.2799pt) and (11395.27pt,1955.3699pt) .. (11403.37pt,2028.9499pt); - \draw[pstyle12] (12021.25pt,1445.4299pt) -- (12014.0355pt,1452.1344pt) -- (12019.2854pt,1450.0278pt) -- (12021.392pt,1455.2777pt) -- (12021.25pt,1445.4299pt) -- cycle; - \node at (12010.9391pt,1452.8659pt)[below right,color=black]{1}; - \node at (11393.6134pt,2003.6046pt)[below right,color=black]{1}; - \draw[pstyle11] (12110.8103pt,1450.633pt) ..controls (12133.9403pt,1496.743pt) and (12161.55pt,1542.7699pt) .. (12197.41pt,1583.3999pt) ..controls (12215.53pt,1603.9399pt) and (12234.93pt,1595.0299pt) .. (12247.41pt,1619.3999pt) ..controls (12337.77pt,1795.8099pt) and (12315.29pt,2325.1099pt) .. (12247.41pt,2511.3299pt) ..controls (12169.57pt,2724.8799pt) and (11951.83pt,2909.6699pt) .. (11870.54pt,2973.1499pt); - \draw[pstyle12] (12108.12pt,1445.2699pt) -- (12108.58pt,1455.108pt) -- (12110.3619pt,1449.7391pt) -- (12115.7308pt,1451.521pt) -- (12108.12pt,1445.2699pt) -- cycle; - \node at (12102.9778pt,1453.0981pt)[below right,color=black]{1}; - \node at (11928.8096pt,2947.3819pt)[below right,color=black]{1}; - \draw[pstyle11] (10407.1106pt,1441.6997pt) ..controls (10421.1506pt,1489.8197pt) and (10440.65pt,1539.4999pt) .. (10471.41pt,1583.3999pt) ..controls (10485.91pt,1604.0999pt) and (10502.97pt,1597.4099pt) .. (10515.41pt,1619.3999pt) ..controls (10593.95pt,1758.2399pt) and (10586.03pt,1960.6399pt) .. (10580.65pt,2028.8999pt); - \draw[pstyle12] (10405.43pt,1435.9399pt) -- (10404.1109pt,1445.7pt) -- (10406.8305pt,1440.7398pt) -- (10411.7907pt,1443.4593pt) -- (10405.43pt,1435.9399pt) -- cycle; - \node at (10398.7246pt,1443.5721pt)[below right,color=black]{1}; - \node at (10572.2476pt,2003.5418pt)[below right,color=black]{1}; - \draw[pstyle11] (10372.5382pt,1441.6821pt) ..controls (10359.1282pt,1615.3821pt) and (10334.19pt,1938.5899pt) .. (10327.22pt,2028.9299pt); - \draw[pstyle12] (10373pt,1435.6999pt) -- (10368.3191pt,1444.3653pt) -- (10372.6151pt,1440.6851pt) -- (10376.2954pt,1444.9811pt) -- (10373pt,1435.6999pt) -- cycle; - \node at (10372.7296pt,1443.3168pt)[below right,color=black]{1}; - \node at (10318.7064pt,2003.5795pt)[below right,color=black]{1}; - \draw[pstyle11] (10392.3855pt,1441.7596pt) ..controls (10403.2655pt,1495.2696pt) and (10424.7pt,1549.4599pt) .. (10471.41pt,1583.3999pt) ..controls (10541.68pt,1634.4599pt) and (11973.7pt,1557.2899pt) .. (12034.41pt,1619.3999pt) ..controls (12069.04pt,1654.8399pt) and (12043.82pt,2462.6799pt) .. (12034.41pt,2511.3299pt) ..controls (11998.2pt,2698.5299pt) and (11890.18pt,2905.1599pt) .. (11852.53pt,2973.3699pt); - \draw[pstyle12] (10391.19pt,1435.8799pt) -- (10389.0635pt,1445.4964pt) -- (10392.1862pt,1440.7796pt) -- (10396.903pt,1443.9024pt) -- (10391.19pt,1435.8799pt) -- cycle; - \node at (10383.5724pt,1443.5083pt)[below right,color=black]{1}; - \node at (11881.0831pt,2947.9649pt)[below right,color=black]{1}; - \draw[pstyle11] (11676.0828pt,1498.1393pt) ..controls (11654.3528pt,1531.3193pt) and (11631.61pt,1558.5299pt) .. (11601.41pt,1583.3999pt) ..controls (11566.24pt,1612.3699pt) and (11535.4pt,1585.0999pt) .. (11505.41pt,1619.3999pt) ..controls (11397.95pt,1742.3299pt) and (11400.53pt,1958.1199pt) .. (11404.63pt,2029.0499pt); - \draw[pstyle12] (11679.37pt,1493.1199pt) -- (11671.0929pt,1498.4574pt) -- (11676.6306pt,1497.3027pt) -- (11677.7854pt,1502.8404pt) -- (11679.37pt,1493.1199pt) -- cycle; - \node at (11667.8323pt,1500.5581pt)[below right,color=black]{1}; - \node at (11405.2462pt,2003.7302pt)[below right,color=black]{1}; - \draw[pstyle11] (11683.9137pt,1498.1594pt) ..controls (11661.3237pt,1533.1194pt) and (11636.21pt,1561.0799pt) .. (11601.41pt,1583.3999pt) ..controls (11490.61pt,1654.4999pt) and (11406.78pt,1533.0499pt) .. (11307.41pt,1619.3999pt) ..controls (11187.29pt,1723.7899pt) and (11185.06pt,1937.6899pt) .. (11189.02pt,2019.5199pt); - \draw[pstyle12] (11687.17pt,1493.1199pt) -- (11678.9258pt,1498.5082pt) -- (11684.4564pt,1497.3195pt) -- (11685.6451pt,1502.85pt) -- (11687.17pt,1493.1199pt) -- cycle; - \node at (11675.9614pt,1500.5581pt)[below right,color=black]{1}; - \node at (11179.7998pt,1994.2529pt)[below right,color=black]{1}; - \draw[pstyle11] (11834.6415pt,1497.9125pt) ..controls (11857.2615pt,1532.9925pt) and (11882.46pt,1561.0599pt) .. (11917.41pt,1583.3999pt) ..controls (11974.35pt,1619.8099pt) and (12174.54pt,1568.8599pt) .. (12219.41pt,1619.3999pt) ..controls (12285.21pt,1693.5099pt) and (12251.73pt,2417.6399pt) .. (12219.41pt,2511.3299pt) ..controls (12147.09pt,2720.9799pt) and (11942.81pt,2909.2299pt) .. (11867.63pt,2973.3299pt); - \draw[pstyle12] (11831.39pt,1492.8699pt) -- (11832.9056pt,1502.6015pt) -- (11834.0996pt,1497.0721pt) -- (11839.629pt,1498.2661pt) -- (11831.39pt,1492.8699pt) -- cycle; - \node at (11826.4787pt,1500.8478pt)[below right,color=black]{1}; - \node at (11899.8981pt,2947.8589pt)[below right,color=black]{1}; - \draw[pstyle11] (10124.4639pt,1470.0323pt) ..controls (10108.0039pt,1518.5923pt) and (10092.5pt,1568.1799pt) .. (10079.41pt,1619.3999pt) ..controls (10041.76pt,1766.7199pt) and (10014.91pt,1946.6299pt) .. (10004.82pt,2019.4399pt); - \draw[pstyle12] (10126.39pt,1464.3499pt) -- (10119.7125pt,1471.5895pt) -- (10124.7849pt,1469.0853pt) -- (10127.2891pt,1474.1576pt) -- (10126.39pt,1464.3499pt) -- cycle; - \node at (10115.6145pt,1471.9577pt)[below right,color=black]{1}; - \node at (10006.512pt,1994.1572pt)[below right,color=black]{1}; - \draw[pstyle11] (10176.6083pt,1470.4399pt) ..controls (10176.8483pt,1643.4999pt) and (10177.23pt,1923.4699pt) .. (10177.36pt,2019.6499pt); - \draw[pstyle12] (10176.6pt,1464.4399pt) -- (10172.6125pt,1473.4454pt) -- (10176.6069pt,1469.4399pt) -- (10180.6125pt,1473.4343pt) -- (10176.6pt,1464.4399pt) -- cycle; - \node at (10168.4135pt,1472.0524pt)[below right,color=black]{1}; - \node at (10178.213pt,1994.0161pt)[below right,color=black]{1}; - \draw[pstyle11] (10207.9081pt,1469.9948pt) ..controls (10224.8281pt,1515.5748pt) and (10249.19pt,1555.9899pt) .. (10290.41pt,1583.3999pt) ..controls (10369.76pt,1636.1799pt) and (11938.73pt,1551.3199pt) .. (12005.41pt,1619.3999pt) ..controls (12040.08pt,1654.8099pt) and (12013.54pt,2462.4499pt) .. (12005.41pt,2511.3299pt) ..controls (11974.66pt,2696.2199pt) and (11882.24pt,2905.1699pt) .. (11850.36pt,2973.5999pt); - \draw[pstyle12] (10205.82pt,1464.3699pt) -- (10205.2021pt,1474.1994pt) -- (10207.5601pt,1469.0574pt) -- (10212.7021pt,1471.4153pt) -- (10205.82pt,1464.3699pt) -- cycle; - \node at (10199.1401pt,1471.9787pt)[below right,color=black]{1}; - \node at (11854.4275pt,2947.955pt)[below right,color=black]{1}; - \draw[pstyle11] (10783.2154pt,1479.5863pt) ..controls (10767.6954pt,1518.6663pt) and (10748.53pt,1552.8599pt) .. (10719.41pt,1583.3999pt) ..controls (10693.06pt,1611.0399pt) and (10664.26pt,1588.8099pt) .. (10641.41pt,1619.3999pt) ..controls (10545.28pt,1748.1199pt) and (10564.99pt,1959.6799pt) .. (10574.75pt,2029.3299pt); - \draw[pstyle12] (10785.43pt,1474.0099pt) -- (10778.3906pt,1480.8981pt) -- (10783.5845pt,1478.6569pt) -- (10785.8257pt,1483.8508pt) -- (10785.43pt,1474.0099pt) -- cycle; - \node at (10775.4058pt,1481.6243pt)[below right,color=black]{1}; - \node at (10554.424pt,2004.2714pt)[below right,color=black]{1}; - \draw[pstyle11] (10794.0949pt,1479.7991pt) ..controls (10785.4649pt,1526.2891pt) and (10777.28pt,1571.9899pt) .. (10769.41pt,1619.3999pt) ..controls (10743.45pt,1775.6899pt) and (10717.32pt,1964.5999pt) .. (10708.52pt,2029.3199pt); - \draw[pstyle12] (10795.19pt,1473.8999pt) -- (10789.6146pt,1482.0187pt) -- (10794.2774pt,1478.8159pt) -- (10797.4802pt,1483.4788pt) -- (10795.19pt,1473.8999pt) -- cycle; - \node at (10785.6385pt,1481.509pt)[below right,color=black]{1}; - \node at (10700.3316pt,2003.667pt)[below right,color=black]{1}; - \draw[pstyle11] (10853.7244pt,1479.6099pt) ..controls (10869.2544pt,1521.7599pt) and (10891.22pt,1557.5999pt) .. (10928.41pt,1583.3999pt) ..controls (11036.18pt,1658.1799pt) and (12017.08pt,1525.2499pt) .. (12108.41pt,1619.3999pt) ..controls (12142.91pt,1654.9699pt) and (12120.82pt,2463.3499pt) .. (12108.41pt,2511.3299pt) ..controls (12058pt,2706.2399pt) and (11910.61pt,2906.3499pt) .. (11858.18pt,2973.2599pt); - \draw[pstyle12] (10851.65pt,1473.9799pt) -- (10851.0082pt,1483.8078pt) -- (10853.3786pt,1478.6716pt) -- (10858.5149pt,1481.042pt) -- (10851.65pt,1473.9799pt) -- cycle; - \node at (10844.8333pt,1481.5929pt)[below right,color=black]{1}; - \node at (11864.0622pt,2947.93pt)[below right,color=black]{1}; - \draw[pstyle11] (11190.3956pt,1564.2792pt) ..controls (11182.5456pt,1572.9992pt) and (11177.93pt,1576.4799pt) .. (11168.41pt,1583.3999pt) ..controls (11073.47pt,1652.4399pt) and (10727.52pt,1539.6299pt) .. (10641.41pt,1619.3999pt) ..controls (10522.87pt,1729.2299pt) and (10557.84pt,1955.5399pt) .. (10573.05pt,2028.8699pt); - \draw[pstyle12] (11194.41pt,1559.8199pt) -- (11185.4156pt,1563.8325pt) -- (11191.0647pt,1563.5359pt) -- (11191.3613pt,1569.185pt) -- (11194.41pt,1559.8199pt) -- cycle; - \node at (11192.2483pt,1567.0344pt)[below right,color=black]{1}; - \node at (10562.7001pt,2003.5041pt)[below right,color=black]{1}; - \draw[pstyle11] (11189.0588pt,1564.2413pt) ..controls (11181.5988pt,1572.8813pt) and (11177.35pt,1576.3199pt) .. (11168.41pt,1583.3999pt) ..controls (11084.9pt,1649.5699pt) and (11008.02pt,1545.3699pt) .. (10931.41pt,1619.3999pt) ..controls (10823.36pt,1723.8299pt) and (10833.46pt,1923.0299pt) .. (10843.99pt,2009.9899pt); - \draw[pstyle12] (11192.98pt,1559.6999pt) -- (11184.0706pt,1563.8979pt) -- (11189.7124pt,1563.4844pt) -- (11190.1258pt,1569.1261pt) -- (11192.98pt,1559.6999pt) -- cycle; - \node at (11182.2814pt,1567.6699pt)[below right,color=black]{1}; - \node at (10843.6199pt,1984.4561pt)[below right,color=black]{1}; - \draw[pstyle11] (11351.0864pt,1564.2683pt) ..controls (11359.0064pt,1573.0183pt) and (11363.74pt,1576.5199pt) .. (11373.41pt,1583.3999pt) ..controls (11446.72pt,1635.5799pt) and (12120.22pt,1554.3799pt) .. (12182.41pt,1619.3999pt) ..controls (12216.66pt,1655.2099pt) and (12197.41pt,2464.0999pt) .. (12182.41pt,2511.3299pt) ..controls (12117.43pt,2715.8499pt) and (11931.61pt,2908.3899pt) .. (11864.21pt,2973.3999pt); - \draw[pstyle12] (11347.06pt,1559.8199pt) -- (11350.134pt,1569.1767pt) -- (11350.4153pt,1563.5269pt) -- (11356.0652pt,1563.8082pt) -- (11347.06pt,1559.8199pt) -- cycle; - \node at (11341.1926pt,1567.0344pt)[below right,color=black]{1}; - \node at (11871.6374pt,2948.1059pt)[below right,color=black]{1}; - \draw[pstyle11] (11582.1624pt,2083.6314pt) ..controls (11569.8024pt,2159.2714pt) and (11543.43pt,2393.5099pt) .. (11669.41pt,2511.3299pt) ..controls (11692.93pt,2533.3199pt) and (11717.62pt,2497.6299pt) .. (11741.41pt,2519.3299pt) ..controls (11875.78pt,2641.8899pt) and (11853.57pt,2895.2299pt) .. (11843.01pt,2973.2399pt); - \draw[pstyle12] (11583.13pt,2077.7099pt) -- (11577.731pt,2085.947pt) -- (11582.3237pt,2082.6445pt) -- (11585.6262pt,2087.2372pt) -- (11583.13pt,2077.7099pt) -- cycle; - \node at (11573.2595pt,2085.3858pt)[below right,color=black]{1}; - \node at (11855.8551pt,2947.6204pt)[below right,color=black]{1}; - \draw[pstyle11] (11921.7707pt,2083.6356pt) ..controls (11910.0307pt,2213.7156pt) and (11853.25pt,2843.1399pt) .. (11841.51pt,2973.2899pt); - \draw[pstyle12] (11922.31pt,2077.6599pt) -- (11917.5172pt,2086.2639pt) -- (11921.8606pt,2082.6397pt) -- (11925.4848pt,2086.983pt) -- (11922.31pt,2077.6599pt) -- cycle; - \node at (11912.944pt,2085.3242pt)[below right,color=black]{1}; - \node at (11833.0705pt,2947.9677pt)[below right,color=black]{1}; - \draw[pstyle11] (11187.3917pt,2093.2192pt) ..controls (11180.2117pt,2179.3692pt) and (11174.96pt,2406.3299pt) .. (11307.41pt,2511.3299pt) ..controls (11326.31pt,2526.3099pt) and (11722.86pt,2503.9099pt) .. (11741.41pt,2519.3299pt) ..controls (11881.61pt,2635.8299pt) and (11855.22pt,2894.4099pt) .. (11843.35pt,2973.3099pt); - \draw[pstyle12] (11187.89pt,2087.2399pt) -- (11183.1563pt,2095.8766pt) -- (11187.4747pt,2092.2226pt) -- (11191.1287pt,2096.541pt) -- (11187.89pt,2087.2399pt) -- cycle; - \node at (11178.5847pt,2094.851pt)[below right,color=black]{1}; - \node at (11845.432pt,2947.9928pt)[below right,color=black]{1}; - \draw[pstyle11] (10698.3556pt,2083.6842pt) ..controls (10681.1756pt,2160.2042pt) and (10640.37pt,2398.1599pt) .. (10769.41pt,2511.3299pt) ..controls (10789.71pt,2529.1299pt) and (11720.56pt,2502.1699pt) .. (11741.41pt,2519.3299pt) ..controls (11882.21pt,2635.1199pt) and (11855.4pt,2894.1799pt) .. (11843.4pt,2973.2499pt); - \draw[pstyle12] (10699.67pt,2077.8299pt) -- (10693.7956pt,2085.735pt) -- (10698.5747pt,2082.7085pt) -- (10701.6013pt,2087.4875pt) -- (10699.67pt,2077.8299pt) -- cycle; - \node at (10689.4613pt,2085.5335pt)[below right,color=black]{1}; - \node at (11835.4448pt,2947.9174pt)[below right,color=black]{1}; - \draw[pstyle11] (9992.8075pt,2093.1904pt) ..controls (9977.8275pt,2178.9404pt) and (9952.64pt,2404.0699pt) .. (10079.41pt,2511.3299pt) ..controls (10097.03pt,2526.2399pt) and (11723.56pt,2504.6899pt) .. (11741.41pt,2519.3299pt) ..controls (11882.4pt,2634.8799pt) and (11855.47pt,2894.1099pt) .. (11843.41pt,2973.2299pt); - \draw[pstyle12] (9993.84pt,2087.2799pt) -- (9988.3509pt,2095.4573pt) -- (9992.9796pt,2092.2053pt) -- (9996.2315pt,2096.834pt) -- (9993.84pt,2087.2799pt) -- cycle; - \node at (9983.9901pt,2094.8981pt)[below right,color=black]{1}; - \node at (11845.5074pt,2947.8923pt)[below right,color=black]{1}; - \draw[pstyle11] (10997.0005pt,2083.4888pt) ..controls (10981.4205pt,2159.8488pt) and (10945.13pt,2398.6099pt) .. (11075.41pt,2511.3299pt) ..controls (11089.4pt,2523.4299pt) and (11727.14pt,2507.5499pt) .. (11741.41pt,2519.3299pt) ..controls (11881.99pt,2635.3799pt) and (11855.33pt,2894.2699pt) .. (11843.38pt,2973.2699pt); - \draw[pstyle12] (10998.2pt,2077.6099pt) -- (10992.4815pt,2085.6286pt) -- (10997.2004pt,2082.509pt) -- (11000.32pt,2087.2279pt) -- (10998.2pt,2077.6099pt) -- cycle; - \node at (10988.114pt,2085.2627pt)[below right,color=black]{1}; - \node at (11835.6356pt,2947.6999pt)[below right,color=black]{1}; - \draw[pstyle11] (10438.8279pt,2083.492pt) ..controls (10422.7979pt,2159.892pt) and (10385.15pt,2398.7599pt) .. (10515.41pt,2511.3299pt) ..controls (10541.18pt,2533.5899pt) and (11715.09pt,2497.7199pt) .. (11741.41pt,2519.3299pt) ..controls (11882.3pt,2634.9999pt) and (11855.43pt,2894.1399pt) .. (11843.41pt,2973.2399pt); - \draw[pstyle12] (10440.06pt,2077.6199pt) -- (10434.2971pt,2085.6067pt) -- (10439.0333pt,2082.5133pt) -- (10442.1266pt,2087.2495pt) -- (10440.06pt,2077.6199pt) -- cycle; - \node at (10429.9407pt,2085.275pt)[below right,color=black]{1}; - \node at (11835.7151pt,2947.6204pt)[below right,color=black]{1}; - \draw[pstyle11] (10317.3164pt,2083.5358pt) ..controls (10297.4564pt,2159.7158pt) and (10248.43pt,2396.8099pt) .. (10375.41pt,2511.3299pt) ..controls (10389.5pt,2524.0299pt) and (11726.74pt,2507.2899pt) .. (11741.41pt,2519.3299pt) ..controls (11882.34pt,2634.9499pt) and (11855.45pt,2894.1299pt) .. (11843.41pt,2973.2399pt); - \draw[pstyle12] (10318.83pt,2077.7299pt) -- (10312.689pt,2085.4298pt) -- (10317.5687pt,2082.5682pt) -- (10320.4302pt,2087.4479pt) -- (10318.83pt,2077.7299pt) -- cycle; - \node at (10308.4263pt,2085.4104pt)[below right,color=black]{1}; - \node at (11856.9151pt,2947.6204pt)[below right,color=black]{1}; - \draw[pstyle11] (11759.7128pt,2102.6562pt) ..controls (11774.3028pt,2266.3062pt) and (11826.23pt,2848.8099pt) .. (11837.34pt,2973.3599pt); - \draw[pstyle12] (11759.18pt,2096.6799pt) -- (11755.995pt,2105.9995pt) -- (11759.624pt,2101.6601pt) -- (11763.9634pt,2105.2891pt) -- (11759.18pt,2096.6799pt) -- cycle; - \node at (11751.1744pt,2104.3416pt)[below right,color=black]{1}; - \node at (11819.6296pt,2947.9384pt)[below right,color=black]{1}; - \draw[pstyle11] (10171.6358pt,2093.111pt) ..controls (10160.5958pt,2179.081pt) and (10145.39pt,2405.6499pt) .. (10275.41pt,2511.3299pt) ..controls (10291.21pt,2524.1699pt) and (11725.67pt,2506.4099pt) .. (11741.41pt,2519.3299pt) ..controls (11882.37pt,2634.9199pt) and (11855.45pt,2894.1199pt) .. (11843.41pt,2973.2399pt); - \draw[pstyle12] (10172.4pt,2087.1599pt) -- (10167.2862pt,2095.5771pt) -- (10171.7631pt,2092.1192pt) -- (10175.2211pt,2096.5961pt) -- (10172.4pt,2087.1599pt) -- cycle; - \node at (10162.7731pt,2095.0233pt)[below right,color=black]{1}; - \node at (11835.4574pt,2947.9049pt)[below right,color=black]{1}; - \draw[pstyle11] (11402.0338pt,2083.6468pt) ..controls (11391.7738pt,2160.2768pt) and (11371.75pt,2399.7299pt) .. (11505.41pt,2511.3299pt) ..controls (11525.55pt,2528.1399pt) and (11721.36pt,2502.3999pt) .. (11741.41pt,2519.3299pt) ..controls (11880.71pt,2636.9099pt) and (11854.93pt,2894.7499pt) .. (11843.29pt,2973.3899pt); - \draw[pstyle12] (11402.83pt,2077.6999pt) -- (11397.671pt,2086.0895pt) -- (11402.1665pt,2082.6557pt) -- (11405.6003pt,2087.1511pt) -- (11402.83pt,2077.6999pt) -- cycle; - \node at (11393.1199pt,2085.3735pt)[below right,color=black]{1}; - \node at (11856.5971pt,2948.0179pt)[below right,color=black]{1}; - \draw[pstyle11] (10571.2715pt,2083.681pt) ..controls (10553.9015pt,2160.181pt) and (10512.48pt,2398.1199pt) .. (10641.41pt,2511.3299pt) ..controls (10664.37pt,2531.4899pt) and (11717.8pt,2499.9299pt) .. (11741.41pt,2519.3299pt) ..controls (11882.26pt,2635.0499pt) and (11855.42pt,2894.1599pt) .. (11843.4pt,2973.2499pt); - \draw[pstyle12] (10572.6pt,2077.8299pt) -- (10566.7065pt,2085.7208pt) -- (10571.4929pt,2082.7058pt) -- (10574.5079pt,2087.4922pt) -- (10572.6pt,2077.8299pt) -- cycle; - \node at (10562.3753pt,2085.5335pt)[below right,color=black]{1}; - \node at (11835.4448pt,2947.9174pt)[below right,color=black]{1}; - \draw[pstyle11] (10841.5388pt,2102.7572pt) ..controls (10827.0488pt,2194.9872pt) and (10809.05pt,2407.7099pt) .. (10931.41pt,2511.3299pt) ..controls (10948.58pt,2525.8699pt) and (11724.04pt,2505.0199pt) .. (11741.41pt,2519.3299pt) ..controls (11882.11pt,2635.2299pt) and (11855.37pt,2894.2199pt) .. (11843.39pt,2973.2599pt); - \draw[pstyle12] (10842.47pt,2096.8299pt) -- (10837.1216pt,2105.1pt) -- (10841.694pt,2101.7693pt) -- (10845.0247pt,2106.3417pt) -- (10842.47pt,2096.8299pt) -- cycle; - \node at (10832.7436pt,2104.5137pt)[below right,color=black]{1}; - \node at (11845.4823pt,2947.93pt)[below right,color=black]{1}; - \draw[pstyle11] (5616.7529pt,799.1832pt) ..controls (5593.6029pt,858.0132pt) and (5560.37pt,911.1699pt) .. (5506.41pt,945.9099pt) ..controls (5481.16pt,962.1699pt) and (3369.22pt,936.9899pt) .. (3344.41pt,953.9099pt) ..controls (3245.73pt,1021.1999pt) and (3213.29pt,1166.1499pt) .. (3202.63pt,1253.5399pt); - \draw[pstyle12] (5618.95pt,793.5999pt) -- (5611.9322pt,800.5101pt) -- (5617.1191pt,798.2526pt) -- (5619.3766pt,803.4395pt) -- (5618.95pt,793.5999pt) -- cycle; - \node at (5617.455pt,801.2236pt)[below right,color=black]{1}; - \node at (3194.7747pt,1228.2624pt)[below right,color=black]{1}; - \draw[pstyle11] (5615.4084pt,799.2935pt) ..controls (5592.1784pt,857.5735pt) and (5559.26pt,910.3599pt) .. (5506.41pt,945.9099pt) ..controls (5489.61pt,957.2099pt) and (5338.76pt,939.6399pt) .. (5324.41pt,953.9099pt) ..controls (5201.56pt,1076.0899pt) and (5372.71pt,2391.6699pt) .. (5247.41pt,2511.3299pt) ..controls (5235.09pt,2523.0799pt) and (2808.47pt,2508.3999pt) .. (2795.41pt,2519.3299pt) ..controls (2707.16pt,2593.1799pt) and (2688.33pt,2724.1499pt) .. (2689.95pt,2830.2399pt); - \draw[pstyle12] (5617.63pt,793.7199pt) -- (5610.5819pt,800.5992pt) -- (5615.7787pt,798.3645pt) -- (5618.0133pt,803.5613pt) -- (5617.63pt,793.7199pt) -- cycle; - \node at (5602.9375pt,801.7913pt)[below right,color=black]{1}; - \node at (2687.6757pt,2804.9748pt)[below right,color=black]{1}; - \draw[pstyle11] (5615.796pt,799.1565pt) ..controls (5592.586pt,857.6165pt) and (5559.57pt,910.5399pt) .. (5506.41pt,945.9099pt) ..controls (5484.47pt,960.5099pt) and (5288.51pt,935.7699pt) .. (5269.41pt,953.9099pt) ..controls (5017.56pt,1193.1299pt) and (5391.89pt,2275.9899pt) .. (5136.41pt,2511.3299pt) ..controls (5123.56pt,2523.1599pt) and (2634.65pt,2507.9399pt) .. (2621.41pt,2519.3299pt) ..controls (2521.02pt,2605.6299pt) and (2516.31pt,2766.9999pt) .. (2527.45pt,2878.0399pt); - \draw[pstyle12] (5618.01pt,793.5799pt) -- (5610.9712pt,800.4687pt) -- (5616.165pt,798.227pt) -- (5618.4067pt,803.4208pt) -- (5618.01pt,793.5799pt) -- cycle; - \node at (5612.3221pt,801.2028pt)[below right,color=black]{1}; - \node at (2513.9538pt,2852.4344pt)[below right,color=black]{1}; - \draw[pstyle11] (5614.93pt,799.3001pt) ..controls (5591.67pt,857.4001pt) and (5558.87pt,910.0699pt) .. (5506.41pt,945.9099pt) ..controls (5493.82pt,954.5099pt) and (5379.87pt,942.8199pt) .. (5369.41pt,953.9099pt) ..controls (5233.37pt,1098.1299pt) and (5508.24pt,2530.7499pt) .. (5583.22pt,2906.6699pt); - \draw[pstyle12] (5617.16pt,793.7299pt) -- (5610.1015pt,800.5985pt) -- (5615.3017pt,798.3717pt) -- (5617.5285pt,803.5719pt) -- (5617.16pt,793.7299pt) -- cycle; - \node at (5607.2826pt,801.3586pt)[below right,color=black]{1}; - \node at (5573.3296pt,2881.1539pt)[below right,color=black]{1}; - \draw[pstyle11] (5698.2678pt,799.3375pt) ..controls (5718.9778pt,857.9875pt) and (5749.96pt,910.9299pt) .. (5802.41pt,945.9099pt) ..controls (5823pt,959.6399pt) and (12912.92pt,936.3999pt) .. (12930.41pt,953.9099pt) ..controls (13029.27pt,1052.8799pt) and (13028.43pt,1483.5999pt) .. (12930.41pt,1583.3999pt) ..controls (12852.58pt,1662.6499pt) and (11016.23pt,1547.6899pt) .. (10931.41pt,1619.3999pt) ..controls (10816.23pt,1716.7999pt) and (10830.46pt,1921.1499pt) .. (10843.05pt,2009.8099pt); - \draw[pstyle12] (5696.27pt,793.6799pt) -- (5695.4949pt,803.4982pt) -- (5697.9348pt,798.3946pt) -- (5703.0384pt,800.8345pt) -- (5696.27pt,793.6799pt) -- cycle; - \node at (5697.7953pt,801.3067pt)[below right,color=black]{1}; - \node at (10833.2691pt,1984.5694pt)[below right,color=black]{1}; - \draw[pstyle11] (5698.2678pt,799.3375pt) ..controls (5718.9778pt,857.9875pt) and (5749.96pt,910.9299pt) .. (5802.41pt,945.9099pt) ..controls (5825.13pt,961.0599pt) and (13644.69pt,938.7599pt) .. (13667.41pt,953.9099pt) ..controls (14124.32pt,1258.5499pt) and (13995.79pt,2860.0299pt) .. (13958.41pt,3407.9099pt) ..controls (13948.55pt,3552.3799pt) and (13918.95pt,3724.0999pt) .. (13907.76pt,3785.6599pt); - \draw[pstyle12] (5696.27pt,793.6799pt) -- (5695.4949pt,803.4982pt) -- (5697.9348pt,798.3946pt) -- (5703.0384pt,800.8345pt) -- (5696.27pt,793.6799pt) -- cycle; - \node at (5689.4828pt,801.3067pt)[below right,color=black]{1}; - \node at (13909.9482pt,3760.3197pt)[below right,color=black]{1}; - \draw[pstyle11] (5276.3696pt,732.4546pt) ..controls (5243.5896pt,809.8346pt) and (5191.03pt,899.3099pt) .. (5107.41pt,945.9099pt) ..controls (5086.02pt,957.8299pt) and (3364.63pt,940.1099pt) .. (3344.41pt,953.9099pt) ..controls (3245.76pt,1021.2499pt) and (3213.31pt,1166.1699pt) .. (3202.64pt,1253.5499pt); - \draw[pstyle12] (5278.71pt,726.9299pt) -- (5271.5163pt,733.6567pt) -- (5276.7597pt,731.5338pt) -- (5278.8825pt,736.7772pt) -- (5278.71pt,726.9299pt) -- cycle; - \node at (5268.0586pt,734.76pt)[below right,color=black]{1}; - \node at (3203.6107pt,1228.2734pt)[below right,color=black]{1}; - \draw[pstyle11] (5251.7176pt,732.3616pt) ..controls (5219.9576pt,797.4116pt) and (5187.29pt,875.2199pt) .. (5169.41pt,953.9099pt) ..controls (5150.23pt,1038.3499pt) and (5169.79pt,2451.2699pt) .. (5107.41pt,2511.3299pt) ..controls (5086.01pt,2531.9299pt) and (853.6pt,2500.7599pt) .. (830.41pt,2519.3299pt) ..controls (757.87pt,2577.3999pt) and (727.6pt,2672.9699pt) .. (716.72pt,2763.3999pt); - \draw[pstyle12] (5254.35pt,726.9699pt) -- (5246.8069pt,733.3025pt) -- (5252.1563pt,731.463pt) -- (5253.9958pt,736.8124pt) -- (5254.35pt,726.9699pt) -- cycle; - \node at (5242.2142pt,734.8024pt)[below right,color=black]{1}; - \node at (716.6707pt,2738.4473pt)[below right,color=black]{1}; - \draw[pstyle11] (5352.7874pt,732.6734pt) ..controls (5380.6474pt,809.8434pt) and (5427.32pt,898.8999pt) .. (5507.41pt,945.9099pt) ..controls (5529.55pt,958.9099pt) and (12883.27pt,935.7499pt) .. (12901.41pt,953.9099pt) ..controls (12926.13pt,978.6499pt) and (12925.91pt,1558.4499pt) .. (12901.41pt,1583.3999pt) ..controls (12824.72pt,1661.5099pt) and (11014.99pt,1548.7099pt) .. (10931.41pt,1619.3999pt) ..controls (10816.24pt,1716.8199pt) and (10830.46pt,1921.1599pt) .. (10843.05pt,2009.8099pt); - \draw[pstyle12] (5350.75pt,727.0299pt) -- (5350.0438pt,736.8534pt) -- (5352.4478pt,731.7328pt) -- (5357.5685pt,734.1368pt) -- (5350.75pt,727.0299pt) -- cycle; - \node at (5344.3994pt,734.4642pt)[below right,color=black]{1}; - \node at (10826.8088pt,1984.215pt)[below right,color=black]{1}; - \end{tikzpicture} -\end{document} diff --git a/doc/usecasediagram.png b/doc/usecasediagram.png deleted file mode 100644 index 42d1cc6..0000000 Binary files a/doc/usecasediagram.png and /dev/null differ diff --git a/generated_class_diagram.puml b/generated_class_diagram.puml index e7bcb28..883dcab 100644 --- a/generated_class_diagram.puml +++ b/generated_class_diagram.puml @@ -5,18 +5,8 @@ package org.texttechnologylab.project.gruppe_05_1 { + UPLOAD_MEMBER_PHOTOS + FORCE_UPLOAD_MEMBERS + FORCE_UPLOAD_SPEECHES - + ONLY_RUN_WEB - + REBUILD_METADATA - + DEBUG_LOGGING - xmlFactory - mongoFactory - + RESOURCES_DIR - + CONFIG_DIR - + JAVALIN_TEMPLATE_DIR - + JAVALIN_STATIC_FILES_DIR - + JCAS_SPEECHES_TYPESYSTEM_DIR - + MEMBER_IMAGES_DIR - + TEMP_EXPORT_DIR + main() } } @@ -25,26 +15,7 @@ org.texttechnologylab.project.gruppe_05_1.Main "1" <-- "1" org.texttechnologylab org.texttechnologylab.project.gruppe_05_1.Main "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.rest.RESTHandler org.texttechnologylab.project.gruppe_05_1.Main "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger org.texttechnologylab.project.gruppe_05_1.Main "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PPRUtils -org.texttechnologylab.project.gruppe_05_1.Main "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.SpeechVideoUpdater org.texttechnologylab.project.gruppe_05_1.Main "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.FileObjectFactory -org.texttechnologylab.project.gruppe_05_1.Main "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Session -org.texttechnologylab.project.gruppe_05_1.Main "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser -org.texttechnologylab.project.gruppe_05_1.Main "1" <-- "1" static - -package org.texttechnologylab.project.gruppe_05_1.database { - interface "SpeechIndexFactory" as org.texttechnologylab.project.gruppe_05_1.database.SpeechIndexFactory { - - parseLegislativePeriods() - - filterForCurrentMembers() - } -} - -package org.texttechnologylab.project.gruppe_05_1.database { - class "SpeechIndex" as org.texttechnologylab.project.gruppe_05_1.database.SpeechIndex { - - sessions - - speeches - - agendaItems - } -} package org.texttechnologylab.project.gruppe_05_1.database { class "SpeechIndexFactoryImpl" as org.texttechnologylab.project.gruppe_05_1.database.SpeechIndexFactoryImpl { @@ -62,6 +33,111 @@ package org.texttechnologylab.project.gruppe_05_1.database { } org.texttechnologylab.project.gruppe_05_1.database.SpeechIndexFactoryImpl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser +package org.texttechnologylab.project.gruppe_05_1.database { + interface "SpeechIndexFactory" as org.texttechnologylab.project.gruppe_05_1.database.SpeechIndexFactory { + - parseLegislativePeriods() + - filterForCurrentMembers() + } +} + +package org.texttechnologylab.project.gruppe_05_1.database { + class "MongoDBHandler" as org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler { + + propertiesFileName + + DEFAULT_ID_FIELD_NAME + + MEMBER_IMAGES_DIR + - mongoClient + - database + - mongoDatabase + - mongodb://localhost:27017 + - remoteServer + - user + - password + - port + - collection + - databaseName + - speakerCollection + - speechesCollection + - sessionsCollection + - agendaItemsCollection + - memberPhotoCollection + - historyCollection + + getDatabase() + + collectionExists() + + createCollectionIfNotExist() + + createCollection() + + createIndicesForSpeakerCollection() + + createIndicesForSpeechCollection() + + createOrTrancateCollection() + + insertSession() + + insertSessions() + + insertAgendaItems() + + insertSpeeches() + + updateXmiData() + + deleteSpeechRelatedDocuments() + + bulkWriteNlpData() + + checkAnalysisResultsField() + + loadMemberImageFromFileById() + + loadMemberImageFromFileByName() + + uploadMemberPhoto() + + uploadMemberPhotos() + + close() + } +} +org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.exceptions.ServerErrorException +org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.exceptions.SessionNotFoundException +org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.AgendaItem_MongoDB_Impl +org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Session_MongoDB_Impl +org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Speech_MongoDB_Impl +org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger +org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PPRUtils +org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PropertiesUtils + +package org.texttechnologylab.project.gruppe_05_1.database { + class "MongoPprUtils" as org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils { + + SPEAKER_COLLECTION_NAME + + SPEECH_COLLECTION_NAME + + SESSION_COLLECTION_NAME + + AGENDA_ITEMS_COLLECTION_NAME + + HISTORY_COLLECTION_NAME + + PICTURES_COLLECTION_NAME + + COMMENT_COLLECTION_NAME + - speakerCollection + - speechCollection + - sessionCollection + - agendaItemsCollection + - picturesCollection + - commentCollection + + createIndexForSpeakerCollection() + + createIndexForSpeechCollection() + + truncateSpeakerCollection() + - readParlamentarierFromSpeaker() + + getParlamentarierDetailsByID() + - readParlamentarierDetailsFromSpeaker() + - getMembership() + + countSpeechesOfSpeaker() + + getSessionDateTime() + + getAgendaTitle() + + getSpeechByKey() + } +} +org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Speech_MongoDB_Impl +org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.HtmlSpeech +org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.Parlamentarier +org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails +org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership +org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speech.SpeechMetaData +org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils +org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger +org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech + +package org.texttechnologylab.project.gruppe_05_1.database { + class "SpeechIndex" as org.texttechnologylab.project.gruppe_05_1.database.SpeechIndex { + - sessions + - speeches + - agendaItems + } +} + package org.texttechnologylab.project.gruppe_05_1.database { class "MongoObjectFactory" as org.texttechnologylab.project.gruppe_05_1.database.MongoObjectFactory { - factory @@ -85,247 +161,748 @@ package org.texttechnologylab.project.gruppe_05_1.database { } } -package org.texttechnologylab.project.gruppe_05_1.database { - class "MongoDBHandler" as org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler { - + propertiesFileName - + DEFAULT_ID_FIELD_NAME - - mongoClient - - database - - mongoDatabase - - mongodb://localhost:27017 - - remoteServer - - user - - password - - port - - collection - - databaseName - - speakerCollection - - speechesCollection - - sessionsCollection - - agendaItemsCollection - - memberPhotoCollection - - historyCollection - + getDatabase() - + collectionExists() - + createCollectionIfNotExist() - + createCollection() - + createIndicesForSpeakerCollection() - + createIndicesForSpeechCollection() - + createOrTrancateCollection() - + getFieldAsDouble() - + insertSession() - + insertSessions() - + insertAgendaItems() - + insertSpeeches() - + updateXmiData() - + deleteSpeechRelatedDocuments() - + bulkWriteNlpData() - + checkAnalysisResultsField() - + loadMemberImageFromFileById() - + loadMemberImageFromFileByName() - + uploadMemberPhoto() - + uploadMemberPhotos() - + uploadMemberPhotosFromResourceFolder() - + sessionExists() - + getMemberPhoto() - + close() - + getSpeech() - } -} -org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.HtmlSpeech -org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.nlp.Topic -org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.exceptions.ServerErrorException -org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.exceptions.SessionNotFoundException -org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.AgendaItem_MongoDB_Impl -org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Session_MongoDB_Impl -org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speech_MongoDB_Impl -org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger -org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PPRUtils -org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PropertiesUtils -org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" static - -package org.texttechnologylab.project.gruppe_05_1.database { - class "MongoPprUtils" as org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils { - + SPEAKER_COLLECTION_NAME - + SPEECH_COLLECTION_NAME - + SESSION_COLLECTION_NAME - + AGENDA_ITEMS_COLLECTION_NAME - + HISTORY_COLLECTION_NAME - + PICTURES_COLLECTION_NAME - + COMMENT_COLLECTION_NAME - + METADATA_COLLECTION_NAME - - speakerCollection - - speechCollection - - sessionCollection - - agendaItemsCollection - - picturesCollection - - commentCollection - - metadataCollection - + createIndexForSpeakerCollection() - + createIndexForSpeechCollection() - + truncateSpeakerCollection() - - readParlamentarierFromSpeaker() - + getParlamentarierPictureByID() - + getParlamentarierDetailsByID() - + getSpeakerById() - - readParlamentarierDetailsFromSpeaker() - - getMembership() - + countSpeechesOfSpeaker() - + augmentSpeechMetaDataFromSession() - + getSessionDateTime() - + getAgendaTitle() - + getHtmlSpeechByKey() - + getSpeechByKey() - + getMemberPhoto() - + rebuildMetadata() - + enrichSpeechDocuments() - } -} -org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_MongoDB_Impl -org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speech_MongoDB_Impl -org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.HtmlSpeech -org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.Parlamentarier -org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails -org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.nlp.NamedEntity -org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.nlp.Token -org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.SpeechOverview -org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership -org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speech.SpeechMetaData -org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils -org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger -org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PPRUtils -org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech - package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb { - class "AgendaItem_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.AgendaItem_MongoDB_Impl { - } -} -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.AgendaItem_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.AgendaItem_File_Impl -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.AgendaItem_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.AgendaItem - -package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb { - class "Session_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Session_MongoDB_Impl { - } -} -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Session_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Session_File_Impl -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Session_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Session - -package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb { - class "BiographicalInformation_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.BiographicalInformation_MongoDB_Impl { + class "BiografischeAngaben_Mongo_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.BiografischeAngaben_Mongo_Impl { + createEntity() } } -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.BiographicalInformation_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.BiographicalInformation_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoOperations -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.BiographicalInformation_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.BiografischeAngaben -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.BiographicalInformation_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.BiografischeAngaben_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.BiografischeAngaben_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoOperations +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.BiografischeAngaben_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.BiografischeAngaben +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.BiografischeAngaben_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb { - class "Institution_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Institution_MongoDB_Impl { + class "Wahlperiode_Mongo_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Wahlperiode_Mongo_Impl { + createEntity() } } -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Institution_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Institution_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoOperations -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Institution_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Institution +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Wahlperiode_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Wahlperiode_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoOperations +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Wahlperiode_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Institution +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Wahlperiode_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Wahlperiode package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb { - class "LegislativePeriod_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.LegislativePeriod_MongoDB_Impl { + class "Speaker_Mongo_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_Mongo_Impl { + createEntity() } } -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.LegislativePeriod_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.LegislativePeriod_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoOperations -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.LegislativePeriod_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Institution -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.LegislativePeriod_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Wahlperiode +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoOperations +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb { - class "MdbName_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.MdbName_MongoDB_Impl { + class "MdbName_Mongo_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.MdbName_Mongo_Impl { + createEntity() } } -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.MdbName_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.MdbName_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoOperations -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.MdbName_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbName +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.MdbName_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.MdbName_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoOperations +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.MdbName_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbName package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb { - class "Mdb_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Mdb_MongoDB_Impl { + class "Mdb_Mongo_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Mdb_Mongo_Impl { + createEntity() } } -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Mdb_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Mdb_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoOperations -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Mdb_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Mdb -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Mdb_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbName -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Mdb_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Wahlperiode +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Mdb_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Mdb_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoOperations +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Mdb_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Mdb +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Mdb_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbName +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Mdb_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Wahlperiode package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb { - class "Membership_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Membership_MongoDB_Impl { + class "Membership_Mongo_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Membership_Mongo_Impl { + createEntity() } } -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Membership_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Membership_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoOperations -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Membership_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Membership_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Membership_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoOperations +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Membership_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbName +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Membership_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Wahlperiode +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Membership_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Membership_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb { - class "Speaker_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_MongoDB_Impl { - + createSpeakerMongoDBImpl() - + parseTimestampSafely() + class "Institution_Mongo_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Institution_Mongo_Impl { + createEntity() - + toTeX() - + toXML() } } -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoOperations -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_MongoDB_Impl "1" <-- "1" static +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Institution_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Institution_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoOperations +org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Institution_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Institution -package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb { - class "Speech_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speech_MongoDB_Impl { +package org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches { + class "Line_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Line_MongoDB_Impl { + } +} +org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Line_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Line_File_Impl +org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Line_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Line + +package org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches { + class "Speaker_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Speaker_MongoDB_Impl { + } +} +org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Speaker_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speaker_File_Impl +org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Speaker_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speaker + +package org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches { + class "AgendaItem_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.AgendaItem_MongoDB_Impl { + } +} +org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.AgendaItem_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.AgendaItem_File_Impl +org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.AgendaItem_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.AgendaItem + +package org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches { + class "Comment_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Comment_MongoDB_Impl { + } +} +org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Comment_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Comment_File_Impl +org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Comment_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Comment + +package org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches { + class "MemberOfParliament_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.MemberOfParliament_MongoDB_Impl { + } +} +org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.MemberOfParliament_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.MemberOfParliament_File_Impl +org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.MemberOfParliament_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.MemberOfParliament + +package org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches { + class "Session_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Session_MongoDB_Impl { + } +} +org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Session_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Session_File_Impl +org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Session_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Session + +package org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches { + class "Speech_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Speech_MongoDB_Impl { + getFullText() + toCas() - + toTeX() - + toXML() } } -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speech_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.speechline.Comment_MongoDB_Impl -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speech_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.speechline.Line_MongoDB_Impl -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speech_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.speechline.Speaker_MongoDB_Impl -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speech_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speech_File_Impl -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speech_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speech_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speech_MongoDB_Impl "1" <-- "1" static +org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Speech_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speech_File_Impl +org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Speech_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content +org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Speech_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech -package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.speechline { - class "Comment_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.speechline.Comment_MongoDB_Impl { - + toTeX() - + toXML() +package org.texttechnologylab.project.gruppe_05_1.rest { + class "JavalinConfig" as org.texttechnologylab.project.gruppe_05_1.rest.JavalinConfig { + - propertiesFileName + + getJavalinProperties() + + getPort() } } -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.speechline.Comment_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Comment_File_Impl -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.speechline.Comment_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Comment +org.texttechnologylab.project.gruppe_05_1.rest.JavalinConfig "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils +org.texttechnologylab.project.gruppe_05_1.rest.JavalinConfig "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger +org.texttechnologylab.project.gruppe_05_1.rest.JavalinConfig "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PropertiesUtils -package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.speechline { - class "Line_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.speechline.Line_MongoDB_Impl { - + toTeX() - + toXML() +package org.texttechnologylab.project.gruppe_05_1.rest { + class "RESTHandler" as org.texttechnologylab.project.gruppe_05_1.rest.RESTHandler { + + TEMPLATE_DIR + + startJavalin() } } -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.speechline.Line_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Line_File_Impl -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.speechline.Line_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Line +org.texttechnologylab.project.gruppe_05_1.rest.RESTHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger -package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.speechline { - class "Speaker_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.speechline.Speaker_MongoDB_Impl { - + toTeX() - + toXML() +package org.texttechnologylab.project.gruppe_05_1.rest { + class "ParlamentarierController" as org.texttechnologylab.project.gruppe_05_1.rest.ParlamentarierController { + - emptyList + + getAllParlamentarier() + + getParlamentarierDetails() + + deleteAllParlamentarier() } } -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.speechline.Speaker_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speaker_File_Impl -org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.speechline.Speaker_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speaker +org.texttechnologylab.project.gruppe_05_1.rest.ParlamentarierController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.Parlamentarier +org.texttechnologylab.project.gruppe_05_1.rest.ParlamentarierController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails +org.texttechnologylab.project.gruppe_05_1.rest.ParlamentarierController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils +org.texttechnologylab.project.gruppe_05_1.rest.ParlamentarierController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger +org.texttechnologylab.project.gruppe_05_1.rest.ParlamentarierController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PPRUtils +org.texttechnologylab.project.gruppe_05_1.rest.ParlamentarierController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech + +package org.texttechnologylab.project.gruppe_05_1.rest { + class "SpeechController" as org.texttechnologylab.project.gruppe_05_1.rest.SpeechController { + + listSpeeches() + + showSpeech() + } +} +org.texttechnologylab.project.gruppe_05_1.rest.SpeechController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils +org.texttechnologylab.project.gruppe_05_1.rest.SpeechController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.HtmlSpeech +org.texttechnologylab.project.gruppe_05_1.rest.SpeechController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails +org.texttechnologylab.project.gruppe_05_1.rest.SpeechController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speech.SpeechMetaData +org.texttechnologylab.project.gruppe_05_1.rest.SpeechController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech + +package org.texttechnologylab.project.gruppe_05_1.nlp { + class "XmiExtractor" as org.texttechnologylab.project.gruppe_05_1.nlp.XmiExtractor { + - bulkOperations + - mongoDBHandler + - BATCH_SIZE + - processedCount + + extractAndUploadXmiData() + - processXmiGzStream() + - extractSpeechKeyFromFilename() + - flushBatch() + + main() + } +} +org.texttechnologylab.project.gruppe_05_1.nlp.XmiExtractor "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler +org.texttechnologylab.project.gruppe_05_1.nlp.XmiExtractor "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger + +package org.texttechnologylab.project.gruppe_05_1.nlp { + class "NlpUtils" as org.texttechnologylab.project.gruppe_05_1.nlp.NlpUtils { + - pComposer + - iWorkers + - TYPE_SYSTEM_DESCRIPTOR_PATH + - MAX_FEATURE_LENGTH + + createNlpData() + - duuiInit() + + getCas() + + runDockerDriver() + - casInit() + + runVideos() + - createSentenceInfo() + - createNAmedEntities() + - createSentimentInfo() + + runRemoteDriver() + + extractAnnotations() + } +} +org.texttechnologylab.project.gruppe_05_1.nlp.NlpUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler +org.texttechnologylab.project.gruppe_05_1.nlp.NlpUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Speech_MongoDB_Impl +org.texttechnologylab.project.gruppe_05_1.nlp.NlpUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger +org.texttechnologylab.project.gruppe_05_1.nlp.NlpUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content +org.texttechnologylab.project.gruppe_05_1.nlp.NlpUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech + +package org.texttechnologylab.project.gruppe_05_1.exceptions { + class "SessionNotFoundException" as org.texttechnologylab.project.gruppe_05_1.exceptions.SessionNotFoundException { + } +} + +package org.texttechnologylab.project.gruppe_05_1.exceptions { + class "MemberNotFoundException" as org.texttechnologylab.project.gruppe_05_1.exceptions.MemberNotFoundException { + } +} + +package org.texttechnologylab.project.gruppe_05_1.exceptions { + class "AgendaItemNotFoundException" as org.texttechnologylab.project.gruppe_05_1.exceptions.AgendaItemNotFoundException { + } +} + +package org.texttechnologylab.project.gruppe_05_1.exceptions { + class "FractionAlreadyExistsException" as org.texttechnologylab.project.gruppe_05_1.exceptions.FractionAlreadyExistsException { + } +} + +package org.texttechnologylab.project.gruppe_05_1.exceptions { + class "ServerErrorException" as org.texttechnologylab.project.gruppe_05_1.exceptions.ServerErrorException { + } +} + +package org.texttechnologylab.project.gruppe_05_1.exceptions { + class "SpeechNotFoundException" as org.texttechnologylab.project.gruppe_05_1.exceptions.SpeechNotFoundException { + } +} + +package org.texttechnologylab.project.gruppe_05_1.exceptions { + class "FractionNotFoundException" as org.texttechnologylab.project.gruppe_05_1.exceptions.FractionNotFoundException { + } +} + +package org.texttechnologylab.project.gruppe_05_1.xml { + interface "XmlOperations" as org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations { + - fromXmlNode() + } +} + +package org.texttechnologylab.project.gruppe_05_1.xml { + class "FileObjectFactory" as org.texttechnologylab.project.gruppe_05_1.xml.FileObjectFactory { + - oFactory + + getFactory() + + createBiografischeAngaben() + + createInstitution() + + createMdb() + + createMdbDocument() + + createMdbName() + + createWahlperiode() + + createSpeaker() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.FileObjectFactory "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker +org.texttechnologylab.project.gruppe_05_1.xml.FileObjectFactory "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl + +package org.texttechnologylab.project.gruppe_05_1.xml.mdb { + class "Institution_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.mdb.Institution_File_Impl { + + fromXmlNode() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.mdb.Institution_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Institution +org.texttechnologylab.project.gruppe_05_1.xml.mdb.Institution_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils +org.texttechnologylab.project.gruppe_05_1.xml.mdb.Institution_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger +org.texttechnologylab.project.gruppe_05_1.xml.mdb.Institution_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations + +package org.texttechnologylab.project.gruppe_05_1.xml.mdb { + class "MdbDocument_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbDocument_File_Impl { + + fromXmlNode() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbDocument_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Mdb +org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbDocument_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbDocument +org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbDocument_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.XmlUtils +org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbDocument_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations + +package org.texttechnologylab.project.gruppe_05_1.xml.mdb { + class "MdbName_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbName_File_Impl { + + fromXmlNode() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbName_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbName +org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbName_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils +org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbName_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger +org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbName_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations + +package org.texttechnologylab.project.gruppe_05_1.xml.mdb { + class "BiografischeAngaben_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.mdb.BiografischeAngaben_File_Impl { + + fromXmlNode() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.mdb.BiografischeAngaben_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.BiografischeAngaben +org.texttechnologylab.project.gruppe_05_1.xml.mdb.BiografischeAngaben_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils +org.texttechnologylab.project.gruppe_05_1.xml.mdb.BiografischeAngaben_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger +org.texttechnologylab.project.gruppe_05_1.xml.mdb.BiografischeAngaben_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations + +package org.texttechnologylab.project.gruppe_05_1.xml.mdb { + class "Mdb_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.mdb.Mdb_File_Impl { + + fromXmlNode() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.mdb.Mdb_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Mdb +org.texttechnologylab.project.gruppe_05_1.xml.mdb.Mdb_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbName +org.texttechnologylab.project.gruppe_05_1.xml.mdb.Mdb_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Wahlperiode +org.texttechnologylab.project.gruppe_05_1.xml.mdb.Mdb_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.XmlUtils +org.texttechnologylab.project.gruppe_05_1.xml.mdb.Mdb_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations + +package org.texttechnologylab.project.gruppe_05_1.xml.mdb { + class "Wahlperiode_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.mdb.Wahlperiode_File_Impl { + + fromXmlNode() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.mdb.Wahlperiode_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils +org.texttechnologylab.project.gruppe_05_1.xml.mdb.Wahlperiode_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger +org.texttechnologylab.project.gruppe_05_1.xml.mdb.Wahlperiode_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.XmlUtils +org.texttechnologylab.project.gruppe_05_1.xml.mdb.Wahlperiode_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches { + class "SpeechParser" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser { + - speeches + - agendaItems + + setParseLegislativePeriods() + - parseSessionFile() + - getOptionalTextContent() + - convertDocumentToFile() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger +org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PPRUtils +org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.AgendaItem +org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Session +org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums { + enum "MongoDBEntryType" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType { + } +} + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { + interface "LegislativePeriod" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.LegislativePeriod { + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.LegislativePeriod "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { + interface "Fraction" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Fraction { + - addMember() + - updateName() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Fraction "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { + interface "Speech" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech { + - addContent() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { + interface "Session" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Session { + - addAgendaItem() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Session "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { + interface "Content" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content { + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { + interface "HistoryEntry" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.HistoryEntry { + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.HistoryEntry "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { + interface "Comment" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Comment { + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Comment "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { + interface "Constituency" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Constituency { + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Constituency "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { + interface "AgendaItem" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.AgendaItem { + - addSpeech() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.AgendaItem "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { + interface "Speaker" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speaker { + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speaker "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { + interface "Individual" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Individual { + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Individual "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { + interface "Line" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Line { + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Line "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { + interface "MemberOfParliament" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.MemberOfParliament { + - updateParty() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.MemberOfParliament "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { + class "LegislativePeriod_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.LegislativePeriod_File_Impl { + - id + - startDate + - endDate + - constituency + + getId() + + getStartDate() + + getEndDate() + + getConstituency() + + getType() + + toHTML() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.LegislativePeriod_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.LegislativePeriod +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.LegislativePeriod_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { + class "Session_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Session_File_Impl { + - id + - legislativePeriod + - dateTime + - endTime + - agendaItems + + getId() + + getLegislativePeriod() + + getDateTime() + + getEndTime() + + getType() + + addAgendaItem() + + toHTML() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Session_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.AgendaItem +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Session_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Session +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Session_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { + class "Comment_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Comment_File_Impl { + - contentId + - speechId + - comment + - commentatorName + + getContentId() + + getSpeechId() + + getComment() + + getCommentatorName() + + getType() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Comment_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Comment +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Comment_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Comment_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { + class "Individual_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Individual_File_Impl { + - name + - firstName + - title + - dateOfBirth + - dateOfDeath + - placeOfBirth + - gender + - religion + + getName() + + getFirstName() + + getTitle() + + getDateOfBirth() + + getDateOfDeath() + + getPlaceOfBirth() + + getGender() + + getReligion() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Individual_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Individual + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { + class "Line_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Line_File_Impl { + - contentId + # speechId + - content + + getContentId() + + getSpeechId() + + getContent() + + getType() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Line_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Line_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Line +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Line_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { + class "Speech_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speech_File_Impl { + - sessionId + - agendaItemId + - speakerId + - speechId + - speakerName + - fraction + - speechContents + - speechKey + + getSessionId() + + getAgendaItemId() + + getSpeakerId() + + getSpeechId() + + getSpeakerName() + + getFraction() + + getSpeechKey() + + getType() + + addContent() + + toHTML() + + getFullText() + + toCas() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speech_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speech_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speech_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { + class "Constituency_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Constituency_File_Impl { + - id + - name + - federalState + + getId() + + getName() + + getFederalState() + + getType() + + toHTML() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Constituency_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Constituency +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Constituency_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { + class "Speaker_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speaker_File_Impl { + - contentId + - speechId + - speakerId + - speakerName + - fraction + + getContentId() + + getSpeechId() + + getSpeakerId() + + getSpeakerName() + + getFraction() + + getType() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speaker +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { + class "HistoryEntry_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.HistoryEntry_File_Impl { + - action + - content + - contentType + - date + + getContent() + + getContentType() + + getDate() + + getAction() + + getType() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.HistoryEntry_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.HistoryEntry +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.HistoryEntry_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { + class "MemberOfParliament_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.MemberOfParliament_File_Impl { + - id + - party + - legislativePeriods + - firstLegislativePeriodId + - lastLegislativePeriodId + - photo + + getId() + + getParty() + + getFirstLegislativePeriodId() + + getLastLegislativePeriodId() + + getPhoto() + + isCurrentMember() + + updateParty() + + getType() + + toHTML() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.MemberOfParliament_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.LegislativePeriod +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.MemberOfParliament_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.MemberOfParliament +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.MemberOfParliament_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { + class "AgendaItem_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.AgendaItem_File_Impl { + - id + - sessionId + - title + - speeches + + getId() + + getSessionId() + + getTitle() + + getType() + + addSpeech() + + toHTML() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.AgendaItem_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.AgendaItem +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.AgendaItem_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.AgendaItem_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { + class "Fraction_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Fraction_File_Impl { + - name + - longName + - members + + getName() + + getLongName() + + getType() + + addMember() + + updateName() + + toHTML() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Fraction_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Fraction +org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Fraction_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType + +package org.texttechnologylab.project.gruppe_05_1.xml.speaker { + class "Speaker_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl { + + fromXmlNode() + } +} +org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership +org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker +org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PPRUtils +org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.XmlUtils +org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations + +package org.texttechnologylab.project.gruppe_05_1.util { + class "GeneralUtils" as org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils { + + parseInt() + + parseDate() + + parseTime() + + formatDate() + + formatTime() + + parseDateTime() + } +} + +package org.texttechnologylab.project.gruppe_05_1.util { + class "Logger" as org.texttechnologylab.project.gruppe_05_1.util.Logger { + - DEBUG_LOGGING + + info() + + warn() + + error() + + debug() + + pink() + } +} + +package org.texttechnologylab.project.gruppe_05_1.util { + class "XmlUtils" as org.texttechnologylab.project.gruppe_05_1.util.XmlUtils { + + loadXmlDocument() + + getRootDocument() + + getFirstChildByName() + + getNodeAttributeByName() + - getRawText() + } +} + +package org.texttechnologylab.project.gruppe_05_1.util { + class "FileUtils" as org.texttechnologylab.project.gruppe_05_1.util.FileUtils { + + createDirectoryIFNotExists() + + writeStringsToFile() + + writeStringToFile() + + createFileWriter() + } +} + +package org.texttechnologylab.project.gruppe_05_1.util { + class "PropertiesUtils" as org.texttechnologylab.project.gruppe_05_1.util.PropertiesUtils { + + readPropertiesFromResource() + } +} + +package org.texttechnologylab.project.gruppe_05_1.util { + class "PPRUtils" as org.texttechnologylab.project.gruppe_05_1.util.PPRUtils { + + PARTEILOS_KUERZEL + - processedProtocols + + legislaturPeriode + + parlamentExplorerInit() + + readPhotos() + + readSpeechesAndComments() + + readAndPersistMdbs() + - mdbActiveInWp() + - copyStream() + + sortParlamentarierByName() + + sortMdbByName() + } +} +org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler +org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoObjectFactory +org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils +org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.Parlamentarier +org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.BiografischeAngaben +org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Mdb +org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership +org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker +org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.FileObjectFactory +org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" static package org.texttechnologylab.project.gruppe_05_1.domain { enum "Gender" as org.texttechnologylab.project.gruppe_05_1.domain.Gender { @@ -335,207 +912,6 @@ package org.texttechnologylab.project.gruppe_05_1.domain { } } -package org.texttechnologylab.project.gruppe_05_1.domain.html { - enum "SpeechContent" as org.texttechnologylab.project.gruppe_05_1.domain.html.SpeechContent { - + getType() - + setType() - + getContent() - + setContent() - + equals() - + hashCode() - + toString() - } -} - -package org.texttechnologylab.project.gruppe_05_1.domain.html { - class "HtmlSpeech" as org.texttechnologylab.project.gruppe_05_1.domain.html.HtmlSpeech { - - readNlpInfo() - + getSpeechKey() - + setSpeechKey() - + getSpeakerName() - + setSpeakerName() - + getFraction() - + setFraction() - + getDateTimeString() - + setDateTimeString() - + getAgendaTitle() - + setAgendaTitle() - + setContent() - + addContent() - + getNlp() - + setNlp() - + equals() - + hashCode() - + toString() - + setVideo() - + setVideoData() - + getVideo() - + getVideoData() - } -} -org.texttechnologylab.project.gruppe_05_1.domain.html.HtmlSpeech "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler -org.texttechnologylab.project.gruppe_05_1.domain.html.HtmlSpeech "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils -org.texttechnologylab.project.gruppe_05_1.domain.html.HtmlSpeech "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speech.SpeechMetaData - -package org.texttechnologylab.project.gruppe_05_1.domain.html { - class "Parlamentarier" as org.texttechnologylab.project.gruppe_05_1.domain.html.Parlamentarier { - + getId() - + setId() - + getVorname() - + setVorname() - + getNachname() - + setNachname() - + getPartei() - + setPartei() - + equals() - + hashCode() - + toString() - } -} - -package org.texttechnologylab.project.gruppe_05_1.domain.html { - class "ParlamentarierDetails" as org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails { - + getId() - + setId() - + getVorname() - + setVorname() - + getNachname() - + setNachname() - + getPartei() - + setPartei() - + getTitle() - + setTitle() - + getGeburtsdatum() - + getGeburtsdatumPP() - + setGeburtsdatum() - + getGeburtsort() - + setGeburtsort() - + getSterbedatum() - + setSterbedatum() - + getGeschlecht() - + setGeschlecht() - + getBeruf() - + setBeruf() - + getAkademischerTitel() - + setAkademischerTitel() - + getFamilienstand() - + setFamilienstand() - + getReligion() - + setReligion() - + getVita() - + setVita() - + getParty() - + setParty() - + getPrimaryFoto() - + setPrimaryFoto() - + setMemberships() - + setReden() - + equals() - + hashCode() - + toString() - } -} -org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership -org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speech.Speech -org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils - -package org.texttechnologylab.project.gruppe_05_1.domain.html { - class "SpeechOverview" as org.texttechnologylab.project.gruppe_05_1.domain.html.SpeechOverview { - + getSpeechKey() - + setSpeechKey() - + getSpeakerId() - + setSpeakerId() - + getDateTimeString() - + setDateTimeString() - + getSpeakerName() - + setSpeakerName() - + getFraction() - + setFraction() - + getAgendaTitel() - + setAgendaTitel() - + equals() - + hashCode() - + toString() - } -} - -package org.texttechnologylab.project.gruppe_05_1.domain.mdb { - class "BiografischeAngaben" as org.texttechnologylab.project.gruppe_05_1.domain.mdb.BiografischeAngaben { - - geburtsdatum - - geburtsort - - geburtsland - - sterbedatum - - gender - - vorkommen... - - religion - - beruf - - parteiKuerzel - - vitaKurz - - veroeffentlichungspflichtiges - + getGeburtsdatum() - + setGeburtsdatum() - + getGeburtsort() - + setGeburtsort() - + getGeburtsland() - + setGeburtsland() - + getSterbedatum() - + setSterbedatum() - + getGender() - + setGender() - + getFamilienstand() - + setFamilienstand() - + getReligion() - + setReligion() - + getBeruf() - + setBeruf() - + getParteiKuerzel() - + setParteiKuerzel() - + getVitaKurz() - + setVitaKurz() - + getVeroeffentlichungspflichtiges() - + setVeroeffentlichungspflichtiges() - + equals() - + hashCode() - + toString() - } -} - -package org.texttechnologylab.project.gruppe_05_1.domain.mdb { - class "Institution" as org.texttechnologylab.project.gruppe_05_1.domain.mdb.Institution { - - insartLang - - insLang - - mdbinsVon - - mdbinsBis - - fktLang - - fktinsVon - - fktinsBis - + getInsartLang() - + setInsartLang() - + getInsLang() - + setInsLang() - + getMdbinsVon() - + setMdbinsVon() - + getMdbinsBis() - + setMdbinsBis() - + getFktLang() - + setFktLang() - + getFktinsVon() - + setFktinsVon() - + getFktinsBis() - + setFktinsBis() - + equals() - + hashCode() - + toString() - } -} - -package org.texttechnologylab.project.gruppe_05_1.domain.mdb { - enum "Mandatsart" as org.texttechnologylab.project.gruppe_05_1.domain.mdb.Mandatsart { - - text - + byText() - } -} - package org.texttechnologylab.project.gruppe_05_1.domain.mdb { class "Mdb" as org.texttechnologylab.project.gruppe_05_1.domain.mdb.Mdb { - id @@ -554,19 +930,6 @@ package org.texttechnologylab.project.gruppe_05_1.domain.mdb { } } -package org.texttechnologylab.project.gruppe_05_1.domain.mdb { - class "MdbDocument" as org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbDocument { - - version - - mdbs - + getVersion() - + setVersion() - + setMdbs() - + equals() - + hashCode() - + toString() - } -} - package org.texttechnologylab.project.gruppe_05_1.domain.mdb { class "MdbName" as org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbName { - nachname @@ -636,6 +999,187 @@ package org.texttechnologylab.project.gruppe_05_1.domain.mdb { } } +package org.texttechnologylab.project.gruppe_05_1.domain.mdb { + class "MdbDocument" as org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbDocument { + - version + - mdbs + + getVersion() + + setVersion() + + setMdbs() + + equals() + + hashCode() + + toString() + } +} + +package org.texttechnologylab.project.gruppe_05_1.domain.mdb { + class "Institution" as org.texttechnologylab.project.gruppe_05_1.domain.mdb.Institution { + - insartLang + - insLang + - mdbinsVon + - mdbinsBis + - fktLang + - fktinsVon + - fktinsBis + + getInsartLang() + + setInsartLang() + + getInsLang() + + setInsLang() + + getMdbinsVon() + + setMdbinsVon() + + getMdbinsBis() + + setMdbinsBis() + + getFktLang() + + setFktLang() + + getFktinsVon() + + setFktinsVon() + + getFktinsBis() + + setFktinsBis() + + equals() + + hashCode() + + toString() + } +} + +package org.texttechnologylab.project.gruppe_05_1.domain.mdb { + class "BiografischeAngaben" as org.texttechnologylab.project.gruppe_05_1.domain.mdb.BiografischeAngaben { + - geburtsdatum + - geburtsort + - geburtsland + - sterbedatum + - gender + - vorkommen... + - religion + - beruf + - parteiKuerzel + - vitaKurz + - veroeffentlichungspflichtiges + + getGeburtsdatum() + + setGeburtsdatum() + + getGeburtsort() + + setGeburtsort() + + getGeburtsland() + + setGeburtsland() + + getSterbedatum() + + setSterbedatum() + + getGender() + + setGender() + + getFamilienstand() + + setFamilienstand() + + getReligion() + + setReligion() + + getBeruf() + + setBeruf() + + getParteiKuerzel() + + setParteiKuerzel() + + getVitaKurz() + + setVitaKurz() + + getVeroeffentlichungspflichtiges() + + setVeroeffentlichungspflichtiges() + + equals() + + hashCode() + + toString() + } +} + +package org.texttechnologylab.project.gruppe_05_1.domain.mdb { + enum "Mandatsart" as org.texttechnologylab.project.gruppe_05_1.domain.mdb.Mandatsart { + - text + + byText() + } +} + +package org.texttechnologylab.project.gruppe_05_1.domain.html { + enum "SpeechContent" as org.texttechnologylab.project.gruppe_05_1.domain.html.SpeechContent { + + getType() + + setType() + + getContent() + + setContent() + + equals() + + hashCode() + + toString() + } +} + +package org.texttechnologylab.project.gruppe_05_1.domain.html { + class "Parlamentarier" as org.texttechnologylab.project.gruppe_05_1.domain.html.Parlamentarier { + + getId() + + setId() + + getVorname() + + setVorname() + + getNachname() + + setNachname() + + getPartei() + + setPartei() + + equals() + + hashCode() + + toString() + } +} + +package org.texttechnologylab.project.gruppe_05_1.domain.html { + class "ParlamentarierDetails" as org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails { + + getId() + + setId() + + getVorname() + + setVorname() + + getNachname() + + setNachname() + + getPartei() + + setPartei() + + getTitle() + + setTitle() + + getGeburtsdatum() + + getGeburtsdatumPP() + + setGeburtsdatum() + + getGeburtsort() + + setGeburtsort() + + getSterbedatum() + + setSterbedatum() + + getGeschlecht() + + setGeschlecht() + + getBeruf() + + setBeruf() + + getAkademischerTitel() + + setAkademischerTitel() + + getFamilienstand() + + setFamilienstand() + + getReligion() + + setReligion() + + getVita() + + setVita() + + getParty() + + setParty() + + getPrimaryFoto() + + setPrimaryFoto() + + setMemberships() + + setReden() + + equals() + + hashCode() + + toString() + } +} +org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership +org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speech.Speech +org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils + +package org.texttechnologylab.project.gruppe_05_1.domain.html { + class "HtmlSpeech" as org.texttechnologylab.project.gruppe_05_1.domain.html.HtmlSpeech { + + getSpeechKey() + + setSpeechKey() + + getSpeakerName() + + setSpeakerName() + + getFraction() + + setFraction() + + setContent() + + addContent() + + equals() + + hashCode() + + toString() + } +} +org.texttechnologylab.project.gruppe_05_1.domain.html.HtmlSpeech "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler + package org.texttechnologylab.project.gruppe_05_1.domain.speaker { class "Membership" as org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership { + getRole() @@ -696,13 +1240,21 @@ package org.texttechnologylab.project.gruppe_05_1.domain.speaker { } package org.texttechnologylab.project.gruppe_05_1.domain.speech { - class "Agenda" as org.texttechnologylab.project.gruppe_05_1.domain.speech.Agenda { - + getIndex() - + setIndex() - + getId() - + setId() - + getTitle() - + setTitle() + class "SpeechMetaData" as org.texttechnologylab.project.gruppe_05_1.domain.speech.SpeechMetaData { + + getSpeechKey() + + setSpeechKey() + + getSpeechId() + + setSpeechId() + + getSpeakerId() + + setSpeakerId() + + getSessionId() + + setSessionId() + + getDateTime() + + setDateTime() + + getDateTimeString() + + setDateTimeString() + + getAgendaTitle() + + setAgendaTitle() + equals() + hashCode() + toString() @@ -710,15 +1262,18 @@ package org.texttechnologylab.project.gruppe_05_1.domain.speech { } package org.texttechnologylab.project.gruppe_05_1.domain.speech { - class "Comment" as org.texttechnologylab.project.gruppe_05_1.domain.speech.Comment { + class "Speech" as org.texttechnologylab.project.gruppe_05_1.domain.speech.Speech { + getId() + setId() + getText() + setText() - + getSpeaker() - + setSpeaker() - + getSpeech() - + setSpeech() + + getSpeakerId() + + setSpeakerId() + + getProtocol() + + setProtocol() + + setTextContents() + + getAgenda() + + setAgenda() + equals() + hashCode() + toString() @@ -748,18 +1303,15 @@ package org.texttechnologylab.project.gruppe_05_1.domain.speech { } package org.texttechnologylab.project.gruppe_05_1.domain.speech { - class "Speech" as org.texttechnologylab.project.gruppe_05_1.domain.speech.Speech { + class "Comment" as org.texttechnologylab.project.gruppe_05_1.domain.speech.Comment { + getId() + setId() + getText() + setText() - + getSpeakerId() - + setSpeakerId() - + getProtocol() - + setProtocol() - + setTextContents() - + getAgenda() - + setAgenda() + + getSpeaker() + + setSpeaker() + + getSpeech() + + setSpeech() + equals() + hashCode() + toString() @@ -767,25 +1319,13 @@ package org.texttechnologylab.project.gruppe_05_1.domain.speech { } package org.texttechnologylab.project.gruppe_05_1.domain.speech { - class "SpeechMetaData" as org.texttechnologylab.project.gruppe_05_1.domain.speech.SpeechMetaData { - + getSpeechKey() - + setSpeechKey() - + getSpeechId() - + setSpeechId() - + getSpeakerId() - + setSpeakerId() - + getSpeakerName() - + setSpeakerName() - + getFraktion() - + setFraktion() - + getSessionId() - + setSessionId() - + getDateTime() - + setDateTime() - + getDateTimeString() - + setDateTimeString() - + getAgendaTitle() - + setAgendaTitle() + class "Agenda" as org.texttechnologylab.project.gruppe_05_1.domain.speech.Agenda { + + getIndex() + + setIndex() + + getId() + + setId() + + getTitle() + + setTitle() + equals() + hashCode() + toString() @@ -808,918 +1348,4 @@ package org.texttechnologylab.project.gruppe_05_1.domain.speech { } } -package org.texttechnologylab.project.gruppe_05_1.domain.nlp { - class "AudioToken" as org.texttechnologylab.project.gruppe_05_1.domain.nlp.AudioToken { - - begin - - end - - timeStart - - timeEnd - - value - + getBegin() - + setBegin() - + getEnd() - + setEnd() - + getTimeStart() - + setTimeStart() - + getTimeEnd() - + setTimeEnd() - + getValue() - + setValue() - + equals() - + hashCode() - + toString() - } -} - -package org.texttechnologylab.project.gruppe_05_1.domain.nlp { - class "Dependency" as org.texttechnologylab.project.gruppe_05_1.domain.nlp.Dependency { - + getType() - + setType() - + getGovernor() - + setGovernor() - + getDependent() - + setDependent() - + equals() - + hashCode() - + toString() - } -} - -package org.texttechnologylab.project.gruppe_05_1.domain.nlp { - class "NamedEntity" as org.texttechnologylab.project.gruppe_05_1.domain.nlp.NamedEntity { - + getType() - + setType() - + getText() - + setText() - + equals() - + hashCode() - + toString() - + toXML() - } -} - -package org.texttechnologylab.project.gruppe_05_1.domain.nlp { - class "NlpInfo" as org.texttechnologylab.project.gruppe_05_1.domain.nlp.NlpInfo { - + setTokens() - + setSentences() - + setDependencies() - + setNamedEntities() - + getOverallSentiment() - + setOverallSentiment() - + setSentiments() - + setTopics() - + setPosList() - + getVideoInformation() - + setVideoInformation() - + equals() - + hashCode() - + toString() - } -} - -package org.texttechnologylab.project.gruppe_05_1.domain.nlp { - class "Pos" as org.texttechnologylab.project.gruppe_05_1.domain.nlp.Pos { - + getPosValue() - + setPosValue() - + getCoarseValue() - + setCoarseValue() - + getBegin() - + setBegin() - + getEnd() - + setEnd() - + getCoveredText() - + setCoveredText() - + equals() - + hashCode() - + toString() - + toXML() - } -} - -package org.texttechnologylab.project.gruppe_05_1.domain.nlp { - class "Sentence" as org.texttechnologylab.project.gruppe_05_1.domain.nlp.Sentence { - + getText() - + setText() - + equals() - + hashCode() - + toString() - } -} - -package org.texttechnologylab.project.gruppe_05_1.domain.nlp { - class "Sentiment" as org.texttechnologylab.project.gruppe_05_1.domain.nlp.Sentiment { - + getBegin() - + setBegin() - + getEnd() - + setEnd() - + getSentiment() - + setSentiment() - + getNegative() - + setNegative() - + getNeutral() - + setNeutral() - + getPositive() - + setPositive() - + equals() - + hashCode() - + toString() - } -} -org.texttechnologylab.project.gruppe_05_1.domain.nlp.Sentiment "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler - -package org.texttechnologylab.project.gruppe_05_1.domain.nlp { - class "Token" as org.texttechnologylab.project.gruppe_05_1.domain.nlp.Token { - + getText() - + setText() - + getPos() - + setPos() - + getLemma() - + setLemma() - + equals() - + hashCode() - + toString() - } -} - -package org.texttechnologylab.project.gruppe_05_1.domain.nlp { - class "Topic" as org.texttechnologylab.project.gruppe_05_1.domain.nlp.Topic { - + getTopic() - + setTopic() - + getScore() - + setScore() - + getText() - + setText() - + equals() - + hashCode() - + toString() - + toXML() - } -} - -package org.texttechnologylab.project.gruppe_05_1.domain.nlp { - class "VideoInformation" as org.texttechnologylab.project.gruppe_05_1.domain.nlp.VideoInformation { - + setAudioTokens() - + equals() - + hashCode() - + toString() - } -} - -package org.texttechnologylab.project.gruppe_05_1.domain.nlp.html { - class "SentimentOfSentence" as org.texttechnologylab.project.gruppe_05_1.domain.nlp.html.SentimentOfSentence { - + getBegin() - + setBegin() - + getEnd() - + setEnd() - + getText() - + setText() - + getSentiment() - + setSentiment() - + getNegative() - + setNegative() - + getNeutral() - + setNeutral() - + getPositive() - + setPositive() - + equals() - + hashCode() - + toString() - } -} - -package org.texttechnologylab.project.gruppe_05_1.nlp { - class "NlpUtils" as org.texttechnologylab.project.gruppe_05_1.nlp.NlpUtils { - - pComposer - - iWorkers - - TYPE_SYSTEM_DESCRIPTOR_PATH - - MAX_FEATURE_LENGTH - + createNlpData() - - duuiInit() - + getCas() - + runDockerDriver() - - casInit() - + runVideos() - - createSentenceInfo() - - createNAmedEntities() - - createSentimentInfo() - + runRemoteDriver() - + extractAnnotations() - } -} -org.texttechnologylab.project.gruppe_05_1.nlp.NlpUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler -org.texttechnologylab.project.gruppe_05_1.nlp.NlpUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger -org.texttechnologylab.project.gruppe_05_1.nlp.NlpUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech - -package org.texttechnologylab.project.gruppe_05_1.nlp { - class "XmiExtractor" as org.texttechnologylab.project.gruppe_05_1.nlp.XmiExtractor { - - bulkOperations - - mongoDBHandler - - BATCH_SIZE - - processedCount - + extractAndUploadXmiData() - - processXmiGzStream() - - extractSpeechKeyFromFilename() - } -} -org.texttechnologylab.project.gruppe_05_1.nlp.XmiExtractor "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler -org.texttechnologylab.project.gruppe_05_1.nlp.XmiExtractor "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger -org.texttechnologylab.project.gruppe_05_1.nlp.XmiExtractor "1" <-- "1" static - -package org.texttechnologylab.project.gruppe_05_1.rest { - class "SpeechesXMLExportController" as org.texttechnologylab.project.gruppe_05_1.rest.SpeechesXMLExportController { - + exportSpeech() - + exportSpeechesFromSpeaker() - + exportAllSpeeches() - + exportSpeechesWithTopic() - + exportSpeeches() - } -} -org.texttechnologylab.project.gruppe_05_1.rest.SpeechesXMLExportController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger - -package org.texttechnologylab.project.gruppe_05_1.rest { - class "SpeechesLatexExportController" as org.texttechnologylab.project.gruppe_05_1.rest.SpeechesLatexExportController { - + exportSpeech() - + exportSpeechesFromSpeaker() - + exportAllSpeeches() - + exportSpeechesWithTopic() - + exportSpeeches() - } -} -org.texttechnologylab.project.gruppe_05_1.rest.SpeechesLatexExportController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger - -package org.texttechnologylab.project.gruppe_05_1.rest { - class "FrontEndController" as org.texttechnologylab.project.gruppe_05_1.rest.FrontEndController { - + getHomepage() - + getAllParlamentarier() - + getCharts() - } -} -org.texttechnologylab.project.gruppe_05_1.rest.FrontEndController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils -org.texttechnologylab.project.gruppe_05_1.rest.FrontEndController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.Parlamentarier -org.texttechnologylab.project.gruppe_05_1.rest.FrontEndController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.nlp.Sentiment -org.texttechnologylab.project.gruppe_05_1.rest.FrontEndController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.nlp.Token -org.texttechnologylab.project.gruppe_05_1.rest.FrontEndController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.nlp.Topic -org.texttechnologylab.project.gruppe_05_1.rest.FrontEndController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PPRUtils - -package org.texttechnologylab.project.gruppe_05_1.rest { - class "JavalinConfig" as org.texttechnologylab.project.gruppe_05_1.rest.JavalinConfig { - - propertiesFileName - + getJavalinProperties() - + getPort() - } -} -org.texttechnologylab.project.gruppe_05_1.rest.JavalinConfig "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils -org.texttechnologylab.project.gruppe_05_1.rest.JavalinConfig "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger -org.texttechnologylab.project.gruppe_05_1.rest.JavalinConfig "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PropertiesUtils - -package org.texttechnologylab.project.gruppe_05_1.rest { - class "ParlamentarierController" as org.texttechnologylab.project.gruppe_05_1.rest.ParlamentarierController { - - emptyList - + getAllParlamentarier() - + getParlamentarierDetails() - } -} -org.texttechnologylab.project.gruppe_05_1.rest.ParlamentarierController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.Parlamentarier -org.texttechnologylab.project.gruppe_05_1.rest.ParlamentarierController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails -org.texttechnologylab.project.gruppe_05_1.rest.ParlamentarierController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils -org.texttechnologylab.project.gruppe_05_1.rest.ParlamentarierController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger -org.texttechnologylab.project.gruppe_05_1.rest.ParlamentarierController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PPRUtils -org.texttechnologylab.project.gruppe_05_1.rest.ParlamentarierController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech - -package org.texttechnologylab.project.gruppe_05_1.rest { - class "RESTHandler" as org.texttechnologylab.project.gruppe_05_1.rest.RESTHandler { - + startJavalin() - } -} -org.texttechnologylab.project.gruppe_05_1.rest.RESTHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger -org.texttechnologylab.project.gruppe_05_1.rest.RESTHandler "1" <-- "1" static - -package org.texttechnologylab.project.gruppe_05_1.rest { - class "SpeechController" as org.texttechnologylab.project.gruppe_05_1.rest.SpeechController { - - POSITIVE_SENTIMENT - - NEGATIVE_SENTIMENT - - NEUTRAL_SENTIMENT - + listSpeeches() - + showSpeech() - + listAllSpeeches() - } -} -org.texttechnologylab.project.gruppe_05_1.rest.SpeechController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler -org.texttechnologylab.project.gruppe_05_1.rest.SpeechController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils -org.texttechnologylab.project.gruppe_05_1.rest.SpeechController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.HtmlSpeech -org.texttechnologylab.project.gruppe_05_1.rest.SpeechController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails -org.texttechnologylab.project.gruppe_05_1.rest.SpeechController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.SpeechOverview -org.texttechnologylab.project.gruppe_05_1.rest.SpeechController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.nlp.NamedEntity -org.texttechnologylab.project.gruppe_05_1.rest.SpeechController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.nlp.Sentiment -org.texttechnologylab.project.gruppe_05_1.rest.SpeechController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.nlp.Token -org.texttechnologylab.project.gruppe_05_1.rest.SpeechController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.nlp.Topic -org.texttechnologylab.project.gruppe_05_1.rest.SpeechController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speech.SpeechMetaData -org.texttechnologylab.project.gruppe_05_1.rest.SpeechController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger -org.texttechnologylab.project.gruppe_05_1.rest.SpeechController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech - -package org.texttechnologylab.project.gruppe_05_1.util { - class "Logger" as org.texttechnologylab.project.gruppe_05_1.util.Logger { - - DATE_TIME_FORMATTER - + info() - + warn() - + error() - + debug() - + pink() - + orange() - } -} -org.texttechnologylab.project.gruppe_05_1.util.Logger "1" <-- "1" static - -package org.texttechnologylab.project.gruppe_05_1.util { - class "FileUtils" as org.texttechnologylab.project.gruppe_05_1.util.FileUtils { - + createDirectoryIFNotExists() - + writeStringsToFile() - + writeStringToFile() - + createFileWriter() - } -} - -package org.texttechnologylab.project.gruppe_05_1.util { - class "GeneralUtils" as org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils { - + parseInt() - + parseDate() - + parseTime() - + formatDate() - + formatTime() - + parseDateTime() - } -} - -package org.texttechnologylab.project.gruppe_05_1.util { - class "PropertiesUtils" as org.texttechnologylab.project.gruppe_05_1.util.PropertiesUtils { - + readPropertiesFromResource() - } -} - -package org.texttechnologylab.project.gruppe_05_1.util { - class "XmlUtils" as org.texttechnologylab.project.gruppe_05_1.util.XmlUtils { - + loadXmlDocument() - + getRootDocument() - + getFirstChildByName() - + getNodeAttributeByName() - - getRawText() - } -} - -package org.texttechnologylab.project.gruppe_05_1.util { - class "PPRUtils" as org.texttechnologylab.project.gruppe_05_1.util.PPRUtils { - + PARTEILOS_KUERZEL - - processedProtocols - + legislaturPeriode - + parlamentExplorerInit() - + readPhotos() - + readSpeechesAndComments() - + readAndPersistMdbs() - - mdbActiveInWp() - - copyStream() - + sortParlamentarierByName() - + sortMdbByName() - + fetchMemberImageBase64FromNameString() - + getSessionCookies() - } -} -org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler -org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoObjectFactory -org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils -org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.Parlamentarier -org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.BiografischeAngaben -org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Mdb -org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership -org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker -org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.FileObjectFactory -org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" static - -package org.texttechnologylab.project.gruppe_05_1.util { - class "SpeechVideoUpdater" as org.texttechnologylab.project.gruppe_05_1.util.SpeechVideoUpdater { - - BASE_VIDEO_ID - - BASE_URL - - SUFFIX - + init() - + findVideos() - - downloadVideo() - - uploadVideoToGridFS() - } -} -org.texttechnologylab.project.gruppe_05_1.util.SpeechVideoUpdater "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler - -package org.texttechnologylab.project.gruppe_05_1.xml { - class "FileObjectFactory" as org.texttechnologylab.project.gruppe_05_1.xml.FileObjectFactory { - - oFactory - + getFactory() - + createBiografischeAngaben() - + createInstitution() - + createMdb() - + createMdbDocument() - + createMdbName() - + createWahlperiode() - + createSpeaker() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.FileObjectFactory "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker -org.texttechnologylab.project.gruppe_05_1.xml.FileObjectFactory "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl - -package org.texttechnologylab.project.gruppe_05_1.xml { - interface "XmlOperations" as org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations { - - fromXmlNode() - } -} - -package org.texttechnologylab.project.gruppe_05_1.xml.mdb { - class "BiografischeAngaben_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.mdb.BiografischeAngaben_File_Impl { - + fromXmlNode() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.mdb.BiografischeAngaben_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.BiografischeAngaben -org.texttechnologylab.project.gruppe_05_1.xml.mdb.BiografischeAngaben_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils -org.texttechnologylab.project.gruppe_05_1.xml.mdb.BiografischeAngaben_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger -org.texttechnologylab.project.gruppe_05_1.xml.mdb.BiografischeAngaben_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations - -package org.texttechnologylab.project.gruppe_05_1.xml.mdb { - class "Institution_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.mdb.Institution_File_Impl { - + fromXmlNode() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.mdb.Institution_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Institution -org.texttechnologylab.project.gruppe_05_1.xml.mdb.Institution_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils -org.texttechnologylab.project.gruppe_05_1.xml.mdb.Institution_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger -org.texttechnologylab.project.gruppe_05_1.xml.mdb.Institution_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations - -package org.texttechnologylab.project.gruppe_05_1.xml.mdb { - class "MdbDocument_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbDocument_File_Impl { - + fromXmlNode() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbDocument_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Mdb -org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbDocument_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbDocument -org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbDocument_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.XmlUtils -org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbDocument_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations - -package org.texttechnologylab.project.gruppe_05_1.xml.mdb { - class "MdbName_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbName_File_Impl { - + fromXmlNode() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbName_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbName -org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbName_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils -org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbName_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger -org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbName_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations - -package org.texttechnologylab.project.gruppe_05_1.xml.mdb { - class "Mdb_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.mdb.Mdb_File_Impl { - + fromXmlNode() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.mdb.Mdb_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Mdb -org.texttechnologylab.project.gruppe_05_1.xml.mdb.Mdb_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbName -org.texttechnologylab.project.gruppe_05_1.xml.mdb.Mdb_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Wahlperiode -org.texttechnologylab.project.gruppe_05_1.xml.mdb.Mdb_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.XmlUtils -org.texttechnologylab.project.gruppe_05_1.xml.mdb.Mdb_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations - -package org.texttechnologylab.project.gruppe_05_1.xml.mdb { - class "Wahlperiode_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.mdb.Wahlperiode_File_Impl { - + fromXmlNode() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.mdb.Wahlperiode_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils -org.texttechnologylab.project.gruppe_05_1.xml.mdb.Wahlperiode_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger -org.texttechnologylab.project.gruppe_05_1.xml.mdb.Wahlperiode_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.XmlUtils -org.texttechnologylab.project.gruppe_05_1.xml.mdb.Wahlperiode_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations - -package org.texttechnologylab.project.gruppe_05_1.xml.speaker { - class "Speaker_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl { - + fromXmlNode() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership -org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker -org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PPRUtils -org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.XmlUtils -org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches { - class "SpeechParser" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser { - - speeches - - agendaItems - + setParseLegislativePeriods() - - parseSessionFile() - - getOptionalTextContent() - - convertDocumentToFile() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger -org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PPRUtils -org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.AgendaItem -org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Session -org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { - class "Individual_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Individual_File_Impl { - - name - - firstName - - title - - dateOfBirth - - dateOfDeath - - placeOfBirth - - gender - - religion - + getName() - + getFirstName() - + getTitle() - + getDateOfBirth() - + getDateOfDeath() - + getPlaceOfBirth() - + getGender() - + getReligion() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Individual_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Individual - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { - class "HistoryEntry_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.HistoryEntry_File_Impl { - - action - - content - - contentType - - date - + getContent() - + getContentType() - + getDate() - + getAction() - + getType() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.HistoryEntry_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.HistoryEntry -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.HistoryEntry_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { - class "AgendaItem_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.AgendaItem_File_Impl { - - id - - sessionId - - title - - speeches - + getId() - + getSessionId() - + getTitle() - + getType() - + addSpeech() - + toHTML() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.AgendaItem_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.AgendaItem -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.AgendaItem_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.AgendaItem_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { - class "Comment_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Comment_File_Impl { - - contentId - - speechId - - comment - - commentatorName - + getContentId() - + getSpeechId() - + getComment() - + getCommentatorName() - + getType() - + toTeX() - + toXML() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Comment_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Comment -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Comment_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Comment_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { - class "Constituency_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Constituency_File_Impl { - - id - - name - - federalState - + getId() - + getName() - + getFederalState() - + getType() - + toHTML() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Constituency_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Constituency -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Constituency_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { - class "Fraction_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Fraction_File_Impl { - - name - - longName - - members - + getName() - + getLongName() - + getType() - + addMember() - + updateName() - + toHTML() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Fraction_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Fraction -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Fraction_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { - class "LegislativePeriod_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.LegislativePeriod_File_Impl { - - id - - startDate - - endDate - - constituency - + getId() - + getStartDate() - + getEndDate() - + getConstituency() - + getType() - + toHTML() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.LegislativePeriod_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.LegislativePeriod -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.LegislativePeriod_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { - class "Line_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Line_File_Impl { - - contentId - # speechId - - content - + getContentId() - + getSpeechId() - + getContent() - + getType() - + toTeX() - + toXML() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Line_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Line_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Line -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Line_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { - class "MemberOfParliament_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.MemberOfParliament_File_Impl { - - id - - party - - legislativePeriods - - firstLegislativePeriodId - - lastLegislativePeriodId - - photo - + getId() - + getParty() - + getFirstLegislativePeriodId() - + getLastLegislativePeriodId() - + getPhoto() - + isCurrentMember() - + updateParty() - + getType() - + toHTML() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.MemberOfParliament_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.LegislativePeriod -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.MemberOfParliament_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.MemberOfParliament -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.MemberOfParliament_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { - class "Session_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Session_File_Impl { - - id - - legislativePeriod - - dateTime - - endTime - - agendaItems - + getId() - + getLegislativePeriod() - + getDateTime() - + getEndTime() - + getType() - + addAgendaItem() - + toHTML() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Session_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.AgendaItem -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Session_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Session -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Session_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { - class "Speaker_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speaker_File_Impl { - - contentId - - speechId - - speakerId - - speakerName - - fraction - + getContentId() - + getSpeechId() - + getSpeakerId() - + getSpeakerName() - + getFraction() - + getType() - + toTeX() - + toXML() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speaker -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { - class "Speech_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speech_File_Impl { - - sessionId - - agendaItemId - - speakerId - - speechId - - speakerName - - fraction - - speechContents - - speechKey - + getSessionId() - + getAgendaItemId() - + getSpeakerId() - + getSpeechId() - + getSpeakerName() - + getFraction() - + getSpeechKey() - + getType() - + addContent() - + toHTML() - + getFullText() - + toCas() - + toTeX() - + toXML() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speech_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speech_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speech_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { - interface "Constituency" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Constituency { - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Constituency "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { - interface "HistoryEntry" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.HistoryEntry { - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.HistoryEntry "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { - interface "MemberOfParliament" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.MemberOfParliament { - - updateParty() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.MemberOfParliament "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { - interface "Speaker" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speaker { - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speaker "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { - interface "AgendaItem" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.AgendaItem { - - addSpeech() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.AgendaItem "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { - interface "Individual" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Individual { - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Individual "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { - interface "Comment" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Comment { - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Comment "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { - interface "Line" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Line { - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Line "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { - interface "Fraction" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Fraction { - - addMember() - - updateName() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Fraction "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { - interface "Session" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Session { - - addAgendaItem() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Session "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { - interface "LegislativePeriod" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.LegislativePeriod { - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.LegislativePeriod "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { - interface "Content" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content { - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { - interface "Speech" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech { - - addContent() - - toXML() - } -} -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType - -package org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums { - enum "MongoDBEntryType" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType { - } -} - -package org.texttechnologylab.project.gruppe_05_1.exceptions { - class "FractionAlreadyExistsException" as org.texttechnologylab.project.gruppe_05_1.exceptions.FractionAlreadyExistsException { - } -} - -package org.texttechnologylab.project.gruppe_05_1.exceptions { - class "SpeechNotFoundException" as org.texttechnologylab.project.gruppe_05_1.exceptions.SpeechNotFoundException { - } -} - -package org.texttechnologylab.project.gruppe_05_1.exceptions { - class "ServerErrorException" as org.texttechnologylab.project.gruppe_05_1.exceptions.ServerErrorException { - } -} - -package org.texttechnologylab.project.gruppe_05_1.exceptions { - class "FractionNotFoundException" as org.texttechnologylab.project.gruppe_05_1.exceptions.FractionNotFoundException { - } -} - -package org.texttechnologylab.project.gruppe_05_1.exceptions { - class "MemberNotFoundException" as org.texttechnologylab.project.gruppe_05_1.exceptions.MemberNotFoundException { - } -} - -package org.texttechnologylab.project.gruppe_05_1.exceptions { - class "AgendaItemNotFoundException" as org.texttechnologylab.project.gruppe_05_1.exceptions.AgendaItemNotFoundException { - } -} - -package org.texttechnologylab.project.gruppe_05_1.exceptions { - class "SessionNotFoundException" as org.texttechnologylab.project.gruppe_05_1.exceptions.SessionNotFoundException { - } -} - -package org.texttechnologylab.project.gruppe_05_1.export { - class "TeXUtil" as org.texttechnologylab.project.gruppe_05_1.export.TeXUtil { - - PREAMBLE - - BEGIN_DOCUMENT - - END_DOCUMENT - - TABLEOFCONTENTS - - NEWPAGE - - readFileContentFromTeXDir() - + getSpeechToTexComponent() - + createTempDir() - + deleteTeXTempDirContents() - + visitFile() - + postVisitDirectory() - + tryDeleteTeXTempDirContents() - + isTeXSdkInstalled() - + generateChartView() - + generateBubbleChartLatex() - + generateBarChartLatex() - + generateRadarChartLatex() - } -} -org.texttechnologylab.project.gruppe_05_1.export.TeXUtil "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_MongoDB_Impl -org.texttechnologylab.project.gruppe_05_1.export.TeXUtil "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.nlp.Sentiment -org.texttechnologylab.project.gruppe_05_1.export.TeXUtil "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.nlp.Topic -org.texttechnologylab.project.gruppe_05_1.export.TeXUtil "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger -org.texttechnologylab.project.gruppe_05_1.export.TeXUtil "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech -org.texttechnologylab.project.gruppe_05_1.export.TeXUtil "1" <-- "1" static - -package org.texttechnologylab.project.gruppe_05_1.export { - class "XMLUtil" as org.texttechnologylab.project.gruppe_05_1.export.XMLUtil { - + documentToString() - + createXmlDocument() - + addNlpData() - + addSpeechById() - + addSpeechBySpeech() - + getExportedSpeechById() - + getExportedSpeechesFromSpeakerById() - + getExportedAllSpeeches() - + getExportedSpeechesWhithTopic() - + getExportedSpeechesbyIds() - } -} -org.texttechnologylab.project.gruppe_05_1.export.XMLUtil "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_MongoDB_Impl -org.texttechnologylab.project.gruppe_05_1.export.XMLUtil "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.HtmlSpeech -org.texttechnologylab.project.gruppe_05_1.export.XMLUtil "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech - @enduml diff --git a/src/.DS_Store b/src/.DS_Store deleted file mode 100644 index 717d292..0000000 Binary files a/src/.DS_Store and /dev/null differ diff --git a/src/main/.DS_Store b/src/main/.DS_Store deleted file mode 100644 index bf362a1..0000000 Binary files a/src/main/.DS_Store and /dev/null differ diff --git a/src/main/java/.DS_Store b/src/main/java/.DS_Store deleted file mode 100644 index ef2c94d..0000000 Binary files a/src/main/java/.DS_Store and /dev/null differ diff --git a/src/main/java/org/.DS_Store b/src/main/java/org/.DS_Store deleted file mode 100644 index 39d3d60..0000000 Binary files a/src/main/java/org/.DS_Store and /dev/null differ diff --git a/src/main/java/org/texttechnologylab/.DS_Store b/src/main/java/org/texttechnologylab/.DS_Store deleted file mode 100644 index 7c0cdf1..0000000 Binary files a/src/main/java/org/texttechnologylab/.DS_Store and /dev/null differ diff --git a/src/main/java/org/texttechnologylab/project/.DS_Store b/src/main/java/org/texttechnologylab/project/.DS_Store deleted file mode 100644 index 61ef70c..0000000 Binary files a/src/main/java/org/texttechnologylab/project/.DS_Store and /dev/null differ diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/.DS_Store b/src/main/java/org/texttechnologylab/project/gruppe_05_1/.DS_Store deleted file mode 100644 index 88e8e88..0000000 Binary files a/src/main/java/org/texttechnologylab/project/gruppe_05_1/.DS_Store and /dev/null differ diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/Main.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/Main.java index ebe8e79..5b37f88 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/Main.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/Main.java @@ -7,14 +7,11 @@ import org.texttechnologylab.project.gruppe_05_1.nlp.XmiExtractor; import org.texttechnologylab.project.gruppe_05_1.rest.RESTHandler; import org.texttechnologylab.project.gruppe_05_1.util.Logger; import org.texttechnologylab.project.gruppe_05_1.util.PPRUtils; -import org.texttechnologylab.project.gruppe_05_1.util.SpeechVideoUpdater; import org.texttechnologylab.project.gruppe_05_1.xml.FileObjectFactory; -import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Session; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser; import org.w3c.dom.Document; import java.util.Arrays; -import java.util.List; import java.util.Set; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; @@ -22,7 +19,6 @@ import java.util.concurrent.TimeUnit; import static java.lang.Boolean.FALSE; import static java.lang.Boolean.TRUE; -import static org.texttechnologylab.project.gruppe_05_1.export.TeXUtil.isTeXSdkInstalled; import static org.texttechnologylab.project.gruppe_05_1.util.PPRUtils.checkAndProcessNewProtocols; public class Main { @@ -30,33 +26,21 @@ public class Main { public static boolean FORCE_UPLOAD_MEMBERS; public static boolean FORCE_UPLOAD_SPEECHES; public static boolean ONLY_RUN_WEB; - - public static boolean REBUILD_METADATA; public static boolean DEBUG_LOGGING; private static final FileObjectFactory xmlFactory = FileObjectFactory.getFactory(); private static final MongoObjectFactory mongoFactory = MongoObjectFactory.getFactory(); - public static final String RESOURCES_DIR = "src/main/resources"; public static final String CONFIG_DIR = "src/main/resources/config"; public static final String JAVALIN_TEMPLATE_DIR = "src/main/resources/templates"; public static final String JAVALIN_STATIC_FILES_DIR = "src/main/resources/static"; public static final String JCAS_SPEECHES_TYPESYSTEM_DIR = "src/main/resources/speeches/TypeSystem"; public static final String MEMBER_IMAGES_DIR = "src/main/resources/membersOfParliamentImages/"; - public static final String TEMP_EXPORT_DIR = "src/main/resources/tempExport/"; - /** - * Main Methode zum Start des Multimodalen Parlament Explorers - * Programm-Flag Implementierung und DIR Konstanten von Jonas - * - * @param args - * @throws Exception - */ public static void main(String[] args) throws Exception { UPLOAD_MEMBER_PHOTOS = Arrays.asList(args).contains("uploadMemberPhotos"); FORCE_UPLOAD_MEMBERS = Arrays.asList(args).contains("forceUploadMembers"); FORCE_UPLOAD_SPEECHES = Arrays.asList(args).contains("forceUploadSpeeches"); ONLY_RUN_WEB = Arrays.asList(args).contains("onlyRunWeb"); - REBUILD_METADATA = Arrays.asList(args).contains("rebuildMetadata"); DEBUG_LOGGING = Arrays.asList(args).contains("debugLogging"); System.out.println("Starting Multimodal Parliament Explorer..."); @@ -66,16 +50,9 @@ public class Main { System.out.println(" - Force Upload Members: " + FORCE_UPLOAD_MEMBERS); System.out.println(" - Force Upload Speeches: " + FORCE_UPLOAD_SPEECHES); System.out.println(" - Only Run javalin Web Server: " + ONLY_RUN_WEB); - System.out.println(" - Rebuild Metadata: " + REBUILD_METADATA); System.out.println(" - Debug Logging: " + DEBUG_LOGGING); System.out.println("--------------------------------------------o"); - if (!isTeXSdkInstalled()) { - Logger.orange("-------------------------------------------------o"); - Logger.orange("TeX SDK not installed. PDF export will not work."); - Logger.orange("-------------------------------------------------o"); - } - if (ONLY_RUN_WEB) { Logger.info("Starting Web Service..."); RESTHandler restHandler = new RESTHandler(); @@ -85,12 +62,6 @@ public class Main { MongoDBHandler mongoDBHandler = new MongoDBHandler(); - if (REBUILD_METADATA) { - Logger.info("Rebuilding Metadata..."); - MongoPprUtils.rebuildMetadata(); - System.exit(0); - } - SpeechIndexFactoryImpl speechIndexFactory = new SpeechIndexFactoryImpl(); if ((mongoDBHandler.getDatabase().getCollection(MongoPprUtils.SPEECH_COLLECTION_NAME).countDocuments() != 0) && !FORCE_UPLOAD_SPEECHES) { Logger.info("Skipping Speech parsing and DB insertion as they are already present..."); @@ -124,9 +95,6 @@ public class Main { Logger.pink("Adding Speeches to DB..."); mongoDBHandler.insertSpeeches(speechIndex.getSpeeches()); - Logger.pink("Building Metadata..."); - MongoPprUtils.rebuildMetadata(); - // only upload member photos if database was empty by default, not when speeches are force-overwritten if (!FORCE_UPLOAD_SPEECHES) { Logger.pink("Uploading Member Photos to DB..."); @@ -154,10 +122,10 @@ public class Main { if (UPLOAD_MEMBER_PHOTOS) { Logger.pink("Uploading Member Photos to DB..."); - mongoDBHandler.uploadMemberPhotosFromResourceFolder(); + mongoDBHandler.uploadMemberPhotos(); } - SpeechVideoUpdater.init(); - ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); + NlpUtils.runRemoteDriver(); + /*ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); scheduler.scheduleAtFixedRate(() -> { try { NlpUtils.runRemoteDriver(); @@ -173,8 +141,7 @@ public class Main { Logger.info("Keine neuen Protokolle gefunden, Upload wird übersprungen."); } else { SpeechParser speechParser = new SpeechParser(); - List newSessions = speechParser.parseAllSessions(newProtocols); - mongoDBHandler.insertSessions(newSessions); + mongoDBHandler.insertSessions(speechParser.parseAllSessions(newProtocols)); mongoDBHandler.insertAgendaItems(speechParser.getAgendaItems()); mongoDBHandler.insertSpeeches(speechParser.getSpeeches()); Logger.info("Neuer Protokolle uploaded: " + newProtocols.size()); @@ -182,7 +149,7 @@ public class Main { } catch (Exception ex) { Logger.error("Fehler bei der Protokollaktualisierung: " + ex.getMessage()); } - }, 0, 10, TimeUnit.MINUTES); + }, 0, 10, TimeUnit.MINUTES);*/ RESTHandler restHandler = new RESTHandler(); restHandler.startJavalin(); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/.DS_Store b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/.DS_Store deleted file mode 100644 index a45e7cb..0000000 Binary files a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/.DS_Store and /dev/null differ diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoDBHandler.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoDBHandler.java index d0b0209..b7de73c 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoDBHandler.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoDBHandler.java @@ -3,19 +3,21 @@ package org.texttechnologylab.project.gruppe_05_1.database; import com.mongodb.MongoClientSettings; import com.mongodb.MongoCredential; import com.mongodb.ServerAddress; +import com.mongodb.WriteConcern; import com.mongodb.bulk.BulkWriteResult; -import com.mongodb.client.*; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; +import com.mongodb.client.MongoCollection; +import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.*; -import org.texttechnologylab.project.gruppe_05_1.domain.html.HtmlSpeech; -import org.texttechnologylab.project.gruppe_05_1.domain.nlp.Topic; import org.texttechnologylab.project.gruppe_05_1.exceptions.ServerErrorException; import org.texttechnologylab.project.gruppe_05_1.exceptions.SessionNotFoundException; import org.bson.Document; import org.bson.conversions.Bson; import org.bson.types.ObjectId; -import org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.AgendaItem_MongoDB_Impl; -import org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Session_MongoDB_Impl; -import org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speech_MongoDB_Impl; +import org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.AgendaItem_MongoDB_Impl; +import org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Session_MongoDB_Impl; +import org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Speech_MongoDB_Impl; import org.texttechnologylab.project.gruppe_05_1.util.Logger; import org.texttechnologylab.project.gruppe_05_1.util.PPRUtils; import org.texttechnologylab.project.gruppe_05_1.util.PropertiesUtils; @@ -30,8 +32,6 @@ import java.util.concurrent.TimeUnit; import static com.mongodb.client.model.Filters.eq; import static org.texttechnologylab.project.gruppe_05_1.Main.MEMBER_IMAGES_DIR; -import static org.texttechnologylab.project.gruppe_05_1.util.PPRUtils.fetchMemberImageBase64FromNameString; -import static org.texttechnologylab.project.gruppe_05_1.util.PPRUtils.getSessionCookies; public class MongoDBHandler { @@ -58,9 +58,7 @@ public class MongoDBHandler { private MongoCollection memberPhotoCollection; private MongoCollection historyCollection; - /** - * Implementiert von Valentin - */ + public MongoDBHandler() { // Set loglevel for slf4j to avoid spam // TODO: Fix this (optional) System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "error"); @@ -119,7 +117,6 @@ public class MongoDBHandler { /** * Get the MongoDB according to properties. * If a local server URI is defined, use it. Otherwise, use remote server. - * Implementiert von Valentin * @return MongoDatabase */ static public MongoDatabase getMongoDatabase() { @@ -180,7 +177,6 @@ public class MongoDBHandler { /** * * @return List with the names of all collections - * Implementiert von Valentin */ public Set getCollectionNames() { // return getDatabase().listCollectionNames().into(new ArrayList<>()); @@ -191,7 +187,6 @@ public class MongoDBHandler { * * @param name Name of collection to check for existance * @return does the collection exist - * Implementiert von Valentin */ public boolean collectionExists(String name) { return getDatabase().listCollectionNames().into(new ArrayList<>()).contains(name); @@ -200,7 +195,6 @@ public class MongoDBHandler { /** * Tries to create a collection. If the collection exists and contains documents, throw an exception - * Implementiert von Valentin * @param database * @param collectionName */ @@ -226,7 +220,6 @@ public class MongoDBHandler { /** * Create Collection - * Implementiert von Valentin * @param database * @param collectionName */ @@ -245,7 +238,6 @@ public class MongoDBHandler { /** * Creates a collection. If the collection exists already, delete all its document - * Implementiert von Valentin * @param database * @param collectionName */ @@ -261,12 +253,7 @@ public class MongoDBHandler { } } - /** - * Implementiert von Valentin - * @param collection - * @param indexName - * @param isAscending - */ + static public void createIndexForCollection(MongoCollection collection, String indexName, boolean isAscending) { // MongoDB creates automatically an index on "_id" if (indexName.equals(DEFAULT_ID_FIELD_NAME)) { @@ -280,12 +267,6 @@ public class MongoDBHandler { } } - /** - * Implementiert von Valentin - * @param collection - * @param indexNames - * @param isAscending - */ static public void createIndexForCollection(MongoCollection collection, List indexNames, boolean isAscending) { // MongoDB creates automatically an index on "_id" if (indexNames.contains(DEFAULT_ID_FIELD_NAME)) { @@ -300,9 +281,6 @@ public class MongoDBHandler { } } - /** - * Implementiert von Valentin - */ public void createIndicesForSpeakerCollection() { if (speakerCollection.listIndexes().into(new ArrayList<>()).size() == 1) { MongoDBHandler.createIndexForCollection(speakerCollection,"name", true); @@ -311,15 +289,10 @@ public class MongoDBHandler { } } - - /** - * Implementiert von Valentin - */ public void createIndicesForSpeechCollection() { if (speechesCollection.listIndexes().into(new ArrayList<>()).size() == 1) { MongoDBHandler.createIndexForCollection(speechesCollection, "speakerId", true); MongoDBHandler.createIndexForCollection(speechesCollection, "speechKey", true); - MongoDBHandler.createIndexForCollection(speechesCollection, "dateTime", false); } } @@ -329,7 +302,6 @@ public class MongoDBHandler { /** * Does a document with a given ID (for the "_id"-field) exists in a given collection? - * Implementiert von Valentin * @param collection * @param id * @return @@ -343,7 +315,6 @@ public class MongoDBHandler { /** * Find a document with a given ID (for the "_id"-field) in a given collection - * Implementiert von Valentin * @param collection * @param id * @return the document (null if not found) @@ -355,7 +326,7 @@ public class MongoDBHandler { } /** - *Implementiert von Valentin + * * @param collection * @return count of documents in the collection */ @@ -369,7 +340,7 @@ public class MongoDBHandler { /** - *Implementiert von Valentin + * * @param database * @param collectionName * @return count of documents in the collection @@ -383,7 +354,7 @@ public class MongoDBHandler { } /** - *Implementiert von Valentin + * * @param database * @param collectionName */ @@ -402,7 +373,6 @@ public class MongoDBHandler { */ /** - * Implementiert von Valentin * Creates a BSON document containing only simple fields according to fields given in a map * @param attributes * @return @@ -421,7 +391,6 @@ public class MongoDBHandler { } /** - * Implementiert von Valentin * Creates a BSON document containing simple fields (attributes) as well as other (possibly nested) objects * @param attributes the simple fields * @param fields the (possibly nested) objects @@ -449,22 +418,6 @@ public class MongoDBHandler { return doc; } - /** - * Implementiert von Valentin - * Liefert ein Feldwert aks Double, auch wenn er in der Datenbank als Integer oder String steht - * @param doc Mongo-Dokument - * @param fieldName Feldname - * @return Double - */ - public static Double getFieldAsDouble(Document doc, String fieldName) { - Object obj = doc.get(fieldName); - if (obj instanceof Double) return (Double) obj; - if (obj instanceof Integer) return ((Integer) obj).doubleValue(); - if (obj instanceof String) return Double.valueOf((String) obj); - Logger.error("Wert " + obj + " sollte Double sein, ist aber nicht"); - return (Double) obj; - } - /* * Weitere CRUD Operations * ======================= @@ -472,7 +425,7 @@ public class MongoDBHandler { /** - *Implementiert von Valentin + * * @param collection * @param doc * @return @@ -482,7 +435,7 @@ public class MongoDBHandler { } /** - *Implementiert von Valentin + * * @param collection * @param docs * @return @@ -492,7 +445,7 @@ public class MongoDBHandler { } /** - *Implementiert von Valentin + * * @param collection * @param fieldName * @param fieldValue @@ -504,7 +457,6 @@ public class MongoDBHandler { /** - * Implementiert von Valentin * Searches a document and performs an update on it * The document to update must be matched by name and value of a certain field * @param collection @@ -527,7 +479,7 @@ public class MongoDBHandler { /** - *Implementiert von Valentin + * * @param collection * @param searchCriteriaName search criteria: name of the field * @param searchCriteriaValue search criteria: value of the field @@ -538,12 +490,11 @@ public class MongoDBHandler { collection.deleteOne(deleteQuery); } - - /** - * Fügt eine Session in die Datenbank ein. - * - * @param session Das Session-Objekt, das eingefügt werden soll. + /* + * Justus Jonas operations + * ======================= */ + public void insertSession(Session session) { Document sessionDocument = new Document("sessionId", session.getId()) .append("dateTime", session.getDateTime()) @@ -553,15 +504,6 @@ public class MongoDBHandler { sessionsCollection.insertOne(sessionDocument); } - /** - * Erstellt eine neue Session anhand der übergebenen Parameter, generiert eine eindeutige sessionId, - * fügt sie in die Datenbank ein und gibt die erstellte Session zurück. - * - * @param dateTime Startzeit der Session. - * @param endTime Endzeit der Session. - * @param legislativePeriod Die Legislaturperiode. - * @return Die neu erstellte Session. - */ public Session insertSession(String dateTime, String endTime, String legislativePeriod) { // get a new random sessionId that is not already in use int sessionId = 0; @@ -579,22 +521,13 @@ public class MongoDBHandler { return session; } - /** - * Fügt eine Liste von Sessions in die Datenbank ein. - * - * @param sessions Liste der Sessions, die eingefügt werden sollen. - */ + public void insertSessions(List sessions) { for (Session session : sessions) { insertSession(session); } } - /** - * Fügt eine Liste von AgendaItems in die Datenbank ein. - * - * @param agendaItems Liste der AgendaItems, die eingefügt werden sollen. - */ public void insertAgendaItems(List agendaItems) { List agendaItemDocuments = new ArrayList<>(); for (AgendaItem agendaItem : agendaItems) { @@ -608,15 +541,7 @@ public class MongoDBHandler { agendaItemsCollection.insertMany(agendaItemDocuments); } - /** - * Erstellt ein neues AgendaItem für eine bestimmte Session und einen Titel. - * - * @param sessionId Die Session-ID, zu der das AgendaItem gehört. - * @param title Der Titel des AgendaItems. - * @return Das neu erstellte AgendaItem. - * @throws SessionNotFoundException Falls keine Session mit der angegebenen sessionId existiert. - * @throws ServerErrorException Falls ein Serverfehler auftritt. - */ + public AgendaItem insertAgendaItem(int sessionId, String title) throws SessionNotFoundException, ServerErrorException { // check if session exists List sessions = retrieveAllSessions(Filters.eq("sessionId", sessionId)); @@ -640,11 +565,6 @@ public class MongoDBHandler { return agendaItem; } - /** - * Fügt eine Liste von Speech-Objekten in die Datenbank ein. - * - * @param speeches Liste der Speeches, die eingefügt werden sollen. - */ public void insertSpeeches(List speeches) { // Convert each Speech to a Document List speechDocuments = new ArrayList<>(); @@ -695,43 +615,27 @@ public class MongoDBHandler { speechesCollection.insertMany(speechDocuments); } - /** - * Ruft alle Speech-Dokumente ohne Filter ab und wandelt sie in eine Liste von Speech-Objekten um. - * - * @return Eine Liste aller Speeches. - */ + public List retrieveAllSpeeches() { List speeches = speechesCollection.find().into(new ArrayList<>()); List result = new ArrayList<>(); for (Document speech : speeches) { - result.add(new Speech_MongoDB_Impl(speech, true)); + result.add(new Speech_MongoDB_Impl(speech)); } return result; } - - /** - * Ruft alle Speech-Dokumente ab, die dem übergebenen Filter entsprechen, und wandelt sie in eine Liste von Speech-Objekten um. - * - * @param filter Der Filter als Bson-Objekt. - * @return Eine Liste der Speeches, die dem Filter entsprechen. - */ public List retrieveAllSpeeches(Bson filter) { List speeches = speechesCollection.find(filter).into(new ArrayList<>()); List result = new ArrayList<>(); for (Document speech : speeches) { - result.add(new Speech_MongoDB_Impl(speech, true)); + result.add(new Speech_MongoDB_Impl(speech)); } return result; } - /** - * Ruft alle Session-Dokumente ohne Filter ab und wandelt sie in eine Liste von Session-Objekten um. - * - * @return Eine Liste aller Sessions. - */ public List retrieveAllSessions() { List sessions = sessionsCollection.find().into(new ArrayList<>()); List result = new ArrayList<>(); @@ -742,12 +646,6 @@ public class MongoDBHandler { return result; } - /** - * Ruft alle Session-Dokumente ab, die dem übergebenen Filter entsprechen, und wandelt sie in eine Liste von Session-Objekten um. - * - * @param filter Der Filter als Bson-Objekt. - * @return Eine Liste der Sessions, die dem Filter entsprechen. - */ public List retrieveAllSessions(Bson filter) { List speeches = sessionsCollection.find(filter).into(new ArrayList<>()); List result = new ArrayList<>(); @@ -758,11 +656,6 @@ public class MongoDBHandler { return result; } - /** - * Ruft alle AgendaItem-Dokumente ohne Filter ab und wandelt sie in eine Liste von AgendaItem-Objekten um. - * - * @return Eine Liste aller AgendaItems. - */ public List retrieveAllAgendaItems() { List agendaItems = agendaItemsCollection.find().into(new ArrayList<>()); List result = new ArrayList<>(); @@ -773,12 +666,6 @@ public class MongoDBHandler { return result; } - /** - * Ruft alle AgendaItem-Dokumente ab, die dem übergebenen Filter entsprechen, und wandelt sie in eine Liste von AgendaItem-Objekten um. - * - * @param filter Der Filter als Bson-Objekt. - * @return Eine Liste der AgendaItems, die dem Filter entsprechen. - */ public List retrieveAllAgendaItems(Bson filter) { List speeches = agendaItemsCollection.find(filter).into(new ArrayList<>()); List result = new ArrayList<>(); @@ -789,13 +676,6 @@ public class MongoDBHandler { return result; } - /** - * Aktualisiert das Speech-Dokument, das durch den speechKey identifiziert wird, - * und setzt das Feld "xmiData" auf den übergebenen xmiContent. - * - * @param speechKey Der Schlüssel der Rede. - * @param xmiContent Der XMI-Inhalt als String. - */ public void updateXmiData(String speechKey, String xmiContent) { speechesCollection.updateOne( Filters.eq("speechKey", speechKey), @@ -803,9 +683,6 @@ public class MongoDBHandler { ); } - /** - * Löscht alle Dokumente, die mit den Reden, Sessions, AgendaItems (und History) zusammenhängen. - */ public void deleteSpeechRelatedDocuments() { speechesCollection.deleteMany(new Document()); sessionsCollection.deleteMany(new Document()); @@ -813,11 +690,6 @@ public class MongoDBHandler { //historyCollection.deleteMany(new Document()); } - /** - * Führt einen Bulk-Write für NLP-bezogene Updates in der Speech-Collection aus. - * - * @param bulkOperations Eine Liste von Bulk-Update-Operationen. - */ public void bulkWriteNlpData(List> bulkOperations) { if (!bulkOperations.isEmpty()) { BulkWriteOptions options = new BulkWriteOptions().ordered(false); @@ -835,11 +707,6 @@ public class MongoDBHandler { } } - /** - * Zählt die Anzahl der Speech-Dokumente, die ein Feld "analysisResults" besitzen. - * - * @return Die Anzahl der Speech-Dokumente mit einem "analysisResults"-Feld. - */ public long checkAnalysisResultsField() { return speechesCollection.countDocuments(Filters.exists("analysisResults")); } @@ -856,12 +723,6 @@ public class MongoDBHandler { return loadMemberImageFromFileByName(firstName, name); } - /** - * Lädt das Bild eines Mitglieds aus dem Ordner resources/membersOfParliamentImages anhand des Namens. - * @param firstName Der Vorname des Mitglieds. - * @return das Bild des Mitglieds als base64-String. - * Implementiert von Jonas - **/ public String loadMemberImageFromFileByName(String firstName, String name) { // get the member photo from the resources/membersOfParliamentImages folder File photo = new File(MEMBER_IMAGES_DIR + name + "_" + firstName + ".jpg"); @@ -879,12 +740,6 @@ public class MongoDBHandler { return image_data; } - /** - * Lädt das Bild eines Mitglieds aus dem Ordner resources/membersOfParliamentImages anhand des Namens. - * @param memberId Der Vorname des Mitglieds. - * @param base64String Der base64-String des Bildes. - * Implementiert von Jonas - **/ public void uploadMemberPhoto(String memberId, String base64String) { if (memberPhotoCollection.find(eq("memberId", memberId)).first() != null) { Logger.warn("Member photo for " + memberId + " already exists in the database. Overwriting..."); @@ -895,41 +750,7 @@ public class MongoDBHandler { memberPhotoCollection.insertOne(photoDocument); } - /** - * Lädt die Bilder aller Mitglieder in die Datenbank. - * Implementiert von Jonas - **/ public void uploadMemberPhotos() { - // get a list of the string of first and last name of all members from the DB - // only fetch the first and lastname - List speakers = speakerCollection.find().projection(Projections.include("_id", "name", "firstName")).into(new ArrayList<>()); - - try { - Logger.pink(getSessionCookies()); - } catch (IOException e) { - Logger.error("Failed to get session cookies: " + e.getMessage()); - } - - for (Document speaker : speakers) { - String memberId = speaker.getString("_id"); - String name = speaker.getString("name"); - String firstName = speaker.getString("firstName"); - - try { - String base64String = fetchMemberImageBase64FromNameString(firstName + " " + name); - uploadMemberPhoto(memberId, base64String); - Logger.debug("Uploaded member photo for " + firstName + " " + name); - } catch (IOException e) { - Logger.error("Failed to fetch member image for " + firstName + " " + name + ": " + e.getMessage()); - } - } - } - - /** - * Lädt die Bilder aller Mitglieder aus dem Ordner resources/membersOfParliamentImages in die Datenbank. - * Implementiert von Jonas - **/ - public void uploadMemberPhotosFromResourceFolder() { Logger.info("Found " + PPRUtils.listFilesInDirectory(MEMBER_IMAGES_DIR).size() + " member photos to upload."); // loop over file names in the directory // for each file name, extract the name of the member @@ -946,14 +767,8 @@ public class MongoDBHandler { } } - /** - * Überprüft, ob eine Session mit der angegebenen Session-Nummer in der sessionsCollection existiert. - * - * @param sessionNumber Die Session-Nummer als String. - * @return true, wenn mindestens ein Dokument mit der angegebenen sessionId existiert, andernfalls false. - */ public boolean sessionExists(String sessionNumber) { - Document filter = new Document("sessionId", Integer.valueOf(sessionNumber)); + Document filter = new Document("sessionNumber", sessionNumber); long count = sessionsCollection.countDocuments(filter); return count > 0; } @@ -966,20 +781,8 @@ public class MongoDBHandler { return photoDocument.getString("base64"); } - /** - * Schließt die MongoDB-Verbindung. - */ public void close() { mongoClient.close(); } - /** - * Gibt ein einzelnes Speech-Dokument zurück, das dem angegebenen Filter entspricht. - * - * @param filter Der Filter als Document. - * @return Das erste Speech-Dokument, das dem Filter entspricht, oder null, wenn keines gefunden wird. - */ - public Document getSpeech(Document filter) { - return speechesCollection.find(filter).first(); - } } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoObjectFactory.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoObjectFactory.java index c1fd65c..9a45a4f 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoObjectFactory.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoObjectFactory.java @@ -13,7 +13,7 @@ public class MongoObjectFactory { private static MongoObjectFactory factory = null; /** - *Gesamte File implementiert von Valentin + * * @return MongoObjectFactory */ public static MongoObjectFactory getFactory() { @@ -28,23 +28,23 @@ public class MongoObjectFactory { * ===================== */ public Document createBiografischeAngaben(BiografischeAngaben entity) { - return new BiographicalInformation_MongoDB_Impl().createEntity(entity); + return new BiografischeAngaben_Mongo_Impl().createEntity(entity); } public Document createInstitution(Institution entity) { - return new Institution_MongoDB_Impl().createEntity(entity); + return new Institution_Mongo_Impl().createEntity(entity); } public Document createMdb(Mdb entity) { - return new Mdb_MongoDB_Impl().createEntity(entity); + return new Mdb_Mongo_Impl().createEntity(entity); } public Document createMdbName(MdbName entity) { - return new MdbName_MongoDB_Impl().createEntity(entity); + return new MdbName_Mongo_Impl().createEntity(entity); } public Document createWahlperiode(Wahlperiode entity) { - return new LegislativePeriod_MongoDB_Impl().createEntity(entity); + return new Wahlperiode_Mongo_Impl().createEntity(entity); } /* @@ -52,14 +52,14 @@ public class MongoObjectFactory { * ======================== */ public Document createSpeaker(Speaker entity) { - return new Speaker_MongoDB_Impl().createEntity(entity); + return new Speaker_Mongo_Impl().createEntity(entity); } public Document createMembership(Membership entity) { - return new Membership_MongoDB_Impl().createEntity(entity); + return new Membership_Mongo_Impl().createEntity(entity); } public List createMemberships(List list) { - return new Membership_MongoDB_Impl().createList(list); + return new Membership_Mongo_Impl().createList(list); } } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoOperations.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoOperations.java index 627c782..4fd3dc8 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoOperations.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoOperations.java @@ -4,10 +4,6 @@ import org.bson.Document; import java.util.List; -/** - * Implementiert von Valentin - * @param - */ public interface MongoOperations { MongoObjectFactory factory = MongoObjectFactory.getFactory(); public Document createEntity(T entity); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoPprUtils.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoPprUtils.java index 87aa8fe..d86c4d9 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoPprUtils.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/MongoPprUtils.java @@ -1,33 +1,24 @@ package org.texttechnologylab.project.gruppe_05_1.database; -import com.mongodb.client.*; -import com.mongodb.client.model.*; -import io.javalin.http.Context; +import com.mongodb.client.FindIterable; +import com.mongodb.client.MongoCollection; +import com.mongodb.client.MongoCursor; import org.bson.Document; -import org.bson.conversions.Bson; -import org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_MongoDB_Impl; -import org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speech_MongoDB_Impl; +import org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Speech_MongoDB_Impl; import org.texttechnologylab.project.gruppe_05_1.domain.html.HtmlSpeech; import org.texttechnologylab.project.gruppe_05_1.domain.html.Parlamentarier; import org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails; -import org.texttechnologylab.project.gruppe_05_1.domain.nlp.NamedEntity; -import org.texttechnologylab.project.gruppe_05_1.domain.nlp.Token; -import org.texttechnologylab.project.gruppe_05_1.domain.html.SpeechOverview; +import org.texttechnologylab.project.gruppe_05_1.domain.nlp.*; import org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership; import org.texttechnologylab.project.gruppe_05_1.domain.speech.SpeechMetaData; import org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils; import org.texttechnologylab.project.gruppe_05_1.util.Logger; -import org.texttechnologylab.project.gruppe_05_1.util.PPRUtils; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech; -import java.io.IOException; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.*; -import java.util.stream.Collectors; - -import static com.mongodb.client.model.Filters.eq; /** * Diese Klasse beinhaltet Mongo-Utilities, welche spezifisch für die PPR-Datenstrukturen sind. @@ -47,7 +38,6 @@ public class MongoPprUtils { public static final String HISTORY_COLLECTION_NAME = "history"; public static final String PICTURES_COLLECTION_NAME = "pictures"; public static final String COMMENT_COLLECTION_NAME = "comment"; - public static final String METADATA_COLLECTION_NAME = "metadata"; private static MongoCollection speakerCollection = null; private static MongoCollection speechCollection = null; @@ -55,20 +45,12 @@ public class MongoPprUtils { private static MongoCollection agendaItemsCollection = null; private static MongoCollection picturesCollection = null; private static MongoCollection commentCollection = null; - private static MongoCollection metadataCollection = null; - /** - * Implementiert von Valentin - * @return - */ public static MongoCollection getSpeakerCollection() { if (speakerCollection == null) speakerCollection = MongoDBHandler.getMongoDatabase().getCollection(SPEAKER_COLLECTION_NAME); return speakerCollection; } - /** - * Implementiert von Valentin - * @return - */ + public static MongoCollection getSpeechCollection() { if (speechCollection == null) speechCollection = MongoDBHandler.getMongoDatabase().getCollection(SPEECH_COLLECTION_NAME); return speechCollection; @@ -90,16 +72,6 @@ public class MongoPprUtils { } /** - * Implementiert von Valentin - * @return - */ - public static MongoCollection getMetadataCollection() { - if (metadataCollection == null) metadataCollection = MongoDBHandler.getMongoDatabase().getCollection(METADATA_COLLECTION_NAME); - return metadataCollection; - } - - /** - * Implementiert von Valentin * Create the Speaker Collection and useful indices for it */ public static void createIndexForSpeakerCollection() { @@ -110,7 +82,6 @@ public class MongoPprUtils { } /** - * Implementiert von Valentin * Create the Speech Collection and useful indices for it */ public static void createIndexForSpeechCollection() { @@ -120,7 +91,6 @@ public class MongoPprUtils { /** - * Implementiert von Valentin * Truncate the Speaker Collection. * Note that it is quicker (and saves space) to drop and re-create rather than removing all documents using "remove({})" */ @@ -137,7 +107,6 @@ public class MongoPprUtils { /** - * Implementiert von Valentin * Holt alle Parlamentarier, die einen Suchkriterium erfüllen. * Das Suchkriterium wird auf allen Feldern angewandt: Vorname, Nachname, Partei. * Ist das Suchkriterium leer, werden alle Parlamentarier zurückgeliefert @@ -176,204 +145,8 @@ public class MongoPprUtils { return plist; } - /** - * Fetched alle Parlamentarier, die einen Suchkriterium erfüllen. - * Das Suchkriterium wird auf allen Feldern angewandt: Vorname, Nachname, Partei. - * Ist das Suchkriterium leer, werden alle Parlamentarier zurückgeliefert - * Implementiert von Jonas - * @param ctx Session Context - * @return List - */ - public static List getFilteredMembers(Context ctx) { - // Get optional filter arguments - String memberIdParam = ctx.queryParam("memberId"); - Integer memberId = (memberIdParam != null) ? Integer.parseInt(memberIdParam) : null; - - String name = ctx.queryParam("name"); - - String lastName = ctx.queryParam("lastName"); - - String firstName = ctx.queryParam("firstName"); - - String title = ctx.queryParam("title"); - - String dateOfBirth = ctx.queryParam("dateOfBirth"); - - String dateOfDeath = ctx.queryParam("dateOfDeath"); - - String placeOfBirth = ctx.queryParam("placeOfBirth"); - - String gender = ctx.queryParam("gender"); - - String religion = ctx.queryParam("religion"); - - String party = (!Objects.equals(ctx.queryParam("party"), "")) ? ctx.queryParam("party") : null; - - String firstLegislativePeriod = ctx.queryParam("firstLegislativePeriod"); - Integer firstLegislativePeriodInt = (firstLegislativePeriod != null) ? Integer.parseInt(firstLegislativePeriod) : null; - - String lastLegislativePeriod = ctx.queryParam("lastLegislativePeriod"); - Integer lastLegislativePeriodInt = (lastLegislativePeriod != null) ? Integer.parseInt(lastLegislativePeriod) : null; - - List filters = new ArrayList<>(); - if (memberId != null) filters.add(eq("id", memberId)); - if (name != null) filters.add(Filters.regex("name", ".*" + name + ".*", "i")); - if (lastName != null) filters.add(Filters.regex("lastName", ".*" + lastName + ".*", "i")); - if (firstName != null) filters.add(Filters.regex("firstName", ".*" + firstName + ".*", "i")); - if (title != null) filters.add(Filters.regex("title", ".*" + title + ".*", "i")); - if (dateOfBirth != null) filters.add(eq("dateOfBirth", dateOfBirth)); - if (dateOfDeath != null) filters.add(eq("dateOfDeath", dateOfDeath)); - if (placeOfBirth != null) filters.add(Filters.regex("placeOfBirth", ".*" + placeOfBirth + ".*", "i")); - if (gender != null) filters.add(eq("gender", gender)); - if (religion != null) filters.add(eq("religion", religion)); - if (party != null) filters.add(eq("party", party)); - if (firstLegislativePeriodInt != null) - filters.add(eq("firstLegislativePeriod", firstLegislativePeriodInt)); - if (lastLegislativePeriodInt != null) - filters.add(eq("lastLegislativePeriod", lastLegislativePeriodInt)); - - // Check if the filters list is empty - Bson filter; - if (filters.isEmpty()) { - filter = Filters.empty(); // No filters, match all documents - } else { - filter = Filters.and(filters); // Combine all filters with AND - } - Bson projection = Projections.fields(Projections.exclude("image_data")); - - try { - List members = retrieveAllMembersOfParliament(filter, projection); - ctx.json(members); - return members; - } catch (IOException e) { - ctx.status(500); - ctx.result("Server error occurred"); - return null; - } - } /** - * Fetched alle Parlamentarier aus der Datenbank, die einen Filter erfüllen - * es wird nur die gegebene Projektion zurückgegeben - * Implementiert von Jonas - * @param filter Filter, der auf die Datenbank angewendet wird - * @param projection Projektion, die auf die Datenbank angewendet wird - * @return Liste von Parlamentariern - **/ - public static List retrieveAllMembersOfParliament(Bson filter, Bson projection) throws IOException { - List speeches = getSpeakerCollection().find(filter).projection(projection).into(new ArrayList<>()); - List result = new ArrayList<>(); - for (Document speech : speeches) { - Parlamentarier parlamentarier = new Parlamentarier(); - parlamentarier.setId(speech.getString("_id")); - parlamentarier.setVorname(speech.getString("firstName")); - parlamentarier.setNachname(speech.getString("name")); - parlamentarier.setPartei(speech.getString("party")); - result.add(parlamentarier); - } - - return result; - } - - - /** - * Implementiert von Valentin - * Hole alle Reden gefiltert nach den Form-Parameter - * @param ctx Session Context, aus dem man alle Parameter abfragen kann - * @return - */ - public static List getFilteredSpeechesOverview(Context ctx) { - - String name = ctx.queryParam("name"); - - String party = (!Objects.equals(ctx.queryParam("party"), "")) ? ctx.queryParam("party") : null; - String topic = (!Objects.equals(ctx.queryParam("topic"), "")) ? ctx.queryParam("topic") : null; - - - List filters = new ArrayList<>(); - if (name != null) filters.add(Filters.regex("speakerName", ".*" + name + ".*", "i")); - if (party != null) filters.add(Filters.regex("fraction", ".*" + party + ".*", "i")); - - Bson filter; - if (filters.isEmpty()) { - filter = Filters.empty(); - } else { - filter = Filters.and(filters); - } - - List result = new ArrayList<>(); - - MongoCollection collection = getSpeechCollection(); - - Document projection = new Document("speechKey", 1) - .append("speakerId", 1) - .append("dateTimeString", 1) - .append("speakerName", 1) - .append("fraction", 1) - .append("agendaTitel", 1); - - List docs = collection.find(filter) - .projection(projection) - .sort(Sorts.descending("dateTime")) - .into(new ArrayList<>()); - - for (Document doc : docs) { - result.add(new SpeechOverview( - doc.getString("speechKey"), - doc.getInteger("speakerId"), - doc.getString("dateTimeString"), - doc.getString("speakerName"), - doc.getString("fraction"), - doc.getString("agendaTitel") - )); - } - - return result; - } - - /** - * Implementiert von Valentin - * Holt alle Reden eines Parlamentariers - * @param speakerId - * @return - */ - public static List getSpeechesOverviewForSpeaker(Integer speakerId) { - - List result = new ArrayList<>(); - - MongoCollection collection = getSpeechCollection(); - - Document projection = new Document("speechKey", 1) - .append("speakerId", 1) - .append("dateTimeString", 1) - .append("speakerName", 1) - .append("fraction", 1) - .append("agendaTitel", 1); - - Bson filter = Filters.eq("speakerId", speakerId); - - List docs = collection.find(filter) - .projection(projection) - .sort(Sorts.descending("dateTime")) - .into(new ArrayList<>()); - - for (Document doc : docs) { - result.add(new SpeechOverview( - doc.getString("speechKey"), - doc.getInteger("speakerId"), - doc.getString("dateTimeString"), - doc.getString("speakerName"), - doc.getString("fraction"), - doc.getString("agendaTitel") - )); - } - - return result; - } - - - /** - * Implementiert von Valentin * Liest einen Parlamentarier von der MongoDB * @param doc - MongoDB Dokument eines Parlamentariers * @return Parlamentarier @@ -424,24 +197,8 @@ public class MongoPprUtils { return readParlamentarierDetailsFromSpeaker(doc); } - /** - * Holt einen Speaker aus der Datenbank - * Implementiert von Jonas - * @param id ID des Parlamentariers - * @return Speaker - */ - public static Speaker_MongoDB_Impl getSpeakerById(String id) { - Logger.debug("ID: " + id); - Document doc = MongoDBHandler.findFirstDocumentInCollection(getSpeakerCollection(), "_id", id); - Logger.debug("Speaker: " + doc); - Speaker_MongoDB_Impl speaker = new Speaker_MongoDB_Impl().createSpeakerMongoDBImpl(doc); - Logger.debug("Speaker parsed" + speaker); - return speaker; - } - /** - * Implementiert von Valentin * Holt die Details eines Parlamentariers * @param id Parlamentarier-ID (Integer) * @return ParlamentarierDetails @@ -549,9 +306,9 @@ public class MongoPprUtils { // Speech + // TODO: kopiere die Speech-Sachen von Übung 4 hierher! /** - * Implementiert von Valentin * Aufzählen, wie viele Reden eines bestimmten Redners gespeichert sind * @param speakerId * @return Anzahl Reden @@ -562,7 +319,6 @@ public class MongoPprUtils { /** - * Implementiert von Valentin * Liefert alle Reden eines Redners zurück * @param speakerId * @return Alle Reden eines Redners @@ -574,51 +330,13 @@ public class MongoPprUtils { List docs = getSpeechCollection().find(filter).into(new ArrayList<>()); for (Document doc : docs) { - speeches.add(new Speech_MongoDB_Impl(doc, true)); + speeches.add(new Speech_MongoDB_Impl(doc)); } return speeches; } /** - * Implementiert von Valentin - * Liefert alle Reden zurück - * Die Auswahl kann durch einen (textuellen) Filter eingeschränkt werden - * @param filter - * @return - */ - public static List getSpeeches(String filter) { - List speeches = new ArrayList<>(); - - MongoCursor cursor; - - if (filter== null || filter.isBlank()) { - cursor = getSpeechCollection().find().iterator(); - } else { - String pattern = ".*" + filter + ".*"; - Document searchDocument = new Document("$or", List.of( - new Document("speakerName", new Document("$regex", pattern).append("$options", "i")), - new Document("fraction", new Document("$regex", pattern).append("$options", "i")), - new Document("speechKey", new Document("$regex", pattern).append("$options", "i")) - )); - cursor = getSpeechCollection().find(searchDocument).cursor(); - } - - try { - while (cursor.hasNext()) { - speeches.add(new Speech_MongoDB_Impl(cursor.next(), false)); - } - } catch (Throwable t) { - Logger.error(String.valueOf(t)); - } finally { - cursor.close(); - } - - return speeches; - } - - /** - * Implementiert von Valentin * Liefert Metadaten (aber keine Inhalte!) für alle Reden eines Redners zurück. * Als Metadaten zählen das Datum, Agenda-ID etc. * @param speakerId @@ -639,7 +357,18 @@ public class MongoPprUtils { // aus "sessions" Collection - augmentSpeechMetaDataFromSession(sessionId, md); + String dateTimeString = getSessionDateTime(sessionId); + if (dateTimeString != null) { + md.setDateTimeString(dateTimeString); + LocalDateTime tmp = GeneralUtils.parseDateTime(dateTimeString, "dd.MM.yyyy HH:mm"); + if (tmp == null) { + tmp = GeneralUtils.parseDateTime(dateTimeString, "dd.MM.yyyy H:mm"); + if (tmp == null) { + Logger.error(dateTimeString + " could not be parsed"); + } + } + md.setDateTime(tmp); + } // aus "agendaItems" Collection int agendaItemId = speech.getAgendaItemId(); @@ -652,72 +381,11 @@ public class MongoPprUtils { // Sortiere nach Datum, absteigend speechMetaDataList.sort((md1, md2) -> { - if ((md2.getDateTime() == null) && (md1.getDateTime()) == null) return 0; - if (md2.getDateTime() == null) return -1; - if (md1.getDateTime() == null) return 1; - return md2.getDateTime().compareTo(md1.getDateTime()); - }); - - return speechMetaDataList; - } - - /** - * Implementiert von Valentin - * Liefert Metadaten (aber keine Inhalte!) für alle Reden zurück. - * Die Auswahl kann durch einen (textuellen) Filter eingeschränkt werden - * Als Metadaten zählen das Datum, Agenda-ID etc. - * @param filter - * @return - */ - public static List getSpeechesMetadata(String filter) { - List speechMetaDataList = new ArrayList<>(); - - MongoCursor cursor; - - if (filter== null || filter.isBlank()) { - cursor = getSpeechCollection().find().iterator(); - } else { - String pattern = ".*" + filter + ".*"; - Document searchDocument = new Document("$or", List.of( - new Document("speakerName", new Document("$regex", pattern).append("$options", "i")), - new Document("fraction", new Document("$regex", pattern).append("$options", "i")), - new Document("speechKey", new Document("$regex", pattern).append("$options", "i")) - )); - cursor = getSpeechCollection().find(searchDocument).cursor(); - } - - try { - while (cursor.hasNext()) { - Document doc = cursor.next(); - SpeechMetaData smd = new SpeechMetaData(); - smd.setSpeechKey(doc.getString("speechKey")); - Date dateTimeInMongo = doc.getDate("dateTime"); - smd.setDateTime(LocalDateTime.ofInstant(dateTimeInMongo.toInstant(), ZoneId.systemDefault())); - smd.setDateTimeString(doc.getString("dateTimeString")); - smd.setSpeakerName(doc.getString("speakerName")); - String fraktion = (doc.getString("fraction")); - if (fraktion == null) { - smd.setFraktion(PPRUtils.PARTEILOS_KUERZEL); - } else { - smd.setFraktion(fraktion); - } - smd.setAgendaTitle(doc.getString("agendaTitel")); - smd.setSpeakerId(doc.getInteger("speakerId")); - - speechMetaDataList.add(smd); + try { + return md2.getDateTime().compareTo(md1.getDateTime()); + } catch (NullPointerException e) { + return 0; } - } catch (Throwable t) { - Logger.error(String.valueOf(t)); - } finally { - cursor.close(); - } - - // Sortiere nach Datum, absteigend - speechMetaDataList.sort((md1, md2) -> { - if ((md2.getDateTime() == null) && (md1.getDateTime()) == null) return 0; - if (md2.getDateTime() == null) return -1; - if (md1.getDateTime() == null) return 1; - return md2.getDateTime().compareTo(md1.getDateTime()); }); return speechMetaDataList; @@ -725,110 +393,6 @@ public class MongoPprUtils { /** - * Implementiert von Valentin - * Holt die Redeinformationen aus der Datenbank, die wichtig sind, um eine Liste der Reden in HTML darzustellen - * @return - */ - public static List getSpeechOverview() { - - List result = new ArrayList<>(); - - MongoCollection collection = getSpeechCollection(); - - Document projection = new Document("speechKey", 1) - .append("speakerId", 1) - .append("dateTimeString", 1) - .append("speakerName", 1) - .append("fraction", 1) - .append("agendaTitel", 1); - - List docs = collection.find() - .projection(projection) - .sort(Sorts.descending("dateTime")) - .into(new ArrayList<>()); - - for (Document doc : docs) { - result.add(new SpeechOverview( - doc.getString("speechKey"), - doc.getInteger("speakerId"), - doc.getString("dateTimeString"), - doc.getString("speakerName"), - doc.getString("fraction"), - doc.getString("agendaTitel") - )); - } - - return result; - } - - /** - * Implementiert von Valentin - * Holt die Redeinformationen aus der Datenbank, die wichtig sind, um eine Liste der Reden eines Parlamentariers in HTML darzustellen - * @param speakerId - * @return - */ - public static List getSpeechOverviewBySpeaker(Integer speakerId) { - - List result = new ArrayList<>(); - - MongoCollection collection = getSpeechCollection(); - - Document projection = new Document("speechKey", 1) - .append("speakerId", 1) - .append("dateTimeString", 1) - .append("speakerName", 1) - .append("fraction", 1) - .append("agendaTitel", 1); - - Bson filter = Filters.eq("speakerId", speakerId); - - List docs = collection.find(filter) - .projection(projection) - .sort(Sorts.descending("dateTime")) - .into(new ArrayList<>()); - - for (Document doc : docs) { - result.add(new SpeechOverview( - doc.getString("speechKey"), - doc.getInteger("speakerId"), - doc.getString("dateTimeString"), - doc.getString("speakerName"), - doc.getString("fraction"), - doc.getString("agendaTitel") - )); - } - - return result; - } - - /** - * Implementiert von Valentin - * Füge Rede-Metadaten (welche in der Session-Collection stehen) der Rede hinzu. - * Achtung: Redezeit ist in der Datenbank in unterschiedlichen Formaten vorhanden. - * @param sessionId - * @param md - */ - public static void augmentSpeechMetaDataFromSession(int sessionId, SpeechMetaData md) { - String dateTimeString = getSessionDateTime(sessionId); - if (dateTimeString != null) { - md.setDateTimeString(dateTimeString); - - for (String format : Arrays.asList("dd.MM.yyyy HH:mm", - "dd.MM.yyyy H:mm", - "dd.MM.yyyy HH.mm", - "dd.MM.yyyy H.mm")) { - LocalDateTime tmp = GeneralUtils.parseDateTime(dateTimeString,format); - if (tmp != null) { - md.setDateTime(tmp); - return; - } - } - Logger.error(dateTimeString + " could not be parsed"); - } - } - - /** - * Implementiert von Valentin * Liefert das Datum und die Uhrzeit einer Sitzung zurück * @param sessionId * @return @@ -844,7 +408,6 @@ public class MongoPprUtils { } /** - * Implementiert von Valentin * Liefert den Agenda-Titel zurück * @param sessionId * @return @@ -855,13 +418,11 @@ public class MongoPprUtils { if ((iter == null || (iter.first() == null))) { return "(kein Agendatitel)"; } else { - String agendaTitel = (String) iter.first().get("title"); - return String.format("%d / %s", sessionId, agendaTitel); + return (String) iter.first().get("title"); } } /** - * Implementiert von Valentin * Liefert die Rede-Informationen für die Anzeige einer Rede: * - die Rede-ID * - Name und Fraktion des Redners @@ -869,321 +430,20 @@ public class MongoPprUtils { * @param key: Rede ID * @return */ - public static HtmlSpeech getHtmlSpeechByKey(String key) { + public static HtmlSpeech getSpeechByKey(String key) { Document filter = new Document("speechKey", key); Document speechDoc = getSpeechCollection().find(filter).first(); - if (speechDoc == null) { - Logger.error("Rede " + key + " nicht gefunden"); - return null; - } return new HtmlSpeech(speechDoc); } - /** - * Implementiert von Jonas - * Liefert die Rede-Informationen für die Anzeige einer Rede - * @param key: Rede ID - * @return Speech - */ - public static Speech getSpeechByKey(String key) { - Document filter = new Document("speechKey", key); - Document speechDoc = getSpeechCollection().find(filter).first(); - - if (speechDoc == null) { - Logger.error("Rede " + key + " nicht gefunden"); + public static String getMemberPhoto(String memberId) { + Document filter = new Document("memberId", memberId); + Document pictureDoc = getPicturesCollection().find(filter).first(); + if (pictureDoc == null) { return null; - } - - return new Speech_MongoDB_Impl(speechDoc, true); - } - - // getMemberPhoto - - /** - * Liefert das Bild eines Abgeordneten zurück - * @param id - * @return Base64-encoded Photo - */ - public static String getMemberPhoto(String id) { - Document doc = MongoDBHandler.findFirstDocumentInCollection(getPicturesCollection(), "memberId", id); - if (doc == null) { - return null; - } else return doc.getString("base64"); - } - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Metadata - - - /** - * Implementiert von Valentin - * Aktualisiert (or erzeugt, falls nicht bereits vorhanden) diverse Metadaten: - * - Die Liste der Parteien/Fraktionen, wie sie im Speaker-Collection stehen - * - Die Liste der Parteien/Fraktionen, wie sie im Speech-Collection stehen (diese Listen sind recht unterschiedlich) - * - Topics nach NLP-Analyse der Reden - */ - public static void rebuildMetadata() { - MongoDatabase db = MongoDBHandler.getMongoDatabase(); - - Logger.info("Collecting Partei/Fraktion Information"); - List distinctPartiesOfSpeakers = getSpeakerCollection().distinct("party", String.class).into(new java.util.ArrayList<>()); - List distinctPartiesFromSpeeches = getSpeechCollection().distinct("fraction", String.class).into(new java.util.ArrayList<>()); - - Logger.info("Updating Metadata Collection: begin"); - - MongoDBHandler.createCollection(db, METADATA_COLLECTION_NAME); - MongoCollection metadataCollection = getMetadataCollection(); - - Document filterPartiesFromSpeeches = new Document("type", "parties_from_speeches"); - Document partiesDocFromSpeeches = MongoDBHandler.createDocument(false, Map.of("type", "parties_from_speeches", - "value", distinctPartiesFromSpeeches)); - metadataCollection.replaceOne(filterPartiesFromSpeeches, partiesDocFromSpeeches, new com.mongodb.client.model.ReplaceOptions().upsert(true)); - - Document filterPartiesOfSpeakers = new Document("type", "parties_of_speakers"); - Document partiesDocOfSpeakers = MongoDBHandler.createDocument(false, Map.of("type", "parties_of_speakers", - "value", distinctPartiesOfSpeakers)); - metadataCollection.replaceOne(filterPartiesOfSpeakers, partiesDocOfSpeakers, new com.mongodb.client.model.ReplaceOptions().upsert(true)); - - - Logger.info("Enriching Speech Information: begin"); - enrichSpeechDocuments(); - Logger.info("Enriching Speech Information: end"); - - Logger.info("Collecting Topics Information"); - - Document unwindStage = new Document("$unwind", "$topics"); // Deconstruct the "topics" array - Document groupStage = new Document("$group", new Document("_id", "$topics")); // Group by "topics" - Document projectStage = new Document("$project", new Document("topic", "$_id").append("_id", 0)); // Optionally format the result - - AggregateIterable result = getSpeechCollection().aggregate(Arrays.asList(unwindStage, groupStage, projectStage)); - Set topics = new HashSet<>(); - for (Document doc : result) { - topics.add(doc.getString("topic")); - } - - Document filterTopics = new Document("type", "topics"); - Document topicsDoc = MongoDBHandler.createDocument(false, Map.of("type", "topics", - "value", topics)); - metadataCollection.replaceOne(filterTopics, topicsDoc, new com.mongodb.client.model.ReplaceOptions().upsert(true)); - - Logger.info("Updating Metadata Collection: end"); - } - - /** - * Implementiert von Valentin - * @param speakerId - * @return - */ - public static List getSpeechesBySpeakerId(String speakerId) { - List speechIds = new ArrayList<>(); - Document filter = new Document("speakerId", Integer.parseInt(speakerId)); - List docs = getSpeechCollection().find(filter).into(new ArrayList<>()); - for (Document doc : docs) { - speechIds.add(new Speech_MongoDB_Impl(doc, true)); - } - return speechIds; - } - - /** - * Implementiert von Valentin - * @return - */ - public static List getAllSpeeches() { - List speechIds = new ArrayList<>(); - Document filter = new Document(); - List docs = getSpeechCollection().find(filter).into(new ArrayList<>()); - for (Document doc : docs) { - speechIds.add(new Speech_MongoDB_Impl(doc, true)); - } - return speechIds; - } - - /** - * Implementiert von Jonas - * Liefert alle Reden zurück, die ein bestimmtes Topic haben - * @param topic Topic der Reden - * @return Liste von Reden - */ - public static List getAllSpeechesWithTopic(String topic) { - List speechIds = new ArrayList<>(); - Document filter = new Document("analysisResults.topics.topic", topic); - List docs = getSpeechCollection().find(filter).into(new ArrayList<>()); - for (Document doc : docs) { - speechIds.add(new Speech_MongoDB_Impl(doc, true)); - } - return speechIds; - } - - /** - * Implementiert von Jonas - * Liefert eine Map der POS Einträge und deren Häufigkeit für eine Rede - * @param speechId ID der Rede - * @return Map POS Einträge und deren Häufigkeit - */ - public static Map getPOSInformationCardinalitiesForSpeechById(String speechId) { - List tokens = getHtmlSpeechByKey(speechId).getNlp().getTokens(); - Map posCounts = Token.countPOS(tokens); - - List posList = posCounts.entrySet().stream() - .map(entry -> new Token(entry.getKey(), String.valueOf(entry.getValue()), "")) // Lemma remains empty - .collect(Collectors.toList()); - - return posCounts; - } - - /** - * Implementiert von Jonas - * Liefert eine Map der Named Entities und deren Häufigkeit für eine Rede - * @param speechId ID der Rede - * @return Map Named Entities und deren Häufigkeit - */ - public static Map getNamedEntitiesInformationCardinalitiesForSpeechById(String speechId) { - Map> namedEntitiesMapOfMaps = new HashMap<>(); - - for (NamedEntity ne : getHtmlSpeechByKey(speechId).getNlp().getNamedEntities()) { - String type = ne.getType(); - String text = ne.getText(); - - if (namedEntitiesMapOfMaps.containsKey(type)) { - // Named Entity Type bekannt... - Map typeAppearance = namedEntitiesMapOfMaps.get(type); - if (typeAppearance.containsKey(text)) { - // ... und der Text auch bekannt --> erhöhe die Anzahl um 1 - typeAppearance.replace( - text, - typeAppearance.get(text) + 1) ; - } else { - typeAppearance.put(text, 1); - } - } else { - // Named Entity Type unbekannt: erstelle einen neuen Eintrag für Type sowie einen Eintrag für den ihm gehörigen Text - Map firstTextAppearance = new HashMap<>(); - firstTextAppearance.put(text, 1); - namedEntitiesMapOfMaps.put(type, firstTextAppearance); - } - } - - return namedEntitiesMapOfMaps.get("CARDINAL"); // needs fixing - } - - /** - * Implementiert von Valentin - * Liefert die Liste aller Parteien/Fraktionen, welche in der Liste der Parlamentarier stehen, zurück. - * Diese Liste dient zur Filterung der Parlamentarier auf der entsprechenden Seite. - * @return List Liste aller Parteien/Fraktionen, welche in der Liste der Parlamentarier stehen - */ - public static List getAllPartiesOfSpeakers() { - Document doc = MongoDBHandler.findFirstDocumentInCollection(getMetadataCollection(), "type", "parties_of_speakers"); - if (doc == null) {return new ArrayList<>();} - else { - return new ArrayList<>(doc.getList("value", String.class)); - } - } - - - public static final List ALL_PARTIES_FROM_SPEECHES = Arrays.asList( - "Afd", "BSW", "GRÜNEN", "CDU/CSU", "LINKE", "FDP", - "Fraktionslos" /* auch als "fraktionslos" vorhanden!*/, - "SPD", - "keine" /* entspricht den null Wert */ - ); - - /** - * Implementiert von Valentin - * Liefert die Liste aller Parteien/Fraktionen, welche in der Liste der Reden stehen, zurück. - * Diese Liste dient zur Filterung der Reden auf der entsprechenden Seite. - * Da die Datenqualität dieses Feldes extrem schlecht ist, muss man hier etwas tricksen: - * - Für Bündnis 90 / Die Grünen sind 5 unterschiedlichen Schreibweisen vorhanden - * - Für Die Linke sind ebenfalls 5 unterschiedlichen Schreibweisen vorhanden - * - Wegen der unterschiedlichen Schreibweisen muss man für das Frontend mit Pattern Matching arbeiten - * - Bei 6 Reden steht "SPDCDU/CSU". Diese Reden werden dann bei der Filterung nicht berücksichtigt - * - Für 3561 der 25387 Reden wurde keine Partei/Fraktion eingetragen. Diese Zahl ist zu hoch, um sie einfach zu ignorieren, daher der Eintrag "keine" - * - Beide Schreibweise "Fraktionslos" (166 Reden) und "fraktionslos" (311 Reden) sind vorhanden - * @return List Liste aller Parteien/Fraktionen, welche in der Liste der Reden stehen - */ - public static List getAllPartiesFromSpeeches() { - return ALL_PARTIES_FROM_SPEECHES; - } - - /** - * Implementiert von Valentin - * Reichere die Rede-Dokumente um Informationen an: - * - Datum und Uhrzeit der Rede (als DateTime und textuell): dateTimeString , dateTime - * - Agenda-Titel: agendaTitel - * - Die Topics der Rede aus der NLP-Analyse - */ - public static void enrichSpeechDocuments() { - - MongoCollection collection = getSpeechCollection(); - FindIterable documents = collection.find(); - - for (Document doc : documents) { - // Enrich with Info from Session & Agenda, which is always available - if ( ! doc.containsKey("dateTime")) { - int sessionId = doc.getInteger("sessionId"); - int agendaItemId = doc.getInteger("agendaItemId"); - String agendaTitel = getAgendaTitle(sessionId, agendaItemId); - LocalDateTime dateTime = null; - String dateTimeString = getSessionDateTime(sessionId); - if (dateTimeString != null) { - for (String format : Arrays.asList("dd.MM.yyyy HH:mm", - "dd.MM.yyyy H:mm", - "dd.MM.yyyy HH.mm", - "dd.MM.yyyy H.mm")) { - dateTime = GeneralUtils.parseDateTime(dateTimeString,format); - if (dateTime != null) break; - } - if (dateTime == null) {Logger.error(dateTimeString + " could not be parsed");} - } - - Document updateFieldsFromSession = new Document() - .append("dateTime", dateTime) - .append("dateTimeString", dateTimeString) - .append("agendaTitel", agendaTitel); - - collection.updateOne( - new Document("_id", doc.get("_id")), - new Document("$set", updateFieldsFromSession) - ); - } - - // Enrich with NLP Info which is only available after running the analysis - if (( ! doc.containsKey("topics")) - && (doc.containsKey("analysisResults"))) { - Document nlpDoc = (Document) doc.get("analysisResults"); - if (nlpDoc.containsKey("topics")) { - Set topics = new HashSet<>(); - List topicsDocs = nlpDoc.getList("topics", Document.class); - for (Document topicDoc : topicsDocs) { - topics.add(topicDoc.getString("topic")); - } - - Document updateFieldsFromTopics = new Document() - .append("topics", topics); - - collection.updateOne( - new Document("_id", doc.get("_id")), - new Document("$set", updateFieldsFromTopics) - ); - } - - } - } - } - - /** - * Implementiert von Valentin - * Liefert die Liste aller Topics, zurück. - * Diese Liste dient zur Filterung der Reden auf der entsprechenden Seite. - * @return Liste aller Topics - */ - public static List getAllTopics() { - Document doc = MongoDBHandler.findFirstDocumentInCollection(getMetadataCollection(), "type", "topics"); - if (doc == null) {return new ArrayList<>();} - else { - return new ArrayList<>(doc.getList("value", String.class)); + } else { + return (String) pictureDoc.get("base64"); } } } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/AgendaItem_MongoDB_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/speeches/AgendaItem_MongoDB_Impl.java similarity index 91% rename from src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/AgendaItem_MongoDB_Impl.java rename to src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/speeches/AgendaItem_MongoDB_Impl.java index bf94d8f..578255d 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/AgendaItem_MongoDB_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/speeches/AgendaItem_MongoDB_Impl.java @@ -1,12 +1,10 @@ -package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb; +package org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches; import org.bson.Document; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.AgendaItem_File_Impl; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.AgendaItem; -/** - * Datei implementiert von Henry - */ + public class AgendaItem_MongoDB_Impl extends AgendaItem_File_Impl implements AgendaItem { public AgendaItem_MongoDB_Impl(Document mongoDocument) { super( diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/speechline/Comment_MongoDB_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/speeches/Comment_MongoDB_Impl.java similarity index 50% rename from src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/speechline/Comment_MongoDB_Impl.java rename to src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/speeches/Comment_MongoDB_Impl.java index ca37860..64000df 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/speechline/Comment_MongoDB_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/speeches/Comment_MongoDB_Impl.java @@ -1,13 +1,10 @@ -package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.speechline; +package org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches; import org.bson.Document; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Comment_File_Impl; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Comment; -import org.w3c.dom.Element; -/* - * Klassen-Implementieren von Jonas - */ + public class Comment_MongoDB_Impl extends Comment_File_Impl implements Comment { public Comment_MongoDB_Impl(Document mongoDocument) { @@ -17,17 +14,4 @@ public class Comment_MongoDB_Impl extends Comment_File_Impl implements Comment { mongoDocument.getString("commentatorName"), mongoDocument.getString("comment")); } - - public String toTeX() { - return "\\textcolor{blue}{Kommentar}: " + this.getComment() + "\\\\\n"; - } - - public Element toXML(org.w3c.dom.Document doc) { - Element comment = doc.createElement("comment"); - comment.setAttribute("contentId", String.valueOf(this.getContentId())); - comment.setAttribute("speechId", String.valueOf(this.getSpeechId())); - comment.setAttribute("commentatorName", this.getCommentatorName()); - comment.setTextContent(this.getComment()); - return comment; - } } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/speechline/Line_MongoDB_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/speeches/Line_MongoDB_Impl.java similarity index 53% rename from src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/speechline/Line_MongoDB_Impl.java rename to src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/speeches/Line_MongoDB_Impl.java index 6b06bde..ac951aa 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/speechline/Line_MongoDB_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/speeches/Line_MongoDB_Impl.java @@ -1,13 +1,10 @@ -package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.speechline; +package org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches; import org.bson.Document; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Line_File_Impl; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Line; -import org.w3c.dom.Element; -/* - * Klassen-Implementieren von Jonas - */ + public class Line_MongoDB_Impl extends Line_File_Impl implements Line { public Line_MongoDB_Impl(Document mongoDocument) { super( @@ -15,16 +12,4 @@ public class Line_MongoDB_Impl extends Line_File_Impl implements Line { mongoDocument.getInteger("speechId"), mongoDocument.getString("content")); } - - public String toTeX() { - return this.getContent() + "\\\\\n"; - } - - public Element toXML(org.w3c.dom.Document doc) { - Element line = doc.createElement("line"); - line.setAttribute("contentId", String.valueOf(this.getContentId())); - line.setAttribute("speechId", String.valueOf(this.getSpeechId())); - line.setTextContent(this.getContent()); - return line; - } } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/speeches/MemberOfParliament_MongoDB_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/speeches/MemberOfParliament_MongoDB_Impl.java new file mode 100644 index 0000000..71ff61b --- /dev/null +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/speeches/MemberOfParliament_MongoDB_Impl.java @@ -0,0 +1,25 @@ +package org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches; + +import org.bson.Document; +import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.MemberOfParliament_File_Impl; +import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.MemberOfParliament; + + +public class MemberOfParliament_MongoDB_Impl extends MemberOfParliament_File_Impl implements MemberOfParliament { + public MemberOfParliament_MongoDB_Impl(Document mongoDocument) {super( + mongoDocument.getString("name"), + mongoDocument.getString("firstName"), + mongoDocument.getString("title"), + mongoDocument.getString("dateOfBirth"), + mongoDocument.getString("dateOfDeath"), + mongoDocument.getString("placeOfBirth"), + mongoDocument.getString("gender"), + mongoDocument.getString("religion"), + mongoDocument.getInteger("id"), + mongoDocument.getString("party"), + null, + mongoDocument.getInteger("firstLegislativePeriod"), + mongoDocument.getInteger("lastLegislativePeriod"), + mongoDocument.getString("image_data")); + } +} diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Session_MongoDB_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/speeches/Session_MongoDB_Impl.java similarity index 92% rename from src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Session_MongoDB_Impl.java rename to src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/speeches/Session_MongoDB_Impl.java index d66c424..855d076 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Session_MongoDB_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/speeches/Session_MongoDB_Impl.java @@ -1,12 +1,10 @@ -package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb; +package org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches; import org.bson.Document; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Session_File_Impl; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Session; -/** - * Datei implementiert von Henry - */ + public class Session_MongoDB_Impl extends Session_File_Impl implements Session { public Session_MongoDB_Impl(Document mongoDocument) { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/speeches/Speaker_MongoDB_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/speeches/Speaker_MongoDB_Impl.java new file mode 100644 index 0000000..2a9aefb --- /dev/null +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/speeches/Speaker_MongoDB_Impl.java @@ -0,0 +1,16 @@ +package org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches; + +import org.bson.Document; +import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speaker_File_Impl; +import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speaker; + +public class Speaker_MongoDB_Impl extends Speaker_File_Impl implements Speaker { + public Speaker_MongoDB_Impl(Document mongoDocument) { + super( + mongoDocument.getInteger("contentId"), + mongoDocument.getInteger("speechId"), + mongoDocument.getInteger("speakerId"), + mongoDocument.getString("speakerName"), + mongoDocument.getString("fraction")); + } +} diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/speeches/Speech_MongoDB_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/speeches/Speech_MongoDB_Impl.java new file mode 100644 index 0000000..729142c --- /dev/null +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/speeches/Speech_MongoDB_Impl.java @@ -0,0 +1,78 @@ +package org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches; + +import de.tudarmstadt.ukp.dkpro.core.api.metadata.type.DocumentMetaData; +import org.apache.uima.UIMAException; +import org.apache.uima.fit.factory.JCasFactory; +import org.apache.uima.jcas.JCas; +import org.bson.Document; +import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speech_File_Impl; +import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content; +import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech; + + +import java.util.List; + +public class Speech_MongoDB_Impl extends Speech_File_Impl implements Speech { + public Speech_MongoDB_Impl(Document mongoDocument) { + super( + mongoDocument.getInteger("sessionId"), + mongoDocument.getInteger("agendaItemId"), + mongoDocument.getInteger("speechId"), + mongoDocument.getInteger("speakerId"), + mongoDocument.getString("speakerName"), + mongoDocument.getString("fraction"), + mongoDocument.getString("speechKey") + ); + + + for (Document content : (List) mongoDocument.get("speechContents")) { + switch (content.getString("type")) { + case "line": + this.addContent(new Line_MongoDB_Impl(content)); + break; + case "comment": + this.addContent(new Comment_MongoDB_Impl(content)); + break; + case "speaker": + this.addContent(new Speaker_MongoDB_Impl(content)); + break; + default: + throw new IllegalArgumentException("Unknown content type: " + content.getString("type")); + } + } + + } + + 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(); + } + + //TODO not going fuckin insane + public JCas toCas() throws UIMAException { + JCas jCas = JCasFactory.createJCas(); + jCas.setDocumentText(this.getFullText()); + DocumentMetaData dmd = new DocumentMetaData(jCas); + dmd.setDocumentId(this.getSpeechKey());; + dmd.addToIndexes(); + return jCas; + } + +} diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/BiographicalInformation_MongoDB_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/BiografischeAngaben_Mongo_Impl.java similarity index 89% rename from src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/BiographicalInformation_MongoDB_Impl.java rename to src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/BiografischeAngaben_Mongo_Impl.java index 2664492..dce9a48 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/BiographicalInformation_MongoDB_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/BiografischeAngaben_Mongo_Impl.java @@ -11,10 +11,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -/** - * Datei implementiert von Valentin - */ -public class BiographicalInformation_MongoDB_Impl extends BiografischeAngaben implements MongoOperations { +public class BiografischeAngaben_Mongo_Impl extends BiografischeAngaben implements MongoOperations { @Override public Document createEntity(BiografischeAngaben entity) { Map fields = new HashMap<>(); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Institution_MongoDB_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Institution_Mongo_Impl.java similarity index 87% rename from src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Institution_MongoDB_Impl.java rename to src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Institution_Mongo_Impl.java index bd93e7f..a33bf13 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Institution_MongoDB_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Institution_Mongo_Impl.java @@ -10,10 +10,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -/** - * Datei implementiert von Valentin - */ -public class Institution_MongoDB_Impl extends Institution implements MongoOperations { +public class Institution_Mongo_Impl extends Institution implements MongoOperations { @Override public Document createEntity(Institution entity) { Map fields = new HashMap<>(); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/MdbName_MongoDB_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/MdbName_Mongo_Impl.java similarity index 88% rename from src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/MdbName_MongoDB_Impl.java rename to src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/MdbName_Mongo_Impl.java index 090b834..fad4e0f 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/MdbName_MongoDB_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/MdbName_Mongo_Impl.java @@ -10,10 +10,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -/** - * Datei implementiert von Valentin - */ -public class MdbName_MongoDB_Impl extends MdbName implements MongoOperations { +public class MdbName_Mongo_Impl extends MdbName implements MongoOperations { @Override public Document createEntity(MdbName entity) { Map fields = new HashMap<>(); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Mdb_MongoDB_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Mdb_Mongo_Impl.java similarity index 90% rename from src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Mdb_MongoDB_Impl.java rename to src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Mdb_Mongo_Impl.java index 08be4f0..f44d194 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Mdb_MongoDB_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Mdb_Mongo_Impl.java @@ -11,10 +11,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -/** - * Datei implementiert von Valentin - */ -public class Mdb_MongoDB_Impl extends Mdb implements MongoOperations { +public class Mdb_Mongo_Impl extends Mdb implements MongoOperations { @Override public Document createEntity(Mdb entity) { Document bioDoc = factory.createBiografischeAngaben(entity.getBio()); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Membership_MongoDB_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Membership_Mongo_Impl.java similarity index 78% rename from src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Membership_MongoDB_Impl.java rename to src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Membership_Mongo_Impl.java index 3446ce2..c11be39 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Membership_MongoDB_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Membership_Mongo_Impl.java @@ -3,17 +3,17 @@ package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb; import org.bson.Document; import org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler; import org.texttechnologylab.project.gruppe_05_1.database.MongoOperations; +import org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbName; +import org.texttechnologylab.project.gruppe_05_1.domain.mdb.Wahlperiode; import org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership; +import org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -/** - * Datei implementiert von Valentin - */ -public class Membership_MongoDB_Impl extends Membership implements MongoOperations { +public class Membership_Mongo_Impl extends Membership implements MongoOperations { @Override public Document createEntity(Membership entity) { Map fields = new HashMap<>(); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Speaker_MongoDB_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Speaker_MongoDB_Impl.java deleted file mode 100644 index 0c96ef1..0000000 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Speaker_MongoDB_Impl.java +++ /dev/null @@ -1,192 +0,0 @@ -package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb; - -import org.bson.Document; -import org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler; -import org.texttechnologylab.project.gruppe_05_1.database.MongoOperations; -import org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership; -import org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker; -import org.texttechnologylab.project.gruppe_05_1.util.Logger; -import org.w3c.dom.Element; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.time.LocalDate; -import java.util.*; - -import static org.texttechnologylab.project.gruppe_05_1.Main.TEMP_EXPORT_DIR; -import static org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils.getMemberPhoto; - -/** - * Datei implementiert von Valentin - * Datei modifiziert von Jonas - * toTeX() und toXML() hinzugefügt von Jonas - */ -public class Speaker_MongoDB_Impl extends Speaker implements MongoOperations { - public Speaker_MongoDB_Impl createSpeakerMongoDBImpl(Document mongoDocument) { - this.setId(mongoDocument.getString("_id")); - this.setName(mongoDocument.getString("name")); - this.setFirstName(mongoDocument.getString("firstName")); - this.setTitle(mongoDocument.getString("title")); - this.setGeburtsdatum(parseTimestampSafely(mongoDocument.getDate("geburtsdatum"))); - this.setGeburtsort(mongoDocument.getString("geburtsort")); - this.setSterbedatum(parseTimestampSafely(mongoDocument.getDate("sterbedatum"))); - this.setGeschlecht(mongoDocument.getString("geschlecht")); - this.setBeruf(mongoDocument.getString("beruf")); - this.setAkademischertitel(mongoDocument.getString("akademischertitel")); - this.setFamilienstand(mongoDocument.getString("familienstand")); - this.setReligion(mongoDocument.getString("religion")); - this.setVita(mongoDocument.getString("vita")); - this.setParty(mongoDocument.getString("party")); - - List memberships = (List) mongoDocument.get("memberships"); - List membershipList = new ArrayList<>(); - for (Document membership : memberships) { - Membership membershipObj = new Membership(); - membershipObj.setRole(membership.getString("role")); - membershipObj.setMember(membership.getString("member")); - membershipObj.setBegin(parseTimestampSafely(membership.getDate("begin"))); - membershipObj.setEnd(parseTimestampSafely(membership.getDate("end"))); - membershipObj.setLabel(membership.getString("label")); - membershipObj.setWp(membership.getInteger("wp")); - membershipList.add(membershipObj); - } - this.setMemberships(membershipList); - - return this; - } - - public LocalDate parseTimestampSafely(Date timestamp) { - try { - return LocalDate.parse(timestamp.toString()); - } catch (Exception e) { - return null; - } - } - @Override - public Document createEntity(Speaker entity) { - - List memberships= entity.getMemberships(); - List membershipDocs = factory.createMemberships(memberships); - - Map fields = new HashMap<>(); - fields.put("_id", entity.getId()); - fields.put("name", entity.getName()); - fields.put("firstName", entity.getFirstName()); - fields.put("title", entity.getTitle()); - fields.put("geburtsdatum", entity.getGeburtsdatum()); - fields.put("geburtsort", entity.getGeburtsort()); - fields.put("sterbedatum", entity.getSterbedatum()); - fields.put("geschlecht", entity.getGeschlecht()); - fields.put("beruf", entity.getBeruf()); - fields.put("akademischertitel", entity.getAkademischertitel()); - fields.put("familienstand", entity.getFamilienstand()); - fields.put("religion", entity.getReligion()); - fields.put("vita", entity.getVita()); - fields.put("party", entity.getParty()); - fields.put("memberships", membershipDocs); - - return MongoDBHandler.createDocument(false, fields); - } - - @Override - public List createList(List list) { - List result = new ArrayList<>(); - for (Speaker speaker : list) { - result.add(createEntity(speaker)); - } - return result; - } - - public String toTeX() { - // Save image to file - File outputFile = null; - byte[] imageBytes = null; - // Decode the Base64 string to a byte array - try { - imageBytes = Base64.getDecoder().decode(getMemberPhoto(this.getId())); - - // check if imageBytes is empty - if (imageBytes.length != 0) { - // Define the output PNG file - outputFile = new File(TEMP_EXPORT_DIR + "speaker_photo_" + this.getId() + ".png"); - - // Write the decoded byte array to the file - try (FileOutputStream fos = new FileOutputStream(outputFile)) { - fos.write(imageBytes); - Logger.debug("PNG file has been saved successfully."); - } catch (IOException e) { - Logger.error("Failed to save member PNG file."); - Logger.error(e.getMessage()); - } - } - } catch (Exception e) { - Logger.warn("Failed to decode member photo. Maybe its missing from the DB?"); - Logger.debug(Arrays.toString(e.getStackTrace())); - } - - // Spkeaer metadata LaTeX code with image, Full Name + title, party, religion, dob, dod, pob, gender, ID - StringBuilder tex = new StringBuilder(); - // image on the left, metadata on the right - tex.append("\\begin{minipage}{0.5\\textwidth}\n"); - if (imageBytes != null) { - tex.append("\\includegraphics[width=0.5\\textwidth]{").append("speaker_photo_" + this.getId() + ".png").append("}\n"); - } else { - tex.append("(No image available)\n"); - } - tex.append("\\end{minipage}\n"); - tex.append("\\begin{minipage}{0.5\\textwidth}\n"); - tex.append("\\begin{tabular}{r l}\n"); - if (this.getTitle() != null) { - tex.append("Name & ").append(this.getTitle()).append(" ").append(this.getFirstName()).append(" ").append(this.getName()).append("\\\\\n"); - } else { - tex.append("Name & ").append(this.getFirstName()).append(" ").append(this.getName()).append("\\\\\n"); - } - tex.append("Fraktion & ").append(this.getParty()).append("\\\\\n"); - if (this.getReligion() != null) { - tex.append("Religion & ").append(this.getReligion()).append("\\\\\n"); // only show if available - } - if (this.getGeburtsdatum() != null) { - tex.append("Geburtsdatum & ").append(this.getGeburtsdatum()).append("\\\\\n"); - } - if (this.getSterbedatum() != null) { - tex.append("Sterbedatum & ").append(this.getSterbedatum()).append("\\\\\n"); // only show if available - } - tex.append("Geburtsort & ").append(this.getGeburtsort()).append("\\\\\n"); - tex.append("\\end{tabular}\n"); - tex.append("\\end{minipage}\n"); - return tex.toString(); - } - - public Element toXML(org.w3c.dom.Document doc) { - Element speakerElement = doc.createElement("speaker"); - speakerElement.setAttribute("id", this.getId()); - speakerElement.setAttribute("name", this.getName()); - speakerElement.setAttribute("firstName", this.getFirstName()); - speakerElement.setAttribute("title", this.getTitle() != null ? this.getTitle() : ""); - speakerElement.setAttribute("geburtsdatum", this.getGeburtsdatum() != null ? this.getGeburtsdatum().toString() : ""); - speakerElement.setAttribute("geburtsort", this.getGeburtsort()); - speakerElement.setAttribute("sterbedatum", this.getSterbedatum() != null ? this.getSterbedatum().toString() : ""); - speakerElement.setAttribute("geschlecht", this.getGeschlecht()); - speakerElement.setAttribute("beruf", this.getBeruf()); - speakerElement.setAttribute("akademischertitel", this.getAkademischertitel()); - speakerElement.setAttribute("familienstand", this.getFamilienstand()); - speakerElement.setAttribute("religion", this.getReligion() != null ? this.getReligion() : ""); - speakerElement.setAttribute("vita", this.getVita()); - speakerElement.setAttribute("party", this.getParty()); - - List memberships = this.getMemberships(); - for (Membership membership : memberships) { - Element membershipElement = doc.createElement("membership"); - membershipElement.setAttribute("role", membership.getRole()); - membershipElement.setAttribute("member", membership.getMember()); - membershipElement.setAttribute("begin", membership.getBegin() != null ? membership.getBegin().toString() : ""); - membershipElement.setAttribute("end", membership.getEnd() != null ? membership.getEnd().toString() : ""); - membershipElement.setAttribute("label", membership.getLabel()); - membershipElement.setAttribute("wp", String.valueOf(membership.getWp())); - speakerElement.appendChild(membershipElement); - } - - return speakerElement; - } -} diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Speaker_Mongo_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Speaker_Mongo_Impl.java new file mode 100644 index 0000000..20fc049 --- /dev/null +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Speaker_Mongo_Impl.java @@ -0,0 +1,49 @@ +package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb; + +import org.bson.Document; +import org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler; +import org.texttechnologylab.project.gruppe_05_1.database.MongoOperations; +import org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership; +import org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class Speaker_Mongo_Impl extends Speaker implements MongoOperations { + @Override + public Document createEntity(Speaker entity) { + + List memberships= entity.getMemberships(); + List membershipDocs = factory.createMemberships(memberships); + + Map fields = new HashMap<>(); + fields.put("_id", entity.getId()); + fields.put("name", entity.getName()); + fields.put("firstName", entity.getFirstName()); + fields.put("title", entity.getTitle()); + fields.put("geburtsdatum", entity.getGeburtsdatum()); + fields.put("geburtsort", entity.getGeburtsort()); + fields.put("sterbedatum", entity.getSterbedatum()); + fields.put("geschlecht", entity.getGeschlecht()); + fields.put("beruf", entity.getBeruf()); + fields.put("akademischertitel", entity.getAkademischertitel()); + fields.put("familienstand", entity.getFamilienstand()); + fields.put("religion", entity.getReligion()); + fields.put("vita", entity.getVita()); + fields.put("party", entity.getParty()); + fields.put("memberships", membershipDocs); + + return MongoDBHandler.createDocument(false, fields); + } + + @Override + public List createList(List list) { + List result = new ArrayList<>(); + for (Speaker speaker : list) { + result.add(createEntity(speaker)); + } + return result; + } +} 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 deleted file mode 100644 index 19a4d44..0000000 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Speech_MongoDB_Impl.java +++ /dev/null @@ -1,164 +0,0 @@ -package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb; - -import de.tudarmstadt.ukp.dkpro.core.api.metadata.type.DocumentMetaData; -import org.apache.uima.UIMAException; -import org.apache.uima.fit.factory.JCasFactory; -import org.apache.uima.jcas.JCas; -import org.bson.Document; -import org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.speechline.Comment_MongoDB_Impl; -import org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.speechline.Line_MongoDB_Impl; -import org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.speechline.Speaker_MongoDB_Impl; -import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speech_File_Impl; -import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content; -import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech; -import org.w3c.dom.Element; - - -import java.util.List; - -import static org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils.getAgendaTitle; -import static org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils.getSessionDateTime; - -/** - * Datei implementiert von Henry - * Modifiziert von Jonas - * toTeX und toXML von Jonas - */ -public class Speech_MongoDB_Impl extends Speech_File_Impl implements Speech { - public Speech_MongoDB_Impl(Document mongoDocument, boolean includeContent) { - super( - mongoDocument.getInteger("sessionId"), - mongoDocument.getInteger("agendaItemId"), - mongoDocument.getInteger("speechId"), - mongoDocument.getInteger("speakerId"), - mongoDocument.getString("speakerName"), - mongoDocument.getString("fraction"), - mongoDocument.getString("speechKey") - ); - - if (includeContent) { - for (Document content : (List) mongoDocument.get("speechContents")) { - switch (content.getString("type")) { - case "line": - this.addContent(new Line_MongoDB_Impl(content)); - break; - case "comment": - this.addContent(new Comment_MongoDB_Impl(content)); - break; - case "speaker": - this.addContent(new Speaker_MongoDB_Impl(content)); - break; - default: - throw new IllegalArgumentException("Unknown content type: " + content.getString("type")); - } - } - } - } - - /** - * 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(); - - for (Object content : this.getSpeechContents()) { - if (content instanceof Line_MongoDB_Impl) { - - String lineText = ((Line_MongoDB_Impl) content).getContent(); - if (lineText != null && !lineText.isEmpty()) { - fullText.append(lineText).append("\n"); - } - } else if (content instanceof Comment_MongoDB_Impl) { - - String commentText = ((Comment_MongoDB_Impl) content).getComment(); - if (commentText != null && !commentText.isEmpty()) { - fullText.append(commentText).append("\n"); - } - } - - } - 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()); - DocumentMetaData dmd = new DocumentMetaData(jCas); - dmd.setDocumentId(this.getSpeechKey());; - dmd.addToIndexes(); - 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(); - - String party = (this.getFraction() != null ? " (" + this.getFraction() + ")" : ""); - - String speechTitle = "Rede " + - this.getSpeechKey() + - "/" + - getAgendaTitle(this.getSessionId(), this.getAgendaItemId()) + - " von " + - this.getSpeakerName() + - party + - " vom " + - getSessionDateTime(this.getSessionId()); - - tex.append("\\section*{").append(speechTitle).append("}\n"); - tex.append("\\addcontentsline{toc}{section}{").append(speechTitle).append("}\n"); - - tex.append("$$SPEAKERINFO$$\n"); - - tex.append("\\subsection*{NLP Metadata}\n"); - - tex.append("$$NLPMETADATA$$\n"); - - tex.append("\\subsection*{Speech Content}\n"); - - // Add content block of speeches - for (Content content: this.getSpeechContents()) { - tex.append(content.toTeX()); - } - - - 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())); - speech.setAttribute("agendaItemId", String.valueOf(this.getAgendaItemId())); - speech.setAttribute("speechId", String.valueOf(this.getSpeechId())); - speech.setAttribute("speakerId", String.valueOf(this.getSpeakerId())); - speech.setAttribute("speakerName", this.getSpeakerName()); - speech.setAttribute("fraction", this.getFraction()); - speech.setAttribute("speechKey", this.getSpeechKey()); - - for (Content content: this.getSpeechContents()) { - speech.appendChild(content.toXML(doc)); - } - - return speech; - } -} diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/LegislativePeriod_MongoDB_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Wahlperiode_Mongo_Impl.java similarity index 89% rename from src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/LegislativePeriod_MongoDB_Impl.java rename to src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Wahlperiode_Mongo_Impl.java index 5951fd3..2dc689c 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/LegislativePeriod_MongoDB_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Wahlperiode_Mongo_Impl.java @@ -11,10 +11,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -/** - * Datei implementiert von Valentin - */ -public class LegislativePeriod_MongoDB_Impl extends Wahlperiode implements MongoOperations { +public class Wahlperiode_Mongo_Impl extends Wahlperiode implements MongoOperations { @Override public Document createEntity(Wahlperiode entity) { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/speechline/Speaker_MongoDB_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/speechline/Speaker_MongoDB_Impl.java deleted file mode 100644 index 630f13f..0000000 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/speechline/Speaker_MongoDB_Impl.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.speechline; - -import org.bson.Document; -import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speaker_File_Impl; -import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speaker; -import org.w3c.dom.Element; - -/* - * Klassen-Implementieren von Jonas - */ -public class Speaker_MongoDB_Impl extends Speaker_File_Impl implements Speaker { - public Speaker_MongoDB_Impl(Document mongoDocument) { - super( - mongoDocument.getInteger("contentId"), - mongoDocument.getInteger("speechId"), - mongoDocument.getInteger("speakerId"), - mongoDocument.getString("speakerName"), - mongoDocument.getString("fraction")); - } - - public String toTeX() { - return "\\textcolor{darkgreen}{Redner/Rednerin}: " + this.getSpeakerName() + "\\\\\n"; - } - - public Element toXML(org.w3c.dom.Document doc) { - Element speaker = doc.createElement("speaker"); - speaker.setAttribute("contentId", String.valueOf(this.getContentId())); - speaker.setAttribute("speechId", String.valueOf(this.getSpeechId())); - speaker.setAttribute("speakerId", String.valueOf(this.getSpeakerId())); - speaker.setAttribute("speakerName", this.getSpeakerName()); - speaker.setAttribute("fraction", this.getFraction()); - return speaker; - } -} diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/.DS_Store b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/.DS_Store deleted file mode 100644 index b62441a..0000000 Binary files a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/.DS_Store and /dev/null differ diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/Gender.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/Gender.java index a137417..a44f9de 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/Gender.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/Gender.java @@ -1,7 +1,5 @@ package org.texttechnologylab.project.gruppe_05_1.domain; -/** - * Datei implementiert von Valentin - */ + public enum Gender { // TODO: Delete M("männlich"), diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/html/HtmlSpeech.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/html/HtmlSpeech.java index 1da825a..07a4fd5 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/html/HtmlSpeech.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/html/HtmlSpeech.java @@ -2,28 +2,21 @@ package org.texttechnologylab.project.gruppe_05_1.domain.html; import org.bson.Document; import org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler; -import org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils; -import org.texttechnologylab.project.gruppe_05_1.domain.nlp.*; -import org.texttechnologylab.project.gruppe_05_1.domain.speech.SpeechMetaData; +import org.texttechnologylab.project.gruppe_05_1.domain.nlp.NlpInfo; +import org.texttechnologylab.project.gruppe_05_1.domain.nlp.Token; +import org.texttechnologylab.project.gruppe_05_1.domain.nlp.Topic; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ public class HtmlSpeech { String speechKey; String speakerName; String fraction; - String dateTimeString; // aus "sessions" Collection - String agendaTitle; // aus "agendaItems" Collection List content = new ArrayList<>(); NlpInfo nlp = null; - String video = null; - String videoData; public HtmlSpeech() { } @@ -32,7 +25,7 @@ public class HtmlSpeech { setSpeechKey(doc.getString("speechKey")); setSpeakerName(doc.getString("speakerName")); setFraction(doc.getString("fraction")); - setVideo(doc.getString("video")); + List contentDocList = doc.get("speechContents", MongoDBHandler.DOC_LIST_CLASS); if (contentDocList == null) { setContent(new ArrayList<>()); @@ -42,27 +35,15 @@ public class HtmlSpeech { } } - // ergänzen um Datum, Uhrzeit und Agendapunkt der Rede - SpeechMetaData md = new SpeechMetaData(); - int sessionId = doc.getInteger("sessionId"); - md.setSessionId(sessionId); - MongoPprUtils.augmentSpeechMetaDataFromSession(sessionId, md); - dateTimeString = md.getDateTimeString(); - - int agendaItemId = doc.getInteger("agendaItemId"); - String title = MongoPprUtils.getAgendaTitle(sessionId, agendaItemId); - agendaTitle = title; - - // Ergänzung um NLP-Informationen Document nlpDoc = (Document) doc.get("analysisResults"); nlp = readNlpInfo(nlpDoc); - } private NlpInfo readNlpInfo(Document nlpDoc) { if (nlpDoc == null) return null; NlpInfo nlp = new NlpInfo(); + // TODO: HERE List tokensDocs = nlpDoc.get("tokens", MongoDBHandler.DOC_LIST_CLASS); nlp.setTokens(Token.readTokensFromMongo(tokensDocs)); @@ -71,14 +52,13 @@ public class HtmlSpeech { List dependenciesDocs = nlpDoc.get("dependencies", MongoDBHandler.DOC_LIST_CLASS); List namedEntitiesDocs = nlpDoc.get("namedEntities", MongoDBHandler.DOC_LIST_CLASS); - nlp.setNamedEntities(NamedEntity.readNamedEntitiesFromMongo(namedEntitiesDocs)); - List sentimentDocs = nlpDoc.get("sentiments", MongoDBHandler.DOC_LIST_CLASS); - nlp.setSentiments(Sentiment.readSentimentsFromMongo((sentimentDocs))); + List sentimentsDocs = nlpDoc.get("sentiments", MongoDBHandler.DOC_LIST_CLASS); List topicsDocs = nlpDoc.get("topics", MongoDBHandler.DOC_LIST_CLASS); nlp.setTopics(Topic.readTopicsFromMongo(topicsDocs)); + // TODO: Video return nlp; } @@ -106,13 +86,6 @@ public class HtmlSpeech { public void setFraction(String fraction) { this.fraction = fraction; } - public String getDateTimeString() {return dateTimeString;} - - public void setDateTimeString(String dateTimeString) {this.dateTimeString = dateTimeString;} - - public String getAgendaTitle() {return agendaTitle;} - - public void setAgendaTitle(String agendaTitle) {this.agendaTitle = agendaTitle;} public List getContent() { return content; @@ -139,14 +112,13 @@ public class HtmlSpeech { if (this == o) return true; if (!(o instanceof HtmlSpeech that)) return false; return Objects.equals(speechKey, that.speechKey) && Objects.equals(speakerName, that.speakerName) - && Objects.equals(fraction, that.fraction) && Objects.equals(dateTimeString, that.dateTimeString) - && Objects.equals(agendaTitle, that.agendaTitle) && Objects.equals(content, that.content) + && Objects.equals(fraction, that.fraction) && Objects.equals(content, that.content) && Objects.equals(nlp, that.nlp); } @Override public int hashCode() { - return Objects.hash(speechKey, speakerName, fraction, dateTimeString, agendaTitle, content, nlp); + return Objects.hash(speechKey, speakerName, fraction, content, nlp); } @Override @@ -155,26 +127,8 @@ public class HtmlSpeech { .add("speechKey='" + speechKey + "'") .add("speakerName='" + speakerName + "'") .add("fraction='" + fraction + "'") - .add("dateTimeString='" + dateTimeString + "'") - .add("agendaTitle='" + agendaTitle + "'") .add("content=" + content) .add("nlp=" + nlp) .toString(); } - - public void setVideo(String video) { - this.video = video; - } - - public void setVideoData(String videoData) { - this.videoData = videoData; - } - - public String getVideo() { - return video; - } - - public String getVideoData() { - return videoData; - } } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/html/Parlamentarier.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/html/Parlamentarier.java index aa624ef..47828d7 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/html/Parlamentarier.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/html/Parlamentarier.java @@ -2,9 +2,7 @@ package org.texttechnologylab.project.gruppe_05_1.domain.html; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ + public class Parlamentarier { String id; String vorname; diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/html/ParlamentarierDetails.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/html/ParlamentarierDetails.java index bf7c6e5..7b2e163 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/html/ParlamentarierDetails.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/html/ParlamentarierDetails.java @@ -8,9 +8,7 @@ import java.time.LocalDate; import java.util.List; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ + public class ParlamentarierDetails { String id; String vorname; diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/html/SpeechOverview.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/html/SpeechOverview.java deleted file mode 100644 index f839880..0000000 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/html/SpeechOverview.java +++ /dev/null @@ -1,101 +0,0 @@ -package org.texttechnologylab.project.gruppe_05_1.domain.html; - -import java.util.Objects; -import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ - -public class SpeechOverview { - String speechKey; - Integer speakerId; - String dateTimeString; - String speakerName; - String fraction; - String agendaTitel; - - public SpeechOverview() {} - - public SpeechOverview(String speechKey, Integer speakerId, String dateTimeString, String speakerName, String fraction, String agendaTitel) { - this.speechKey = speechKey; - this.speakerId = speakerId; - this.dateTimeString = dateTimeString; - this.speakerName = speakerName; - this.fraction = fraction; - this.agendaTitel = agendaTitel; - } - - public String getSpeechKey() { - return speechKey; - } - - public void setSpeechKey(String speechKey) { - this.speechKey = speechKey; - } - - public Integer getSpeakerId() { - return speakerId; - } - - public void setSpeakerId(Integer speakerId) { - this.speakerId = speakerId; - } - - public String getDateTimeString() { - return dateTimeString; - } - - public void setDateTimeString(String dateTimeString) { - this.dateTimeString = dateTimeString; - } - - public String getSpeakerName() { - return speakerName; - } - - public void setSpeakerName(String speakerName) { - this.speakerName = speakerName; - } - - public String getFraction() { - return fraction; - } - - public void setFraction(String fraction) { - this.fraction = fraction; - } - - public String getAgendaTitel() { - return agendaTitel; - } - - public void setAgendaTitel(String agendaTitel) { - this.agendaTitel = agendaTitel; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof SpeechOverview that)) return false; - return Objects.equals(speechKey, that.speechKey) && Objects.equals(speakerId, that.speakerId) - && Objects.equals(dateTimeString, that.dateTimeString) && Objects.equals(speakerName, that.speakerName) - && Objects.equals(fraction, that.fraction) && Objects.equals(agendaTitel, that.agendaTitel); - } - - @Override - public int hashCode() { - return Objects.hash(speechKey, speakerId, dateTimeString, speakerName, fraction, agendaTitel); - } - - @Override - public String toString() { - return new StringJoiner(", ", SpeechOverview.class.getSimpleName() + "[", "]") - .add("speechKey='" + speechKey + "'") - .add("speakerId=" + speakerId) - .add("dateTimeString='" + dateTimeString + "'") - .add("speakerName='" + speakerName + "'") - .add("fraction='" + fraction + "'") - .add("agendaTitel='" + agendaTitel + "'") - .toString(); - } -} diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/BiografischeAngaben.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/BiografischeAngaben.java index 026d476..911c1c1 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/BiografischeAngaben.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/BiografischeAngaben.java @@ -3,9 +3,6 @@ package org.texttechnologylab.project.gruppe_05_1.domain.mdb; import java.time.LocalDate; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ public abstract class BiografischeAngaben { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/Institution.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/Institution.java index 6be099a..e988ed3 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/Institution.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/Institution.java @@ -3,9 +3,6 @@ package org.texttechnologylab.project.gruppe_05_1.domain.mdb; import java.time.LocalDate; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ public abstract class Institution { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/Mandatsart.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/Mandatsart.java index 5000097..3a3bd44 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/Mandatsart.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/Mandatsart.java @@ -1,9 +1,6 @@ package org.texttechnologylab.project.gruppe_05_1.domain.mdb; public enum Mandatsart { - /** - * Datei implementiert von Valentin - */ DIREKT("Direktwahl"), LANDESLISTE("Landesliste"), diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/Mdb.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/Mdb.java index cb4b5e9..2b92247 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/Mdb.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/Mdb.java @@ -3,9 +3,6 @@ package org.texttechnologylab.project.gruppe_05_1.domain.mdb; import java.util.List; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ public abstract class Mdb { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/MdbDocument.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/MdbDocument.java index 1b4f25b..122b434 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/MdbDocument.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/MdbDocument.java @@ -3,9 +3,6 @@ package org.texttechnologylab.project.gruppe_05_1.domain.mdb; import java.util.List; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ public abstract class MdbDocument { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/MdbName.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/MdbName.java index 53e2e3c..3839933 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/MdbName.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/MdbName.java @@ -3,9 +3,6 @@ package org.texttechnologylab.project.gruppe_05_1.domain.mdb; import java.time.LocalDate; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ public abstract class MdbName { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/Wahlperiode.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/Wahlperiode.java index f46ca5d..65bcbbf 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/Wahlperiode.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/mdb/Wahlperiode.java @@ -4,9 +4,6 @@ import java.time.LocalDate; import java.util.List; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ public abstract class Wahlperiode { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/AudioToken.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/AudioToken.java index ec8c713..de72e1d 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/AudioToken.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/AudioToken.java @@ -2,9 +2,7 @@ package org.texttechnologylab.project.gruppe_05_1.domain.nlp; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ + public class AudioToken { private int begin; diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Dependency.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Dependency.java index 159cf30..ad5ead6 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Dependency.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Dependency.java @@ -2,9 +2,7 @@ package org.texttechnologylab.project.gruppe_05_1.domain.nlp; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ + public class Dependency { String type; String governor; diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/NamedEntity.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/NamedEntity.java index 3d312e5..0f3ec5d 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/NamedEntity.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/NamedEntity.java @@ -1,18 +1,12 @@ package org.texttechnologylab.project.gruppe_05_1.domain.nlp; -import org.bson.Document; -import org.w3c.dom.Element; - -import java.util.ArrayList; -import java.util.List; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - * toXML implementiert von Jonas - */ + public class NamedEntity { String type; // PER, LOC etc. + // int begin; // TODO: momentan nicht in MongoDB + // int end; // TODO: momentan nicht in MongoDB String text; public NamedEntity() { @@ -58,22 +52,4 @@ public class NamedEntity { .add("text='" + text + "'") .toString(); } - - public static List readNamedEntitiesFromMongo(List nadocs) { - List nes = new ArrayList<>(); - for (Document doc : nadocs) { - nes.add(new NamedEntity( - doc.getString("type"), - doc.getString("text") - )); - } - return nes; - } - - public Element toXML(org.w3c.dom.Document doc) { - Element ne = doc.createElement("NamedEntity"); - ne.setAttribute("type", type); - ne.setTextContent(text); - return ne; - } } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/NlpInfo.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/NlpInfo.java index d98ae80..de7ecd5 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/NlpInfo.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/NlpInfo.java @@ -4,9 +4,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ + public class NlpInfo { List tokens; List sentences; diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Pos.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Pos.java index 35e9162..74f027a 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Pos.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Pos.java @@ -1,13 +1,8 @@ package org.texttechnologylab.project.gruppe_05_1.domain.nlp; -import org.w3c.dom.Element; - import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - * toXML implementiert von Jonas - */ + public class Pos { String posValue; // ART, NN... String coarseValue; // PROPN... @@ -121,14 +116,4 @@ public class Pos { MyPos{posValue='ADJD', coarseValue='ADV', begin=127, end=130, coveredText='gut'}, MyPos{posValue='$.', coarseValue='PUNCT', begin=130, end=131, coveredText='.'}], */ - - public Element toXML(org.w3c.dom.Document doc) { - Element posElement = doc.createElement("pos"); - posElement.setAttribute("posValue", posValue); - posElement.setAttribute("coarseValue", coarseValue); - posElement.setAttribute("begin", String.valueOf(begin)); - posElement.setAttribute("end", String.valueOf(end)); - posElement.setTextContent(coveredText); - return posElement; - } } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Sentence.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Sentence.java index 4cbbd37..213f58e 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Sentence.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Sentence.java @@ -2,10 +2,10 @@ package org.texttechnologylab.project.gruppe_05_1.domain.nlp; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ + public class Sentence { + // int begin; // TODO: momentan nicht in MongoDB + // int end; // TODO: momentan nicht in MongoDB String text; public Sentence() { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Sentiment.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Sentiment.java index 28378de..a2f04e3 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Sentiment.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Sentiment.java @@ -1,17 +1,8 @@ package org.texttechnologylab.project.gruppe_05_1.domain.nlp; -import org.bson.Document; -import org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler; -import org.w3c.dom.Element; - -import java.util.ArrayList; -import java.util.List; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - * toXML-Methode implementiert von Jonas - */ + public class Sentiment { int begin; int end; @@ -103,36 +94,4 @@ public class Sentiment { .add("positive=" + positive) .toString(); } - - /** - * - * @param sentimentDocs Die Sentiment-Dokumente (Speech --> analysisResults --> sentiment) aus der MongoDB lesen. - * Das erste Dokument ist für die gesamte Rede, Sentiments 1..n entsprechen Sentences 0..n-1 - * @return - */ - public static List readSentimentsFromMongo(List sentimentDocs) { - List sentiments = new ArrayList<>(); - for (Document doc : sentimentDocs) { - sentiments.add(new Sentiment( - doc.getInteger("begin"), - doc.getInteger("end"), - MongoDBHandler.getFieldAsDouble(doc, "score"), - MongoDBHandler.getFieldAsDouble(doc, "neg"), - MongoDBHandler.getFieldAsDouble(doc, "neu"), - MongoDBHandler.getFieldAsDouble(doc, "pos") - )); - } - return sentiments; - } - - public org.w3c.dom.Element toXML(org.w3c.dom.Document doc) { - Element sentimentElement = doc.createElement("sentiment"); - sentimentElement.setAttribute("begin", String.valueOf(this.begin)); - sentimentElement.setAttribute("end", String.valueOf(this.end)); - sentimentElement.setAttribute("sentiment", String.valueOf(this.sentiment)); - sentimentElement.setAttribute("negative", String.valueOf(this.negative)); - sentimentElement.setAttribute("neutral", String.valueOf(this.neutral)); - sentimentElement.setAttribute("positive", String.valueOf(this.positive)); - return sentimentElement; - } } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Token.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Token.java index cc30960..09a5365 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Token.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Token.java @@ -3,9 +3,7 @@ package org.texttechnologylab.project.gruppe_05_1.domain.nlp; import org.bson.Document; import java.util.*; -/** - * Datei implementiert von Valentin - */ + public class Token { String text; String pos; @@ -69,7 +67,6 @@ public class Token { * Die Token-Dokumente (Speech --> analysisResults --> token) aus der MongoDB lesen * @param tokenDocs Eine Liste von Mongo-Dokumenten * @return Eine Liste der Token - * Implementiert von Leon */ public static List readTokensFromMongo(List tokenDocs) { List tokens = new ArrayList<>(); @@ -86,7 +83,6 @@ public class Token { * Zählt alle verschiedenen POS Vorkommen auf * @param tokenList * @return Jede POS art mit ihrer Anzahl an Vorkommen - * Implementiert von Leon */ public static Map countPOS(List tokenList) { Map posCounts = new HashMap<>(); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Topic.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Topic.java index de18875..474f5aa 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Topic.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Topic.java @@ -1,14 +1,10 @@ package org.texttechnologylab.project.gruppe_05_1.domain.nlp; import org.bson.Document; -import org.w3c.dom.Element; import java.util.*; import java.util.stream.Collectors; -/** - * Datei implementiert von Valentin - * toXML-Methode implementiert von Jonas - */ + public class Topic { String topic; Double score; @@ -108,12 +104,4 @@ public class Topic { return condensedTopicInfo; } - - public Element toXML(org.w3c.dom.Document doc) { - Element topicElement = doc.createElement("topic"); - topicElement.setAttribute("topic", this.getTopic()); - topicElement.setAttribute("score", this.getScore().toString()); - topicElement.setTextContent(this.getText()); - return topicElement; - } } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/VideoInformation.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/VideoInformation.java index 259ab79..e33db12 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/VideoInformation.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/VideoInformation.java @@ -3,9 +3,7 @@ package org.texttechnologylab.project.gruppe_05_1.domain.nlp; import java.util.List; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ + public class VideoInformation { List audioTokens; diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/html/SentimentOfSentence.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/html/SentimentOfSentence.java index bd1d937..d96dcf0 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/html/SentimentOfSentence.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/html/SentimentOfSentence.java @@ -3,7 +3,6 @@ package org.texttechnologylab.project.gruppe_05_1.domain.nlp.html; import java.util.Objects; /** - * Datei implementiert von Valentin * Diese Klasse ordnet das entspreche Sentiment zu einem Satz zu. * Sie ist ein Datencontainer für die Darstellung über FreeMarker */ diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speaker/Membership.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speaker/Membership.java index 5c4f92a..40ab1ef 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speaker/Membership.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speaker/Membership.java @@ -3,14 +3,12 @@ package org.texttechnologylab.project.gruppe_05_1.domain.speaker; import java.time.LocalDate; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ + public class Membership { String role; - String member; - LocalDate begin; - LocalDate end; + String member; // TODO: wozu? Dr. Abrami hat hier die ID des Parlamentariers gespeichert + LocalDate begin; // TODO: in Mongo eigentlich Date? + LocalDate end; // TODO: in Mongo eigentlich Date? String label; Integer wp; diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speaker/Speaker.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speaker/Speaker.java index 8fb08e3..c281111 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speaker/Speaker.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speaker/Speaker.java @@ -4,9 +4,7 @@ import java.time.LocalDate; import java.util.List; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ + public abstract class Speaker { String id; String name; @@ -25,6 +23,9 @@ public abstract class Speaker { String primaryFoto; List memberships; + // TODO: List speeches; + + // TODO: Photos public String getId() { return id; diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/Agenda.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/Agenda.java index 6e64b3e..b8532cd 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/Agenda.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/Agenda.java @@ -2,9 +2,7 @@ package org.texttechnologylab.project.gruppe_05_1.domain.speech; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ + public abstract class Agenda { String index; String id; diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/Comment.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/Comment.java index 377c1aa..3439a31 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/Comment.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/Comment.java @@ -4,9 +4,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ + public abstract class Comment { String id; diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/Protocol.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/Protocol.java index a7af3ec..1727e86 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/Protocol.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/Protocol.java @@ -4,9 +4,7 @@ import java.time.LocalDate; import java.time.LocalTime; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ + public abstract class Protocol { LocalDate date; LocalTime startTime; diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/Speech.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/Speech.java index 76d5576..ff50e6c 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/Speech.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/Speech.java @@ -3,9 +3,7 @@ package org.texttechnologylab.project.gruppe_05_1.domain.speech; import java.util.List; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ + public abstract class Speech { String id; String text; diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/SpeechMetaData.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/SpeechMetaData.java index 735e7e0..bb9d55d 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/SpeechMetaData.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/SpeechMetaData.java @@ -5,17 +5,14 @@ import java.util.Objects; import java.util.StringJoiner; /** - * Datei implementiert von Valentin * Diese Klasse dient der Darstellung aller Reden eines Parlamentariers. */ public class SpeechMetaData { // aus "speech" Collection String speechKey; // z.B. "ID2011400300" - int speechId; + int speechId; // TODO: nötig? int speakerId; - String speakerName; - String fraktion; - int sessionId; + int sessionId; // TODO: nötig? // aus "sessions" Collection LocalDateTime dateTime; @@ -48,14 +45,6 @@ public class SpeechMetaData { this.speakerId = speakerId; } - public String getSpeakerName() {return speakerName;} - - public void setSpeakerName(String speakerName) {this.speakerName = speakerName;} - - public String getFraktion() {return fraktion;} - - public void setFraktion(String fraktion) {this.fraktion = fraktion;} - public int getSessionId() { return sessionId; } @@ -92,15 +81,12 @@ public class SpeechMetaData { public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof SpeechMetaData that)) return false; - return speechId == that.speechId && speakerId == that.speakerId && sessionId == that.sessionId - && Objects.equals(speechKey, that.speechKey) && Objects.equals(speakerName, that.speakerName) - && Objects.equals(fraktion, that.fraktion) && Objects.equals(dateTime, that.dateTime) - && Objects.equals(dateTimeString, that.dateTimeString) && Objects.equals(agendaTitle, that.agendaTitle); + return speechId == that.speechId && speakerId == that.speakerId && sessionId == that.sessionId && Objects.equals(speechKey, that.speechKey) && Objects.equals(dateTime, that.dateTime) && Objects.equals(dateTimeString, that.dateTimeString) && Objects.equals(agendaTitle, that.agendaTitle); } @Override public int hashCode() { - return Objects.hash(speechKey, speechId, speakerId, speakerName, fraktion, sessionId, dateTime, dateTimeString, agendaTitle); + return Objects.hash(speechKey, speechId, speakerId, sessionId, dateTime, dateTimeString, agendaTitle); } @Override @@ -109,8 +95,6 @@ public class SpeechMetaData { .add("speechKey='" + speechKey + "'") .add("speechId=" + speechId) .add("speakerId=" + speakerId) - .add("speakerName='" + speakerName + "'") - .add("fraktion='" + fraktion + "'") .add("sessionId=" + sessionId) .add("dateTime=" + dateTime) .add("dateTimeString='" + dateTimeString + "'") diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/TextContent.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/TextContent.java index 4bdfcc4..167ae99 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/TextContent.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/speech/TextContent.java @@ -2,9 +2,7 @@ package org.texttechnologylab.project.gruppe_05_1.domain.speech; import java.util.Objects; import java.util.StringJoiner; -/** - * Datei implementiert von Valentin - */ + public abstract class TextContent { String id; String speakerId; diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/export/TeXUtil.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/export/TeXUtil.java deleted file mode 100644 index fb4ca6e..0000000 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/export/TeXUtil.java +++ /dev/null @@ -1,373 +0,0 @@ -package org.texttechnologylab.project.gruppe_05_1.export; - -import org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_MongoDB_Impl; -import org.texttechnologylab.project.gruppe_05_1.domain.nlp.Sentiment; -import org.texttechnologylab.project.gruppe_05_1.domain.nlp.Topic; -import org.texttechnologylab.project.gruppe_05_1.util.Logger; -import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech; - -import java.io.*; -import java.nio.charset.StandardCharsets; -import java.nio.file.FileVisitResult; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.SimpleFileVisitor; -import java.nio.file.attribute.BasicFileAttributes; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.Arrays; -import java.util.Base64; -import java.util.List; -import java.util.Map; - -import static org.texttechnologylab.project.gruppe_05_1.Main.RESOURCES_DIR; -import static org.texttechnologylab.project.gruppe_05_1.Main.TEMP_EXPORT_DIR; -import static org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils.*; - -/** - * Utility Klasse für die Erstellung von TeX-Dateien und Konvertierung in Base64-kodierte PDF-Dateien. - * Implementiert von Jonas - */ -public class TeXUtil { - private static final String PREAMBLE = readFileContentFromTeXDir(); - private static final String BEGIN_DOCUMENT = "\\begin{document}\n"; - private static final String END_DOCUMENT = "\\end{document}"; - private static final String TABLEOFCONTENTS = "\\tableofcontents\n\\newpage\n"; - private static final String NEWPAGE = "\\newpage\n"; - - private static String readFileContentFromTeXDir() { - try { - return Files.readString(new File(RESOURCES_DIR, "tex/preamble.tex").toPath()); - } catch (IOException e) { - Logger.error("Failed to read file content from tex directory."); - Logger.error(e.getMessage()); - Logger.debug(Arrays.toString(e.getStackTrace())); - return ""; - } - } - - public static String getSpeechToTexComponent(String speechId) { - createTempDir(); - Speech speech = getSpeechByKey(speechId); - - Speaker_MongoDB_Impl speaker = getSpeakerById(String.valueOf(speech.getSpeakerId())); - - StringBuilder tex = new StringBuilder(); - - tex.append(speech.toTeX()); - - Map topics = Topic.condenseTopicInformation(getHtmlSpeechByKey(speechId).getNlp().getTopics()); - - return tex.toString().replace("$$SPEAKERINFO$$", speaker.toTeX()) - .replace("$$NLPMETADATA$$", - generateChartView(generateBubbleChartLatex(topics), - generateBarChartLatex(getPOSInformationCardinalitiesForSpeechById(speechId)), - generateRadarChartLatex(getHtmlSpeechByKey(speechId).getNlp().getSentiments()), "")); - } - - public static String getSpeechToTexComponent(Speech speech) { - createTempDir(); - Speaker_MongoDB_Impl speaker = getSpeakerById(String.valueOf(speech.getSpeakerId())); - - StringBuilder tex = new StringBuilder(); - - tex.append(speech.toTeX()); - - Map topics = null; - - Logger.pink(String.valueOf(speech.getSpeechKey())); - - try { - topics = Topic.condenseTopicInformation(getHtmlSpeechByKey(speech.getSpeechKey()).getNlp().getTopics()); - } catch (Exception e) { - topics = Map.of(); - } - - return tex.toString().replace("$$SPEAKERINFO$$", speaker.toTeX()).replace("$$NLPMETADATA$$", - generateChartView(generateBubbleChartLatex(topics), - generateBarChartLatex(getPOSInformationCardinalitiesForSpeechById(speech.getSpeechKey())), - generateRadarChartLatex(getHtmlSpeechByKey(speech.getSpeechKey()).getNlp().getSentiments()), "")); - } - - public static String getExportedSpeechBase64StringBySpeechId(String speechId) throws IOException, InterruptedException { - // Read preamble from resources directory tex/preamble.tex - return convertTexToBase64PDF(PREAMBLE.replace("$$EXPORTCATEGORY$$", "Speech " + speechId) + BEGIN_DOCUMENT + getSpeechToTexComponent(speechId) + END_DOCUMENT); - } - - public static String getBulkExportedSpeechBase64StringFromSpeakerById(String speakerId) throws IOException, InterruptedException { - // Fetch all speechIDs from the speaker - List speechIds = getSpeechesBySpeakerId(speakerId); - - StringBuilder tex = new StringBuilder(); - - tex.append(PREAMBLE.replace("$$EXPORTCATEGORY$$", "Speaker ID" + speakerId)); - tex.append(BEGIN_DOCUMENT); - tex.append(TABLEOFCONTENTS); - for (Speech speech : speechIds) { - tex.append(getSpeechToTexComponent(speech)); - tex.append(NEWPAGE); - } - tex.append(END_DOCUMENT); - - return convertTexToBase64PDF(tex.toString()); - } - - public static String getBulkExportedAllSpeechesBase64String() throws IOException, InterruptedException { - // Fetch all speechIDs from the speaker - List speechIds = getAllSpeeches(); - - StringBuilder tex = new StringBuilder(); - - tex.append(PREAMBLE.replace("$$EXPORTCATEGORY$$", "all speeches")); - tex.append(BEGIN_DOCUMENT); - tex.append(TABLEOFCONTENTS); - for (Speech speech : speechIds) { - tex.append(getSpeechToTexComponent(speech)); - tex.append(NEWPAGE); - } - tex.append(END_DOCUMENT); - - return convertTexToBase64PDF(tex.toString()); - } - - public static String getBulkExportedAllSpeechesWithTopicBase64String(String topic) throws IOException, InterruptedException { - // Fetch all speechIDs from the speaker - List speechIds = getAllSpeechesWithTopic(topic); - - StringBuilder tex = new StringBuilder(); - - tex.append(PREAMBLE.replace("$$EXPORTCATEGORY$$", "Speeches with topic " + topic)); - tex.append(BEGIN_DOCUMENT); - tex.append(TABLEOFCONTENTS); - for (Speech speech : speechIds) { - tex.append(getSpeechToTexComponent(speech)); - tex.append(NEWPAGE); - } - tex.append(END_DOCUMENT); - - return convertTexToBase64PDF(tex.toString()); - } - - public static String getBulkExportedSpeechesBase64String(List speechIds) throws IOException, InterruptedException { - StringBuilder tex = new StringBuilder(); - - tex.append(PREAMBLE.replace("$$EXPORTCATEGORY$$", "selected speeches")); - tex.append(BEGIN_DOCUMENT); - tex.append(TABLEOFCONTENTS); - for (String speechId : speechIds) { - tex.append(getSpeechToTexComponent(speechId)); - tex.append(NEWPAGE); - } - tex.append(END_DOCUMENT); - - return convertTexToBase64PDF(tex.toString()); - } - - public static String convertTexToBase64PDF(String tex) throws IOException, InterruptedException { - // Create a temporary directory - File tempDir = new File(TEMP_EXPORT_DIR); - createTempDir(); - - // Format tex string to UTF-8 - tex = new String(tex.getBytes("UTF-8")); - tex = tex.replaceAll("#", "\\\\#"); // Replace all # with \# - tex = tex.replaceAll("[^\\x00-\\x7F]", ""); // Replace all non-ASCII characters - - // Local datetime stamp - String dateTime = DateTimeFormatter.ofPattern("yyyy-MM-dd_HH-mm-ss").format(LocalDateTime.now()); - // Write the LaTeX content to a temporary .tex file - File texFile = new File(tempDir, "speech_export" + dateTime + ".tex"); - try (BufferedWriter writer = new BufferedWriter(new FileWriter(texFile, StandardCharsets.UTF_8))) { - writer.write(tex); - } - - // Run pdflatex to generate the .pdf file - //String command = "pdflatex -interaction=nonstopmode -output-directory=" + tempDir.getAbsolutePath() + " " + texFile.getAbsolutePath(); - // using latexmk instead of pdflatex to fix TOC not generating properly - String command = "latexmk -pdf -interaction=nonstopmode -outdir=" + tempDir.getAbsolutePath() + " " + texFile.getAbsolutePath(); - Process process = Runtime.getRuntime().exec(command); - - - BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream())); - Logger.debug("Standard Output:"); - String s; - while ((s = stdInput.readLine()) != null) { - Logger.debug(s); - } - Logger.debug("LaTeX Process ended with exit code " + process.waitFor()); - - // Path to the generated PDF file - File pdfFile = new File(tempDir, "speech_export" + dateTime + ".pdf"); - - // Check if the PDF was created - if (!pdfFile.exists()) { - throw new IOException("PDF generation failed."); - } - - // Read the PDF file into a byte array - byte[] pdfBytes = Files.readAllBytes(pdfFile.toPath()); - - // Convert the byte array to a Base64 encoded string - return Base64.getEncoder().encodeToString(pdfBytes); - } - - public static void createTempDir() { - File tempDir = new File(TEMP_EXPORT_DIR); - if (!tempDir.exists()) { - tempDir.mkdirs(); - } - } - - public static void deleteTeXTempDirContents() throws IOException { - // Walk through the directory - Files.walkFileTree(Path.of(TEMP_EXPORT_DIR), new SimpleFileVisitor() { - @Override - public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { - // Delete file - Files.delete(file); - return FileVisitResult.CONTINUE; - } - - @Override - public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException { - // Delete the directory after its contents are deleted - Files.delete(dir); - return FileVisitResult.CONTINUE; - } - }); - } - - public static void tryDeleteTeXTempDirContents() { - try { - deleteTeXTempDirContents(); - } catch (IOException e) { - Logger.error("Failed to delete temporary folder."); - Logger.error(e.getMessage()); - Logger.debug(Arrays.toString(e.getStackTrace())); - } - } - - public static boolean isTeXSdkInstalled() { - try { - Process process = Runtime.getRuntime().exec("pdflatex --version"); - BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream())); - String s; - while ((s = stdInput.readLine()) != null) { - if (s.contains("pdfTeX")) { - return true; - } - } - } catch (IOException ignored) {} - return false; - } - - public static String generateChartView(String bubbleChartTeX, String barChartTeX, String radarChartTeX, String sunburstCharTeX) { - StringBuilder tex = new StringBuilder(); - // 2x2 minipage layout - tex.append("\\begin{minipage}{1\\textwidth}\n") - .append(barChartTeX) - .append("\\end{minipage}\n") - .append("\\begin{minipage}{0.4\\textwidth}\n") - .append(bubbleChartTeX) - .append("\\end{minipage}\n") - .append("\\begin{minipage}{0.3\\textwidth}\n") - .append(radarChartTeX) - .append("\\end{minipage}\n") - .append("\\begin{minipage}{0.3\\textwidth}\n") - .append(sunburstCharTeX) - .append("\\end{minipage}\n"); - - return tex.toString(); - } - - public static String generateBubbleChartLatex(Map bubbleData) { - StringBuilder tex = new StringBuilder(); - - tex.append("Topics Information\\\\\n"); - - // draw generic table with String | Double - tex.append("\\begin{tabular}{|c|c|}\n") - .append("\\hline\n") - .append("Category & Value \\\\ \\hline\n"); - - for (Map.Entry entry : bubbleData.entrySet()) { - tex.append(entry.getKey()).append(" & ").append(entry.getValue()).append(" \\\\ \\hline\n"); - } - - tex.append("\\end{tabular}\n\n"); - - return tex.toString(); - } - - public static String generateBarChartLatex(Map barData) { - StringBuilder tex = new StringBuilder(); - - tex.append("POS Information\\\\\n"); - - tex.append("\n" + - "\\scalebox{0.25}{" + // the only way to reliably show most of the POS is by scaling it down this far - "\\begin{tikzpicture}\n" + - "\n" + - "\\begin{axis}[\n" + - " ybar,\n" + - " width=4\\textwidth,\n" + - " height=0.5\\textwidth,\n"); - - StringBuilder graphData = new StringBuilder(); - StringBuilder xCords = new StringBuilder(); - xCords.append("{"); - for (Map.Entry entry : barData.entrySet()) { - xCords.append(entry.getKey().replace(",", "\\,")).append(", "); - graphData.append("\t(").append(entry.getKey().replace(",", "\\,")).append(", ").append(entry.getValue()).append(")\n"); - } - xCords.append("}"); - String xCordsString = xCords.toString().replace("$", "\\$"); - - tex.append(" symbolic x coords=").append(xCordsString).append(",\n" + - " xtick=data,\n" + - " ylabel={Value},\n" + - " xlabel={Category},\n" + - " ymin=0, ymax=800\n" + - " ]" + - "\\addplot coordinates {\n"); - tex.append(graphData.toString().replace("$", "\\$")); - tex.append("};\n" + - "\\end{axis}\n" + - "\n" + - "\\end{tikzpicture}" + - "}"); - - return tex.toString(); - } - - public static String generateRadarChartLatex(List sentimets) { - StringBuilder tex = new StringBuilder(); - - /*tex.append("\\begin{tikzpicture}\n" + - " \\coordinate (origin) at (0, 0);\n" + - "\n" + - " % Define the axes (3 axes) with unit length (1)\n" + - " \\foreach[count=\\i] \\dim in {Negative, Neutral, Positive}{\n" + - " \\coordinate (\\i) at (\\i * 360 / 3: 1); % Set radius to 1 for unit length axes\n" + - " \\node at (\\i * 360 / 3: 1.1) {\\huge\\dim}; % Axis labels (slightly outside)\n" + - " \\draw (origin) -- (\\i); % Draw the axes\n" + - " }"); - - for (Sentiment sentiment : sentimets) { - tex.append("\\foreach \\i/\\value in {1/") - .append(sentiment.getNegative()) - .append(", 2/") - .append(sentiment.getNeutral()) - .append(", 3/") - .append(sentiment.getPositive()) - .append("}{\n") - .append(" \\coordinate (point-\\i) at (\\i * 360 / 3: \\value);\n") - .append(" }\n"); - } - - tex.append("\\draw [fill=blue!20, opacity=.7] (point-1) -- (point-2) -- (point-3) -- cycle;\n" + - "\\end{tikzpicture}");*/ - - return tex.toString(); - } -} diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/export/XMLUtil.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/export/XMLUtil.java deleted file mode 100644 index ef51dc8..0000000 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/export/XMLUtil.java +++ /dev/null @@ -1,191 +0,0 @@ -package org.texttechnologylab.project.gruppe_05_1.export; - -import org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_MongoDB_Impl; -import org.texttechnologylab.project.gruppe_05_1.domain.html.HtmlSpeech; -import org.texttechnologylab.project.gruppe_05_1.domain.nlp.*; -import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; -import java.io.StringWriter; -import java.util.List; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import static org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils.*; - -/** - * Utility Klasse für die Erstellung von XML-Dateien und Konvertierung in Base64-kodierte PDF-Dateien. - * Implementiert von Jonas - */ -public class XMLUtil { - public static String documentToString(Document doc) { - try { - TransformerFactory transformerFactory = TransformerFactory.newInstance(); - Transformer transformer = transformerFactory.newTransformer(); - DOMSource source = new DOMSource(doc); - - // Writer to store the XML string - StringWriter writer = new StringWriter(); - StreamResult result = new StreamResult(writer); - - // Perform transformation - transformer.transform(source, result); - - return writer.toString(); - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } - - public static Document createXmlDocument() throws ParserConfigurationException { - // create new doc - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - Document doc = factory.newDocumentBuilder().newDocument(); - - Element speechesElement = doc.createElement("speeches"); - doc.appendChild(speechesElement); - - return doc; - } - - public static void addNlpData(Document doc, HtmlSpeech nlpData) { - Element nlpDataElement = doc.createElement("nlp"); - - Element sentimentsElement = doc.createElement("sentiments"); - nlpDataElement.appendChild(sentimentsElement); - - - List sentiments = nlpData.getNlp().getSentiments(); - for (Sentiment sentiment: sentiments) { - sentimentsElement.appendChild(sentiment.toXML(doc)); - } - - Element topicsElement = doc.createElement("topics"); - nlpDataElement.appendChild(topicsElement); - - List topics = nlpData.getNlp().getTopics(); - if (topics != null) { - for (Topic topic: topics) { - topicsElement.appendChild(topic.toXML(doc)); - } - } - - Element namedEntitiesElement = doc.createElement("NamedEntities"); - nlpDataElement.appendChild(namedEntitiesElement); - - List namedEntities = nlpData.getNlp().getNamedEntities(); - if (namedEntities != null) { - for (NamedEntity namedEntity: namedEntities) { - namedEntitiesElement.appendChild(namedEntity.toXML(doc)); - } - } - - Element posElement = doc.createElement("pos"); - nlpDataElement.appendChild(posElement); - - List posElements = nlpData.getNlp().getPosList(); - if (posElements != null) { - for (Pos pos: posElements) { - posElement.appendChild(pos.toXML(doc)); - } - } - - doc.getFirstChild().appendChild(nlpDataElement); - } - - public static void addSpeechById(Document doc, String speechId) { - // get speeches element - Element speechesElement = (Element) doc.getElementsByTagName("speeches").item(0); - - // create new speech element - Element speechElement = doc.createElement("speech"); - speechesElement.appendChild(speechElement); - - Speech speech = getSpeechByKey(speechId); - Speaker_MongoDB_Impl speaker = getSpeakerById(String.valueOf(speech.getSpeakerId())); - - HtmlSpeech htmlSpeech = getHtmlSpeechByKey(speechId); - addNlpData(doc, htmlSpeech); - - speechElement.appendChild(speaker.toXML(doc)); - speechElement.appendChild(speech.toXML(doc)); - } - - public static void addSpeechBySpeech(Document doc, Speech speech) { - // get speeches element - Element speechesElement = (Element) doc.getElementsByTagName("speeches").item(0); - - // create new speech element - Element speechElement = doc.createElement("speech"); - speechesElement.appendChild(speechElement); - - Speaker_MongoDB_Impl speaker = getSpeakerById(String.valueOf(speech.getSpeakerId())); - - HtmlSpeech htmlSpeech = getHtmlSpeechByKey(speech.getSpeechKey()); - addNlpData(doc, htmlSpeech); - - speechElement.appendChild(speaker.toXML(doc)); - speechElement.appendChild(speech.toXML(doc)); - } - - public static String getExportedSpeechById(String speechId) throws ParserConfigurationException { - Document doc = createXmlDocument(); - - addSpeechById(doc, speechId); - - return documentToString(doc); - } - - public static String getExportedSpeechesFromSpeakerById(String speakerId) throws ParserConfigurationException { - Document doc = createXmlDocument(); - - List speeches = getSpeechesBySpeakerId(speakerId); - - for (Speech speech : speeches) { - addSpeechBySpeech(doc, speech); - } - - return documentToString(doc); - } - - public static String getExportedAllSpeeches() throws ParserConfigurationException { - Document doc = createXmlDocument(); - - List speeches = getAllSpeeches(); - - for (Speech speech : speeches) { - addSpeechBySpeech(doc, speech); - } - - return documentToString(doc); - } - - public static String getExportedSpeechesWhithTopic(String topic) throws ParserConfigurationException { - Document doc = createXmlDocument(); - - List speeches = getAllSpeechesWithTopic(topic); - - for (Speech speech : speeches) { - addSpeechBySpeech(doc, speech); - } - - return documentToString(doc); - } - - public static String getExportedSpeechesbyIds(List speechIds) throws ParserConfigurationException { - Document doc = createXmlDocument(); - - for (String speechId : speechIds) { - addSpeechById(doc, speechId); - } - - return documentToString(doc); - } -} diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/nlp/NlpUtils.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/nlp/NlpUtils.java index 467b1b5..e01e647 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/nlp/NlpUtils.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/nlp/NlpUtils.java @@ -2,7 +2,9 @@ package org.texttechnologylab.project.gruppe_05_1.nlp; import com.mongodb.client.model.Filters; import com.mongodb.client.model.UpdateOneModel; +import com.mongodb.client.model.Updates; import com.mongodb.client.model.WriteModel; +import de.tudarmstadt.ukp.dkpro.core.api.lexmorph.type.pos.POS; import de.tudarmstadt.ukp.dkpro.core.api.metadata.type.DocumentMetaData; import de.tudarmstadt.ukp.dkpro.core.api.segmentation.type.Sentence; import de.tudarmstadt.ukp.dkpro.core.api.segmentation.type.Token; @@ -14,6 +16,9 @@ import org.apache.uima.fit.factory.JCasFactory; import org.apache.uima.fit.util.JCasUtil; import org.apache.uima.jcas.JCas; import org.apache.uima.resource.ResourceInitializationException; +import org.apache.uima.resource.metadata.TypeSystemDescription; +import org.apache.uima.util.CasCreationUtils; +import org.apache.uima.util.XMLInputSource; import org.bson.Document; import org.bson.conversions.Bson; import org.dkpro.core.io.xmi.XmiWriter; @@ -25,7 +30,9 @@ import org.texttechnologylab.DockerUnifiedUIMAInterface.driver.DUUIUIMADriver; import org.texttechnologylab.DockerUnifiedUIMAInterface.lua.DUUILuaContext; import org.texttechnologylab.annotation.NamedEntity; import org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler; +import org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Speech_MongoDB_Impl; import org.texttechnologylab.project.gruppe_05_1.util.Logger; +import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech; import org.texttechnologylab.uima.type.Sentiment; import org.xml.sax.SAXException; @@ -37,6 +44,9 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.*; import java.util.stream.Collectors; +import java.util.zip.GZIPInputStream; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; import static org.apache.uima.fit.factory.AnalysisEngineFactory.createEngineDescription; @@ -48,10 +58,9 @@ public class NlpUtils { private static final String TYPE_SYSTEM_DESCRIPTOR_PATH = "/speeches/TypeSystem.xml.gz"; private static final int MAX_FEATURE_LENGTH = 10000; - /** - * implementiert von Valentin - */ + public static void createNlpData() { + // Source: Dr. Abrami - Beispiel TODO duuiInit(); runDockerDriver(); try { @@ -69,9 +78,6 @@ public class NlpUtils { createSentimentInfo(); } - /** - * implementiert von Valentin - */ private static void duuiInit() { DUUILuaContext ctx; @@ -120,7 +126,6 @@ public class NlpUtils { } /** - * implementiert von Valentin * Initialization of a sample CAS document * @return JCas object */ @@ -148,9 +153,7 @@ public class NlpUtils { return pCas; } - /** - * implementiert von Valentin - */ + public static void runDockerDriver() { // reset existing pipeline-components @@ -195,9 +198,7 @@ public class NlpUtils { Logger.info(JCasUtil.selectCovered(org.hucompute.textimager.uima.type.Sentiment.class, sentence).toString()); }); } - /** - * implementiert von Valentin - */ + private static void casInit() { JCas jcas; try { @@ -251,7 +252,6 @@ public class NlpUtils { /** - * implementiert von Valentin * Execution of video processing via DUUI using the RemoteDriver * @throws Exception in case of an error */ @@ -325,15 +325,6 @@ public class NlpUtils { } - /** - * Führt den Remote-NLP-Driver auf unprozessierten Reden aus und aktualisiert die Datenbank. - *

- * Es werden alle Reden ohne "analysisResults" abgerufen, mit den Remote-Komponenten (spaCy und Vader) - * verarbeitet, die NLP-Ergebnisse extrahiert und per Bulk-Update in der Datenbank gespeichert. - *

- * - * @throws Exception falls ein Fehler auftritt. - */ public static void runRemoteDriver() throws Exception { DUUILuaContext luaContext = new DUUILuaContext().withJsonLibrary(); pComposer = new DUUIComposer() @@ -369,8 +360,8 @@ public class NlpUtils { bulkOperations.add(new UpdateOneModel<>(updateFilter, update)); } if (!bulkOperations.isEmpty()) { - Logger.debug("Processing of " + bulkOperations.size() + " documents finished"); - Logger.debug("uploading..."); + System.out.println("Processing of " + bulkOperations.size() + " documents finished"); + System.out.println("uploading..."); mongoDBHandler.bulkWriteNlpData(bulkOperations); Logger.debug("Bulk write completed for " + bulkOperations.size() + " documents."); mongoDBHandler.close(); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/nlp/XmiExtractor.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/nlp/XmiExtractor.java index d367238..89fee0d 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/nlp/XmiExtractor.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/nlp/XmiExtractor.java @@ -6,6 +6,7 @@ import com.mongodb.client.model.WriteModel; import org.apache.uima.fit.util.JCasUtil; import org.bson.Document; import java.io.*; +import java.nio.charset.StandardCharsets; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; @@ -23,12 +24,7 @@ import org.texttechnologylab.project.gruppe_05_1.util.Logger; import static org.texttechnologylab.project.gruppe_05_1.Main.JCAS_SPEECHES_TYPESYSTEM_DIR; -/** - * Extrahiert NLP‑Analyseergebnisse aus komprimierten XMI‑Dateien und lädt sie batchweise in MongoDB hoch. - * Liest .xmi.gz Dateien aus einem ZIP‑Archiv, erstellt für jede Rede ein "analysisResults" Dokument und führt Bulk‑Writes durch. - * Implementiert von Leon - * Modifiziert von Henry - */ + public class XmiExtractor { private final List> bulkOperations = Collections.synchronizedList(new ArrayList<>()); @@ -40,13 +36,6 @@ public class XmiExtractor { mongoDBHandler = new MongoDBHandler(); } - /** - * Liest alle .xmi.gz Dateien aus dem ZIP‑Archiv "speeches/20.zip", extrahiert deren NLP‑Daten - * und lädt sie in Form von BATCH_SIZE Dokumenten in MongoDB hoch. - * @throws IOException falls die ZIP‑Datei nicht gefunden oder ein Lese-/Schreibfehler auftritt - * Implementiert von Leon - * Modifiziert von Henry - */ public void extractAndUploadXmiData() throws IOException { InputStream resourceStream = getClass().getClassLoader().getResourceAsStream("speeches/20.zip"); if (resourceStream == null) { @@ -96,13 +85,6 @@ public class XmiExtractor { mongoDBHandler.close(); } - /** - * Liest ein komprimiertes XMI ein und erstellt Bulk‑Update‑Operationen für MongoDB. - * @param inputStream komprimierter XMI‑InputStream - * @param filename Name der Datei im ZIP‑Archiv (für speechKey) - * Implementiert von Leon - * Modifiziert von Henry - */ private void processXmiGzStream(InputStream inputStream, String filename) { JCas jCas = null; try (GZIPInputStream gis = new GZIPInputStream(inputStream)) { @@ -199,21 +181,11 @@ public class XmiExtractor { } } - /** - * Extrahiert aus dem Dateinamen (z.B. "20/ABC123.xmi.gz") den speechKey. - * @param filename Name der Datei innerhalb des ZIP‑Archivs - * @return speechKey oder null, wenn das Format nicht erkannt wird - * Implementiert von Leon - */ private static String extractSpeechKeyFromFilename(String filename) { String baseName = filename.replace(".xmi.gz", ""); return baseName.replace("20/", ""); } - /** - * Führt alle gesammelten BulkWrite-Operationen in MongoDB aus und leert den Batch. - * Implementiert von Henry - */ private synchronized void flushBatch() { if (!bulkOperations.isEmpty()) { mongoDBHandler.bulkWriteNlpData(bulkOperations); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/FrontEndController.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/FrontEndController.java index c44818d..c0f675f 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/FrontEndController.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/FrontEndController.java @@ -1,32 +1,23 @@ package org.texttechnologylab.project.gruppe_05_1.rest; -import com.mongodb.client.MongoCollection; +import gnu.trove.impl.sync.TSynchronizedShortObjectMap; import io.javalin.http.Context; import io.javalin.openapi.*; +import org.apache.commons.collections.bag.SynchronizedSortedBag; import org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils; +import org.texttechnologylab.project.gruppe_05_1.domain.html.HtmlSpeech; import org.texttechnologylab.project.gruppe_05_1.domain.html.Parlamentarier; -import org.texttechnologylab.project.gruppe_05_1.domain.nlp.Sentiment; -import org.texttechnologylab.project.gruppe_05_1.domain.nlp.Token; -import org.texttechnologylab.project.gruppe_05_1.domain.nlp.Topic; +import org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails; +import org.texttechnologylab.project.gruppe_05_1.domain.speech.SpeechMetaData; +import org.texttechnologylab.project.gruppe_05_1.util.Logger; import org.texttechnologylab.project.gruppe_05_1.util.PPRUtils; -import com.mongodb.client.model.Aggregates; -import com.mongodb.client.model.Accumulators; -import com.mongodb.client.model.Filters; -import com.mongodb.client.model.Projections; -import org.bson.Document; -import org.bson.conversions.Bson; +import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.CompletableFuture; -import java.util.stream.Collectors; -/** - * Controller für die Frontend‑Routen. - * Größtenteils implementiert von Jonas - */ public class FrontEndController { @OpenApi( summary = "Get the homepage.", @@ -42,24 +33,6 @@ public class FrontEndController { ctx.render("home.ftl"); } - @OpenApi( - summary = "Get the about page.", - description = "Get the about", - operationId = "getAbout", - path = "/about", - methods = HttpMethod.GET, - tags = {"About"}, - responses = { - @OpenApiResponse(status = "200") - }) - public static void getAbout(Context ctx) { - ctx.render("about.ftl"); - } - - /* - TODO: getAllParlamentarier gibt es hier UND im ParlamentarierController (etwas unterschiedliche Implementierungen) - --> konsolidieren! - */ @OpenApi( summary = "Get alle Parlamentarier. Man kann nach Vor-, Nachname oder Partei filtern.", description = "Listet alle Parlamentarier bzw. diejenige, welche den Filter entsprechen", @@ -74,113 +47,115 @@ public class FrontEndController { @OpenApiResponse(status = "200", content = {@OpenApiContent(from = Parlamentarier[].class)}) }) public static void getAllParlamentarier(Context ctx) { + String filter = ctx.queryParam("filter"); + Logger.info("Filter: '" + filter + "'"); - List parlamentarier = MongoPprUtils.getFilteredMembers(ctx); + List parlamentarier = MongoPprUtils.getAllParlamentarier(filter); PPRUtils.sortParlamentarierByName(parlamentarier); + Logger.info(parlamentarier.size() + " MdBs gefunden"); Map attributes = new HashMap<>(); attributes.put("parlamentarier", parlamentarier); - attributes.put("parties", MongoPprUtils.getAllPartiesOfSpeakers()); + attributes.put("filter", filter); ctx.render("parlamentarier.ftl", attributes); } - @OpenApi( - summary = "Get the export page.", - description = "Get the export page", - operationId = "getExportPage", - path = "/export", - methods = HttpMethod.GET, - tags = {"Export"}, - responses = { - @OpenApiResponse(status = "200") - }) - public static void getExportPage(Context ctx) { - ctx.render("export.ftl"); - } + /** + * Zeigt die Details eines Parlamentariers an: + * - persönliche Daten (Geburtsdatum, -ort, Vita, Religion etc.). + * - Mitgliederschaften, falls vorhanden + * - Fotos, falls vorhanden + * @param ctx JavaLin-Context + */ @OpenApi( - summary = "Get the about page.", - description = "Get the about page", - operationId = "getAboutPage", - path = "/about", + summary = "Zeigt die Details eines Parlamentariers an", + description = "Zeigt persönliche Daten, Mitgliederschaften, Fotos", + operationId = "getParlamentarierDetails", + path = "/portfolio/{id}", methods = HttpMethod.GET, - tags = {"About"}, + tags = {"Parlamentarier"}, + pathParams = { + @OpenApiParam(name = "id", description = "id des Parlamentariers", required = true), + }, responses = { - @OpenApiResponse(status = "200") + @OpenApiResponse(status = "200", content = {@OpenApiContent(from = ParlamentarierDetails.class)}) }) - public static void getAboutPage(Context ctx) { - ctx.render("about.ftl"); + public static void getParlamentarierDetails(Context ctx) { + String id = ctx.pathParam("id"); + Logger.info("getParlamentarierDetails, ID = " + id); + + ParlamentarierDetails pd = MongoPprUtils.getParlamentarierDetailsByID(id); + + Map attributes = new HashMap<>(); + attributes.put("p", pd); + Long speechCount = MongoPprUtils.countSpeechesOfSpeaker(pd.getId()); + attributes.put("speechesCount", speechCount); + attributes.put("pic", MongoPprUtils.getMemberPhoto(pd.getId())); + if (speechCount == 0) { + attributes.put("speechesPlaceholder", null); + } else { + attributes.put("speechesPlaceholder", new ArrayList<>()); + } + + ctx.render("parlamentarierDetails.ftl", attributes); } /** - * Aggregiert für alle Reden die NLP‑Ergebnisse (Topics, POS, Named Entities, erste Sentiment‑Objekte) - * und liefert die zusammengefassten Daten an die Charts‑Ansicht. - * @param ctx Javalin Context zum Rendern der Seite mit den aggregierten Chart‑Daten - * Implementiert von Leon + * Liste alle Reden eines Parlamentariers an + * @param ctx Javalin Context */ - public static void getCharts(Context ctx) { - MongoCollection col = MongoPprUtils.getSpeechCollection(); + @OpenApi( + summary = "Liste alle Reden eines Parlamentariers an", + description = "Liste alle Reden eines Parlamentariers an", + operationId = "listSpeeches", + path = "/reden/{id}", + methods = HttpMethod.GET, + tags = {"Rede"}, + pathParams = { + @OpenApiParam(name = "id", description = "id des Parlamentariers", required = true), + }, + responses = { + @OpenApiResponse(status = "200", content = {@OpenApiContent(from = Speech[].class)}) + }) + public static void listSpeeches(Context ctx) { + String parlamentarierId = ctx.pathParam("id"); - List topicsPipeline = List.of( - Aggregates.match(Filters.exists("analysisResults.topics.0")), - Aggregates.unwind("$analysisResults.topics"), - Aggregates.group( - "$analysisResults.topics.topic", - Accumulators.sum("totalScore", "$analysisResults.topics.score") - ) - ); - List posPipeline = List.of( - Aggregates.match(Filters.exists("analysisResults.tokens")), - Aggregates.unwind("$analysisResults.tokens"), - Aggregates.group("$analysisResults.tokens.pos", Accumulators.sum("count", 1)) - ); - List nePipeline = List.of( - Aggregates.match(Filters.exists("analysisResults.namedEntities")), - Aggregates.unwind("$analysisResults.namedEntities"), - Aggregates.group("$analysisResults.namedEntities.type", Accumulators.sum("count", 1)) - ); - List sentimentsPipeline = List.of( - Aggregates.match(Filters.exists("analysisResults.sentiments")), - Aggregates.project(Projections.computed("firstSentiment", - new Document("$arrayElemAt", List.of("$analysisResults.sentiments", 0)))), - Aggregates.replaceRoot("$firstSentiment") - ); + ParlamentarierDetails p = MongoPprUtils.getParlamentarierDetailsByID(parlamentarierId); + List speechMetaDataList = MongoPprUtils.getSpeechesMetadataForSpeaker(parlamentarierId); - CompletableFuture> topicsF = CompletableFuture.supplyAsync(() -> col.aggregate(topicsPipeline).into(new ArrayList<>())); - CompletableFuture> posF = CompletableFuture.supplyAsync(() -> col.aggregate(posPipeline).into(new ArrayList<>())); - CompletableFuture> neF = CompletableFuture.supplyAsync(() -> col.aggregate(nePipeline).into(new ArrayList<>())); - CompletableFuture> sentF = CompletableFuture.supplyAsync(() -> col.aggregate(sentimentsPipeline).into(new ArrayList<>())); + Map attributes = new HashMap<>(); + attributes.put("p", p); + attributes.put("speechesMetaDataList", speechMetaDataList); + ctx.render("showSpeechesList.ftl", attributes); + } - CompletableFuture.allOf(topicsF, posF, neF, sentF).join(); + /** + * Zeige eine bestimmte Rede des Parlamentariers an + * @param ctx Javalin Context + */ + @OpenApi( + summary = "Zeige eine bestimmte Rede des Parlamentariers an", + description = "Zeige eine bestimmte Rede des Parlamentariers an", + operationId = "showSpeech", + path = "/reden/{id}/{redeID}", + methods = HttpMethod.GET, + tags = {"Rede"}, + pathParams = { + @OpenApiParam(name = "id", description = "id des Parlamentariers", required = true), + @OpenApiParam(name = "redeId", description = "id der Rede", required = true), + }, + responses = { + @OpenApiResponse(status = "200", content = {@OpenApiContent(from = Speech.class)}) + }) + public static void showSpeech(Context ctx) { + String redeId = ctx.pathParam("redeId"); - List aggregatedTopics = topicsF.join().stream() - .map(d -> new Topic(d.getString("_id"), d.getDouble("totalScore"), null)) - .collect(Collectors.toList()); + Map attributes = new HashMap<>(); - List aggregatedPOS = posF.join().stream() - .map(d -> new Token(d.getString("_id"), String.valueOf(d.getInteger("count")), "")) - .collect(Collectors.toList()); + HtmlSpeech speech = MongoPprUtils.getSpeechByKey(redeId); + attributes.put("s", speech); - Map> aggregatedNE = new HashMap<>(); - neF.join().forEach(d -> { - List entities = d.getList("entities", Document.class); - Map typeMap = (entities == null) - ? new HashMap<>() - : entities.stream() - .collect(Collectors.toMap( - e -> e.getString("text"), - e -> e.getInteger("count") - )); - aggregatedNE.put(d.getString("_id"), typeMap); - }); - - List aggregatedSentiments = Sentiment.readSentimentsFromMongo(sentF.join()); - - ctx.render("charts.ftl", Map.of( - "aggregatedTopics", aggregatedTopics, - "aggregatedPOS", aggregatedPOS, - "aggregatedNE", aggregatedNE, - "aggregatedSentiments", aggregatedSentiments - )); + ctx.render("speech.ftl", attributes); } } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/JavalinConfig.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/JavalinConfig.java index 0541218..8136ed6 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/JavalinConfig.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/JavalinConfig.java @@ -9,7 +9,6 @@ import java.io.InputStream; import java.util.Properties; /** - * Datei implementiert von Valentin * Diese Klasse dient der Konfiguruerung von Javalin */ public class JavalinConfig extends Properties { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/ParlamentarierController.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/ParlamentarierController.java index d9198b9..c522aa2 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/ParlamentarierController.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/ParlamentarierController.java @@ -15,7 +15,6 @@ import java.util.List; import java.util.Map; /** - * Datei implementiert von Valentin * Dieser Kontroller zeigt Informationen um den Parlamentariern: * 1. Die Einstiegsseite: eine Filter-fähige Auflistung der Parlamentariern. * Angezeigt werden Vor- und Nachname, Partei sowie ID. @@ -110,4 +109,30 @@ public class ParlamentarierController { ctx.render("parlamentarierDetails.ftl", attributes); } + + /** + * Lösche alle Abgeordnete. + * @param ctx JavaLin-Context + */ + + @OpenApi( + summary = "Lösche alle Parlamentarier", + description = "Lösche alle Parlamentarier aus der Datenbank", + operationId = "deleteAllParlamentarier", + path = "/deleteParlamentarier", + methods = HttpMethod.DELETE, + tags = {"Parlamentarier"}, + responses = { + @OpenApiResponse(status = "204", content = {@OpenApiContent(from = Parlamentarier[].class)}) + }) + public static void deleteAllParlamentarier(Context ctx) { + + MongoPprUtils.truncateSpeakerCollection(); + List parlamentarier = MongoPprUtils.getAllParlamentarier(""); + + Map attributes = new HashMap<>(); + attributes.put("parlamentarier", parlamentarier); + attributes.put("filter", "filter"); + ctx.render("parlamentarier.ftl", attributes); + } } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/RESTHandler.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/RESTHandler.java index 6092e48..bf1fc31 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/RESTHandler.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/RESTHandler.java @@ -15,9 +15,6 @@ import java.io.IOException; import static org.texttechnologylab.project.gruppe_05_1.Main.JAVALIN_STATIC_FILES_DIR; import static org.texttechnologylab.project.gruppe_05_1.Main.JAVALIN_TEMPLATE_DIR; -/** - * Datei implementiert von Valentin - */ public class RESTHandler { public void startJavalin() { @@ -61,32 +58,11 @@ public class RESTHandler { // Parlamentarier app.get("/", FrontEndController::getHomepage); app.get("/members", FrontEndController::getAllParlamentarier); - app.get("/portfolio/{id}", ParlamentarierController::getParlamentarierDetails); - app.get("/export", FrontEndController::getExportPage); - app.get("/about", FrontEndController::getAboutPage); + app.get("/portfolio/{id}", FrontEndController::getParlamentarierDetails); + app.delete("/deleteParlamentarier", ParlamentarierController::deleteAllParlamentarier); // Reden - app.get("/reden/{id}", SpeechController::listSpeeches); // zeige Reden eines Parlamentariers an - app.get("/reden/{id}/{redeId}", SpeechController::showSpeech); // zeige eine bestimmte Rede des Parlamentariers an - - - app.get("/reden", SpeechController::listAllSpeeches); // zeige alle Reden an (Filtern möglich) - - // Charts - app.get("/charts", FrontEndController::getCharts); - - app.get("/export/pdf/speech/{id}", SpeechesLatexExportController::exportSpeech); // exportiere eine Rede als PDF - app.get("/export/pdf/speech", SpeechesLatexExportController::exportSpeech); // exportiere eine Rede als PDF - app.get("/export/pdf/speaker/{id}", SpeechesLatexExportController::exportSpeechesFromSpeaker); // exportiere alle Reden eines Parlamentariers als PDF - app.get("/export/pdf/topic/{topic}", SpeechesLatexExportController::exportSpeechesWithTopic); // exportiere alle Reden zu einem Thema als PDF - app.get("/export/pdf/all", SpeechesLatexExportController::exportAllSpeeches); // exportiere alle Reden als PDF CAUTION!!!: This will take forever but is required in the exercise - app.get("/export/pdf/speeches/{speechIds}", SpeechesLatexExportController::exportSpeeches); // exportiere eine Liste von Reden als PDF - - app.get("/export/xml/speech/{id}", SpeechesXMLExportController::exportSpeech); // exportiere eine Rede als XML - app.get("/export/xml/speech", SpeechesXMLExportController::exportSpeech); // exportiere eine Rede als XML - app.get("/export/xml/speaker/{id}", SpeechesXMLExportController::exportSpeechesFromSpeaker); // exportiere alle Reden eines Parlamentariers als XML - app.get("/export/xml/topic/{topic}", SpeechesXMLExportController::exportSpeechesWithTopic); // exportiere alle Reden zu einem Thema als XML - app.get("/export/xml/all", SpeechesXMLExportController::exportAllSpeeches); // exportiere alle Reden als XML - app.get("/export/xml/speeches/{speechIds}", SpeechesXMLExportController::exportSpeeches); // exportiere eine Liste von Reden als XML + app.get("/reden/{id}", FrontEndController::listSpeeches); // zeige Reden eines Parlamentariers an + app.get("/reden/{id}/{redeId}", FrontEndController::showSpeech); // zeige eine bestimmte Rede des Parlamentariers an } } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/RESTHandlerOld.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/RESTHandlerOld.java new file mode 100644 index 0000000..84be658 --- /dev/null +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/RESTHandlerOld.java @@ -0,0 +1,69 @@ +package org.texttechnologylab.project.gruppe_05_1.rest; + +import freemarker.template.Configuration; +import freemarker.template.TemplateExceptionHandler; +import io.javalin.Javalin; +import io.javalin.http.staticfiles.Location; +import io.javalin.openapi.plugin.OpenApiPlugin; +import io.javalin.openapi.plugin.redoc.ReDocPlugin; +import io.javalin.rendering.template.JavalinFreemarker; +import org.texttechnologylab.project.gruppe_05_1.util.Logger; + +import java.io.File; +import java.io.IOException; + +import static org.texttechnologylab.project.gruppe_05_1.Main.JAVALIN_STATIC_FILES_DIR; +import static org.texttechnologylab.project.gruppe_05_1.Main.JAVALIN_TEMPLATE_DIR; + +public class RESTHandlerOld { + + public void startJavalin() { + + // Javalin Konfiguration (z.B. port) + JavalinConfig jlConfig = new JavalinConfig(); + int port = jlConfig.getPort(); + + // FreeMarker Konfiguration + Configuration fmConfig = new Configuration(Configuration.VERSION_2_3_33); + fmConfig.setDefaultEncoding("UTF-8"); + try { + fmConfig.setDirectoryForTemplateLoading(new File(JAVALIN_TEMPLATE_DIR)); + } catch (IOException e) { + throw new RuntimeException(e); + } + fmConfig.setLogTemplateExceptions(true); + fmConfig.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER); + + // Erzeuge die Javalin app + Javalin app = Javalin.create(config -> { + config.staticFiles.add(JAVALIN_STATIC_FILES_DIR, Location.EXTERNAL); // momentan nicht benutzt + + config.fileRenderer(new JavalinFreemarker(fmConfig)); + + config.registerPlugin(new OpenApiPlugin(pluginConfig -> { + // Define OpenAPI spec configuration + pluginConfig.withDefinitionConfiguration((version, definition) -> { + definition.withOpenApiInfo(info -> info.setTitle("Javalin OpenAPI Documentation")); + }); + })); + + config.registerPlugin(new ReDocPlugin()); + + }) + .start(port); + Logger.info("Javalin app started on http://localhost:" + port); + + // Routes + // ====== + + // Parlamentarier + app.get("/", ParlamentarierController::getAllParlamentarier); + app.get("/portfolio/{id}", ParlamentarierController::getParlamentarierDetails); + app.delete("/deleteParlamentarier", ParlamentarierController::deleteAllParlamentarier); + + // Reden + app.get("/reden/{id}", SpeechController::listSpeeches); // zeige Reden eines Parlamentariers an + app.get("/reden/{id}/{redeId}", SpeechController::showSpeech); // zeige eine bestimmte Rede des Parlamentariers an + + } +} diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/RedenController.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/RedenController.java new file mode 100644 index 0000000..e69de29 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 290b154..f6bb0ad 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 @@ -1,30 +1,23 @@ package org.texttechnologylab.project.gruppe_05_1.rest; -import com.mongodb.client.gridfs.GridFSBucket; -import com.mongodb.client.gridfs.GridFSBuckets; import io.javalin.http.Context; import io.javalin.openapi.*; -import org.bson.types.ObjectId; -import org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler; import org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils; import org.texttechnologylab.project.gruppe_05_1.domain.html.HtmlSpeech; import org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails; -import org.texttechnologylab.project.gruppe_05_1.domain.html.SpeechOverview; -import org.texttechnologylab.project.gruppe_05_1.domain.nlp.NamedEntity; -import org.texttechnologylab.project.gruppe_05_1.domain.nlp.Sentiment; import org.texttechnologylab.project.gruppe_05_1.domain.nlp.Token; import org.texttechnologylab.project.gruppe_05_1.domain.nlp.Topic; import org.texttechnologylab.project.gruppe_05_1.domain.speech.SpeechMetaData; -import org.texttechnologylab.project.gruppe_05_1.util.Logger; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech; -import java.io.ByteArrayOutputStream; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; public class SpeechController { /** - * Datei implementiert von Valentin * Liste alle Reden eines Parlamentariers an * @param ctx Javalin Context */ @@ -45,7 +38,8 @@ public class SpeechController { String parlamentarierId = ctx.pathParam("id"); ParlamentarierDetails p = MongoPprUtils.getParlamentarierDetailsByID(parlamentarierId); - List speechMetaDataList = MongoPprUtils.getSpeechesOverviewForSpeaker(Integer.parseInt(parlamentarierId)); + List speechMetaDataList = MongoPprUtils.getSpeechesMetadataForSpeaker(parlamentarierId); + Map attributes = new HashMap<>(); attributes.put("p", p); attributes.put("speechesMetaDataList", speechMetaDataList); @@ -55,8 +49,6 @@ public class SpeechController { /** * Zeige eine bestimmte Rede des Parlamentariers an * @param ctx Javalin Context - * Implementiert von Valentin - * Modifiziert von Leon */ @OpenApi( summary = "Zeige eine bestimmte Rede des Parlamentariers an", @@ -73,187 +65,46 @@ public class SpeechController { @OpenApiResponse(status = "200", content = {@OpenApiContent(from = Speech.class)}) }) public static void showSpeech(Context ctx) { - String parlamentarierId = ctx.pathParam("id"); String redeId = ctx.pathParam("redeId"); Map attributes = new HashMap<>(); - HtmlSpeech speech = MongoPprUtils.getHtmlSpeechByKey(redeId); - if (speech == null) { - attributes.put("error", "Rede " + redeId + " nicht vorhanden"); - ctx.render("speech.ftl", attributes); - return; - } + HtmlSpeech speech = MongoPprUtils.getSpeechByKey(redeId); attributes.put("s", speech); - - if (speech.getVideo() != null && !speech.getVideo().trim().isEmpty()) { - MongoDBHandler mongoDBHandler = new MongoDBHandler(); - try { - GridFSBucket gridFSBucket = GridFSBuckets.create(mongoDBHandler.getDatabase(), "videos"); - ObjectId fileId = new ObjectId(speech.getVideo()); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - gridFSBucket.downloadToStream(fileId, baos); - byte[] videoBytes = baos.toByteArray(); - String base64Video = Base64.getEncoder().encodeToString(videoBytes); - speech.setVideoData(base64Video); - } catch (Exception e) { - System.err.println("Error fetching video from GridFS: " + e.getMessage()); - } finally { - mongoDBHandler.close(); - } + // NLP: Topic + if ((speech.getNlp() != null) && (speech.getNlp().getTopics() != null)) { + Map topics = Topic.condenseTopicInformation(speech.getNlp().getTopics()); // Daten "verdichten"... + // ... und ersetzen + speech.getNlp().setTopics( + topics.entrySet().stream() + .map(me -> new Topic(me.getKey(), me.getValue(), null)) + .collect(Collectors.toList())); } - // Foto des Abgeordnetes - String picture = MongoPprUtils.getParlamentarierPictureByID(parlamentarierId); - attributes.put("picture", picture); + // NLP: POS + if (speech.getNlp() != null && speech.getNlp().getTokens() != null) { + List tokens = speech.getNlp().getTokens(); - // NLP - if (speech.getNlp() != null) { + Map posCounts = Token.countPOS(tokens); - // NLP: Topic - if ((speech.getNlp().getTopics() != null) && (speech.getNlp().getTopics().size() > 0)) { - Map topics = Topic.condenseTopicInformation(speech.getNlp().getTopics()); // Daten "verdichten"... - // ... und ersetzen - speech.getNlp().setTopics( - topics.entrySet().stream() - .map(me -> new Topic(me.getKey(), me.getValue(), null)) - .collect(Collectors.toList())); - } else { - speech.getNlp().setTopics(null); - } + List posList = posCounts.entrySet().stream() + .map(entry -> new Token(entry.getKey(), String.valueOf(entry.getValue()), "")) // Lemma remains empty + .collect(Collectors.toList()); - // NLP: POS - if (speech.getNlp() != null && speech.getNlp().getTokens() != null) { - List tokens = speech.getNlp().getTokens(); + System.out.println("DEBUG: Sending POS List to NLP - " + posList); - Map posCounts = Token.countPOS(tokens); - - List posList = posCounts.entrySet().stream() - .map(entry -> new Token(entry.getKey(), String.valueOf(entry.getValue()), "")) - .collect(Collectors.toList()); - - Logger.debug("Sending POS List to NLP - " + posList); - - speech.getNlp().setPosList((List) posList); - - } else { - Logger.debug("POS List is EMPTY"); - speech.getNlp().setPosList((List) new ArrayList()); - } - - // NLP: Named Entities - if ((speech.getNlp().getNamedEntities() != null) - && (speech.getNlp().getNamedEntities().size() > 0)) { - - Map> namedEntitiesMapOfMaps = new HashMap<>(); - - for (NamedEntity ne : speech.getNlp().getNamedEntities()) { - String type = ne.getType(); - String text = ne.getText(); - - if (namedEntitiesMapOfMaps.containsKey(type)) { - // Named Entity Type bekannt... - Map typeAppearance = namedEntitiesMapOfMaps.get(type); - if (typeAppearance.containsKey(text)) { - // ... und der Text auch bekannt --> erhöhe die Anzahl um 1 - typeAppearance.replace( - text, - typeAppearance.get(text) + 1) ; - } else { - typeAppearance.put(text, 1); - } - } else { - // Named Entity Type unbekannt: erstelle einen neuen Eintrag für Type sowie einen Eintrag für den ihm gehörigen Text - Map firstTextAppearance = new HashMap<>(); - firstTextAppearance.put(text, 1); - namedEntitiesMapOfMaps.put(type, firstTextAppearance); - } - } - - attributes.put("na_info", namedEntitiesMapOfMaps); - } else { - attributes.put("na_info", null); - } - - // NLP: Sentiments - // Der erste Sentiment gilt der gesamten Rede. Die weitere Sentiments entsprechen die Sätze. overallSentiments speichert alle Analyseobjekte und sentiments nur die der einzelnen Sätze - List sentiments = speech.getNlp().getSentiments(); - if ((sentiments != null) && ! sentiments.isEmpty()) { - List overallSentiments = new ArrayList<>(sentiments); - attributes.put("overallSentiments", overallSentiments); - - sentiments.remove(0); - - // Sentiment-Icon - List sentimentIcons = calculateSentimentIcons(sentiments); - attributes.put("sentimentIcons", sentimentIcons); - } else { - attributes.put("overallSentiment", null); - attributes.put("sentimentIcons", null); - } - attributes.put("sentiments", sentiments); + speech.getNlp().setPosList((List) posList); + } else { + System.out.println("DEBUG: POS List is EMPTY"); + speech.getNlp().setPosList((List) new ArrayList()); // Ensure it's never null } + // TODO: Token wird momentan etwas komisch abgespeichert, da im Attribut text die POS art steht, und in pos die Anzahl dieser POS arten. Umstrukturieren damit keine Verwirrung herrscht + + ctx.render("speech.ftl", attributes); } - - private static String POSITIVE_SENTIMENT= "fas fa-thumbs-up sentiment-positive"; // Alternativ: fas fa-smile positive - private static String NEGATIVE_SENTIMENT= "fas fa-thumbs-down sentiment-negative"; // Alternativ: fas fa-frown negative - private static String NEUTRAL_SENTIMENT = "fas fa-meh sentiment-neutral"; // Alternativ: fas fa-circle neutral - - /** - * Ordne einem Satz ein Sentiment-Icon - * @param sentiments - * @return Icon Name (als Font Awesome Icon) - */ - private static List calculateSentimentIcons(List sentiments) { - double threshold = 0.15; - List iconNames = new ArrayList<>(); - for (Sentiment s: sentiments) { - if (s.getPositive() - s.getNegative() > threshold) { - iconNames.add(POSITIVE_SENTIMENT); - } else if (s.getNegative() - s.getPositive() > threshold) { - iconNames.add(NEGATIVE_SENTIMENT); - } else iconNames.add(NEUTRAL_SENTIMENT); - } - return iconNames; - } - - /** - * Zeige alle Reden - * @param ctx - */ - @OpenApi( - summary = "Liste alle Reden (Filtern ist möglich)", - description = "Liste alle Reden. Man kann nach Freitext (MdB Name, Partei/Fraktion) oder nach Thema (Topic) filtern", - operationId = "listAllSpeeches", - path = "/reden", - methods = HttpMethod.GET, - tags = {"Rede"}, - queryParams = { - @OpenApiParam(name = "filter", description = "Full-Text-Filter. Kann Vorname, Nachname oder Partei filtern", required = false), - }, - responses = { - @OpenApiResponse(status = "200", content = {@OpenApiContent(from = Speech[].class)}) - }) - public static void listAllSpeeches(Context ctx) { - List speechOverviews = MongoPprUtils.getFilteredSpeechesOverview(ctx); - - Map attributes = new HashMap<>(); - attributes.put("speechesMetaDataList", speechOverviews); - - String name = ctx.queryParam("name"); - if ((name != null) && ( ! name.isBlank())) attributes.put("name", name); - - attributes.put("parties", MongoPprUtils.getAllPartiesFromSpeeches()); - - List topics = MongoPprUtils.getAllTopics(); - attributes.put("topics", topics); - - ctx.render("showAllSpeechesList.ftl", attributes); - } - } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/SpeechesLatexExportController.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/SpeechesLatexExportController.java deleted file mode 100644 index 81679f2..0000000 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/SpeechesLatexExportController.java +++ /dev/null @@ -1,215 +0,0 @@ -package org.texttechnologylab.project.gruppe_05_1.rest; - -import io.javalin.http.Context; -import io.javalin.openapi.HttpMethod; -import io.javalin.openapi.OpenApi; -import io.javalin.openapi.OpenApiResponse; -import org.texttechnologylab.project.gruppe_05_1.util.Logger; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.util.Arrays; -import java.util.Base64; -import java.util.List; - -import static org.texttechnologylab.project.gruppe_05_1.export.TeXUtil.*; - -/** - * Controller für die Endpunkte zum Export von Reden als PDF. - * Implementiert von Jonas - */ -public class SpeechesLatexExportController { - @OpenApi( - summary = "Get a speech as a PDF", - description = "Returns a LaTeX generated pdf of a selected speech", - operationId = "getSpeechExport", - path = "/export/pdf/speech/{id}", - methods = HttpMethod.GET, - tags = {"Export", "Speeches", "PDF"}, - responses = { - @OpenApiResponse(status = "200") - }) - public static void exportSpeech(Context ctx) { - String speechId = null; - try { - speechId = ctx.pathParam("id"); - } catch (Exception e) { - // check query param - speechId = ctx.queryParam("speechId"); - } - byte[] pdfBytes = new byte[0]; - try { - pdfBytes = Base64.getDecoder().decode(getExportedSpeechBase64StringBySpeechId(speechId)); - } catch (Exception e) { - Logger.error("Failed to generate Export of Speech with ID " + speechId); - Logger.error(e.getMessage()); - Logger.debug(Arrays.toString(e.getStackTrace())); - } - - // Set the response content type to PDF - ctx.contentType("application/pdf"); - - ByteArrayInputStream stream = new ByteArrayInputStream(pdfBytes); - if (stream.available() == 0) { - Logger.error("PDF stream is empty."); - ctx.result("Internal Server Error"); - ctx.status(500); - return; - } - // Send the PDF as a response - ctx.result(stream); - - tryDeleteTeXTempDirContents(); - } - - @OpenApi( - summary = "Get all speeches from a speaker as a PDF", - description = "Returns a LaTeX generated pdf of all speeches of a selected speech", - operationId = "getSpeechesFromSpeakerExport", - path = "/export/pdf/speaker/{id}", - methods = HttpMethod.GET, - tags = {"Export", "Speeches", "PDF"}, - responses = { - @OpenApiResponse(status = "200") - }) - public static void exportSpeechesFromSpeaker(Context ctx) { - byte[] pdfBytes = new byte[0]; - try { - pdfBytes = Base64.getDecoder().decode(getBulkExportedSpeechBase64StringFromSpeakerById(ctx.pathParam("id"))); - } catch (Exception e) { - Logger.error("Failed to generate Export of Speeches from Speaker with ID " + ctx.pathParam("id")); - Logger.error(e.getMessage()); - Logger.debug(Arrays.toString(e.getStackTrace())); - } - - // Set the response content type to PDF - ctx.contentType("application/pdf"); - - ByteArrayInputStream stream = new ByteArrayInputStream(pdfBytes); - if (stream.available() == 0) { - Logger.error("PDF stream is empty."); - ctx.result("Internal Server Error"); - ctx.status(500); - return; - } - // Send the PDF as a response - ctx.result(stream); - - tryDeleteTeXTempDirContents(); - } - - @OpenApi( - summary = "Get all speeches as a PDF", - description = "Returns a LaTeX generated pdf of all speeches", - operationId = "getAllSpeeches", - path = "/export/pdf/all", - methods = HttpMethod.GET, - tags = {"Export", "Speeches", "PDF"}, - responses = { - @OpenApiResponse(status = "200") - }) - public static void exportAllSpeeches(Context ctx) { - byte[] pdfBytes = new byte[0]; - try { - pdfBytes = Base64.getDecoder().decode(getBulkExportedAllSpeechesBase64String()); - } catch (Exception e) { - Logger.error("Failed to generate Export of all Speeches"); - Logger.error(e.getMessage()); - Logger.debug(Arrays.toString(e.getStackTrace())); - } - - // Set the response content type to PDF - ctx.contentType("application/pdf"); - - ByteArrayInputStream stream = new ByteArrayInputStream(pdfBytes); - if (stream.available() == 0) { - Logger.error("PDF stream is empty."); - ctx.result("Internal Server Error"); - ctx.status(500); - return; - } - // Send the PDF as a response - ctx.result(stream); - - tryDeleteTeXTempDirContents(); - } - - @OpenApi( - summary = "Get all speeches with specific topic as a PDF", - description = "Returns a LaTeX generated pdf of all speeches with specific topic", - operationId = "getAllSpeechesWithTopic", - path = "/export/pdf/topic/{topic}", - methods = HttpMethod.GET, - tags = {"Export", "Speeches", "PDF"}, - responses = { - @OpenApiResponse(status = "200") - }) - public static void exportSpeechesWithTopic(Context ctx) { - byte[] pdfBytes = new byte[0]; - try { - pdfBytes = Base64.getDecoder().decode(getBulkExportedAllSpeechesWithTopicBase64String(ctx.pathParam("topic"))); - } catch (Exception e) { - Logger.error("Failed to generate Export of all Speeches with Topic " + ctx.pathParam("topic")); - Logger.error(e.getMessage()); - Logger.debug(Arrays.toString(e.getStackTrace())); - } - - // Set the response content type to PDF - ctx.contentType("application/pdf"); - - ByteArrayInputStream stream = new ByteArrayInputStream(pdfBytes); - if (stream.available() == 0) { - Logger.error("PDF stream is empty."); - ctx.result("Internal Server Error"); - ctx.status(500); - return; - } - // Send the PDF as a response - ctx.result(stream); - - tryDeleteTeXTempDirContents(); - } - - @OpenApi( - summary = "Get speeches by IDs as a PDF", - description = "Returns a LaTeX-generated PDF of the speeches specified by their IDs", - operationId = "getSpeechesByIds", - path = "/export/pdf/speeches/{speechIds}", // Comma-separated IDs - methods = HttpMethod.GET, - tags = {"Export", "Speeches", "PDF"}, - responses = { - @OpenApiResponse(status = "200") - }) - public static void exportSpeeches(Context ctx) { - byte[] pdfBytes = new byte[0]; - - try { - // Extract speech IDs from the path - String speechIdsParam = ctx.pathParam("speechIds"); - List speechIds = Arrays.asList(speechIdsParam.split(",")); - - // Generate PDF for given speech IDs - pdfBytes = Base64.getDecoder().decode(getBulkExportedSpeechesBase64String(speechIds)); - } catch (Exception e) { - Logger.error("Failed to generate export for speeches: " + ctx.pathParam("speechIds")); - Logger.error(e.getMessage()); - Logger.debug(Arrays.toString(e.getStackTrace())); - } - - // Set response content type - ctx.contentType("application/pdf"); - - ByteArrayInputStream stream = new ByteArrayInputStream(pdfBytes); - if (stream.available() == 0) { - Logger.error("PDF stream is empty."); - ctx.result("Internal Server Error"); - ctx.status(500); - return; - } - - // Send the PDF as response - ctx.result(stream); - - tryDeleteTeXTempDirContents(); - } -} diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/SpeechesXMLExportController.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/SpeechesXMLExportController.java deleted file mode 100644 index b233929..0000000 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/SpeechesXMLExportController.java +++ /dev/null @@ -1,192 +0,0 @@ -package org.texttechnologylab.project.gruppe_05_1.rest; - -import io.javalin.http.Context; -import io.javalin.openapi.HttpMethod; -import io.javalin.openapi.OpenApi; -import io.javalin.openapi.OpenApiResponse; -import org.texttechnologylab.project.gruppe_05_1.util.Logger; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Arrays; -import java.util.Base64; -import java.util.List; - -import static org.texttechnologylab.project.gruppe_05_1.export.XMLUtil.*; -import static org.texttechnologylab.project.gruppe_05_1.export.TeXUtil.*; - -/** - * Controller für die Endpunkte zum Export von Reden als XML. - * Implementiert von Jonas - */ -public class SpeechesXMLExportController { - @OpenApi( - summary = "Get a speech as XML", - description = "Returns an XML file of a selected speech", - operationId = "getSpeechExport", - path = "/export/xml/speech/{id}", - methods = HttpMethod.GET, - tags = {"Export", "Speeches", "XML"}, - responses = { - @OpenApiResponse(status = "200") - }) - public static void exportSpeech(Context ctx) { - String speechId = null; - try { - speechId = ctx.pathParam("id"); - } catch (Exception e) { - // check query param - speechId = ctx.queryParam("speechId"); - } - String xmlContent; - try { - xmlContent = getExportedSpeechById(speechId); - ByteArrayInputStream stream = new ByteArrayInputStream(xmlContent.getBytes()); - if (stream.available() == 0) { - Logger.error("XML stream is empty."); - ctx.result("Internal Server Error"); - ctx.status(500); - return; - } - ctx.contentType("application/xml"); - ctx.result(stream); - } catch (Exception e) { - Logger.error("Failed to generate Export of Speech with ID " + speechId); - Logger.error(e.getMessage()); - Logger.debug(Arrays.toString(e.getStackTrace())); - ctx.result("Internal Server Error"); - ctx.status(500); - } - } - - @OpenApi( - summary = "Get all speeches from a speaker as XML", - description = "Returns an XML file of all speeches of a selected speech", - operationId = "getSpeechesFromSpeakerExport", - path = "/export/xml/speaker/{id}", - methods = HttpMethod.GET, - tags = {"Export", "Speeches", "XML"}, - responses = { - @OpenApiResponse(status = "200") - }) - public static void exportSpeechesFromSpeaker(Context ctx) { - String xmlContent; - try { - xmlContent = getExportedSpeechesFromSpeakerById(ctx.pathParam("id")); - ByteArrayInputStream stream = new ByteArrayInputStream(xmlContent.getBytes()); - if (stream.available() == 0) { - Logger.error("XML stream is empty."); - ctx.result("Internal Server Error"); - ctx.status(500); - return; - } - ctx.contentType("application/xml"); - ctx.result(stream); - } catch (Exception e) { - Logger.error("Failed to generate Export of Speeches from Speaker with ID " + ctx.pathParam("id")); - Logger.error(e.getMessage()); - Logger.debug(Arrays.toString(e.getStackTrace())); - ctx.result("Internal Server Error"); - ctx.status(500); - } - } - - @OpenApi( - summary = "Get all speeches as XML", - description = "Returns an XML file of all speeches", - operationId = "getAllSpeeches", - path = "/export/xml/all", - methods = HttpMethod.GET, - tags = {"Export", "Speeches", "XML"}, - responses = { - @OpenApiResponse(status = "200") - }) - public static void exportAllSpeeches(Context ctx) { - String xmlContent; - try { - xmlContent = getExportedAllSpeeches(); - ByteArrayInputStream stream = new ByteArrayInputStream(xmlContent.getBytes()); - if (stream.available() == 0) { - Logger.error("XML stream is empty."); - ctx.result("Internal Server Error"); - ctx.status(500); - return; - } - ctx.contentType("application/xml"); - ctx.result(stream); - } catch (Exception e) { - Logger.error("Failed to generate Export of all Speeches"); - Logger.error(e.getMessage()); - Logger.debug(Arrays.toString(e.getStackTrace())); - ctx.result("Internal Server Error"); - ctx.status(500); - } - } - - @OpenApi( - summary = "Get all speeches with specific topic as XML", - description = "Returns an XML file of all speeches with specific topic", - operationId = "getAllSpeechesWithTopic", - path = "/export/xml/topic/{topic}", - methods = HttpMethod.GET, - tags = {"Export", "Speeches", "XML"}, - responses = { - @OpenApiResponse(status = "200") - }) - public static void exportSpeechesWithTopic(Context ctx) { - String xmlContent; - try { - xmlContent = getExportedSpeechesWhithTopic(ctx.pathParam("topic")); - ByteArrayInputStream stream = new ByteArrayInputStream(xmlContent.getBytes()); - if (stream.available() == 0) { - Logger.error("XML stream is empty."); - ctx.result("Internal Server Error"); - ctx.status(500); - return; - } - ctx.contentType("application/xml"); - ctx.result(stream); - } catch (Exception e) { - Logger.error("Failed to generate Export of all Speeches"); - Logger.error(e.getMessage()); - Logger.debug(Arrays.toString(e.getStackTrace())); - ctx.result("Internal Server Error"); - ctx.status(500); - } - } - - @OpenApi( - summary = "Get speeches by IDs as XML", - description = "Returns an XML file of the speeches specified by their IDs", - operationId = "getSpeechesByIds", - path = "/export/xml/speeches/{speechIds}", // Comma-separated IDs - methods = HttpMethod.GET, - tags = {"Export", "Speeches", "XML"}, - responses = { - @OpenApiResponse(status = "200") - }) - public static void exportSpeeches(Context ctx) { - String xmlContent; - try { - String speechIdsParam = ctx.pathParam("speechIds"); - List speechIds = Arrays.asList(speechIdsParam.split(",")); - xmlContent = getExportedSpeechesbyIds(speechIds); - ByteArrayInputStream stream = new ByteArrayInputStream(xmlContent.getBytes()); - if (stream.available() == 0) { - Logger.error("XML stream is empty."); - ctx.result("Internal Server Error"); - ctx.status(500); - return; - } - ctx.contentType("application/xml"); - ctx.result(stream); - } catch (Exception e) { - Logger.error("Failed to generate Export of all Speeches"); - Logger.error(e.getMessage()); - Logger.debug(Arrays.toString(e.getStackTrace())); - ctx.result("Internal Server Error"); - ctx.status(500); - } - } -} diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/FileUtils.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/FileUtils.java index e2684a1..b53da1a 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/FileUtils.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/FileUtils.java @@ -17,7 +17,6 @@ public abstract class FileUtils { /** - * Datei implementiert von Valentin * Creates a (possibly nested) directory * @param dir (e.g. "generated" , "level1/level2/level3" etc. */ diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/GeneralUtils.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/GeneralUtils.java index 871c6f7..d67d198 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/GeneralUtils.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/GeneralUtils.java @@ -9,7 +9,7 @@ import java.time.format.DateTimeParseException; public abstract class GeneralUtils { /** - * Datei implementiert von Valentin + * * @param integer the integer to be parsed * @return the parsed integer or null if the integer could not be parsed */ diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/Logger.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/Logger.java index da9dea8..6dbfd8f 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/Logger.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/Logger.java @@ -4,10 +4,6 @@ import java.time.LocalTime; import java.time.format.DateTimeFormatter; import static org.texttechnologylab.project.gruppe_05_1.Main.DEBUG_LOGGING; -/** - * Logger Klasse für die Ausgabe von Lognachrichten - * Implementiert von Jonas - */ public class Logger { private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss"); // info, warn, error with message and colors and datetime @@ -32,8 +28,4 @@ public class Logger { public static void pink(String message) { System.out.println("\u001B[35m" + java.time.LocalTime.now() + " PINK: " + message + "\u001B[0m"); } - - public static void orange(String message) { - System.out.println("\u001B[38;5;214m" + message + "\u001B[0m"); - } } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/PPRUtils.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/PPRUtils.java index 565bb83..36eed86 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/PPRUtils.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/PPRUtils.java @@ -1,8 +1,6 @@ package org.texttechnologylab.project.gruppe_05_1.util; import com.mongodb.client.MongoCollection; -import org.json.JSONArray; -import org.json.JSONObject; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; @@ -24,7 +22,6 @@ import javax.xml.parsers.DocumentBuilderFactory; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; -import java.net.URLEncoder; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -44,7 +41,6 @@ public abstract class PPRUtils { /** - * Von Valentin angelegt, von allen verändert * Alle Informationen lesen... * - Parlamentarier * - Reden @@ -65,16 +61,21 @@ public abstract class PPRUtils { Logger.warn("Members already in the DB. Skipping..."); } - // Reden und Kommentare einlesen und persistieren + // Reden und Kommentare einlesen und persistieren - TODO readSpeechesAndComments(xmlFactory, mongoFactory); - // Fotos hochladen + // Fotos hochladen - TODO readPhotos(mongoFactory); + // NLP-Analyse (Text und Video) + // TODO: Anpassung notwendig, Daten aus dem NEtz statt aus resources holen + // Achtung: läuft nicht unter Windows. Verwende Linux (nativ oder im Virtual Box) + // NlpUtils.createNlpData(); + } /** - * Fotos hochladen + * Fotos hochladen - TODO * @param mongoFactory Factory für die MongoDB-Objekte */ public static void readPhotos(MongoObjectFactory mongoFactory) { @@ -82,7 +83,7 @@ public abstract class PPRUtils { } /** - * Reden und Kommentare einlesen + * Reden und Kommentare einlesen - TODO * @param xmlFactory Factory für die XML-Objekte * @param mongoFactory Factory für die MongoDB-Objekte */ @@ -98,6 +99,7 @@ public abstract class PPRUtils { public static void readAndPersistMdbs(String mdbUrl, FileObjectFactory xmlFactory, MongoObjectFactory mongoFactory) { org.w3c.dom.Document mdbRoot = getMdbFromRemoteXmlZipfile(mdbUrl); Element rootElement = mdbRoot.getDocumentElement(); + // TODO: optional! persist the metadata of the 1723434311 element List mdbNodes = XmlUtils.getChildrenByName(rootElement, "MDB"); @@ -112,9 +114,12 @@ public abstract class PPRUtils { } } + // TODO: persist each speaker! + // TODO: guard: if not in the DB already } + // TODO - HERE private static boolean mdbActiveInWp(Speaker speaker, Integer legislaturPeriode) { List wps = speaker.getMemberships().stream() .map(Membership::getWp) @@ -151,7 +156,7 @@ public abstract class PPRUtils { zipInputStream.closeEntry(); } - if (xmlOutputStream.size() == 0 || dtdOutputStream.size() == 0) { + if (xmlOutputStream.size() == 0 || dtdOutputStream.size() == 0) { // TODO // throw new FileNotFoundException("XML or DTD not found in the ZIP archive"); } InputStream xmlInputStreamFinal = new ByteArrayInputStream(xmlOutputStream.toByteArray()); @@ -166,6 +171,7 @@ public abstract class PPRUtils { return doc; } catch (IOException e) { + // TODO throw new RuntimeException(e); } } @@ -203,6 +209,8 @@ public abstract class PPRUtils { }); } + // TODO: altes Zeug, sortieren... + /** * Alle Parteien (aus einer Liste der MdBs) herausfinden. * null-Einträge durch einen Platzhalter ersetzen, damit später keine null pointer exceptions auftretten @@ -319,19 +327,7 @@ public abstract class PPRUtils { }); } - /** - * Liest XML-Protokolle von der Bundestag-OpenData-URL und verarbeitet sie. - * - *

- * Diese Methode ruft wiederholt Seiten mit XML-Links (Protokollen) ab, basierend auf einem - * Offset und Limit. Für jeden gefundenen Link wird die XML-Datei heruntergeladen und geparst. - * Einzigartige Protokolle werden anhand des "sitzung-nr"-Attributs identifiziert. Falls ein Protokoll - * bereits verarbeitet wurde (gespeichert in {@code processedProtocols}), wird es übersprungen. - * Die verarbeiteten XML-Dokumente werden in der globalen Menge {@code xmlProtocols} gesammelt. - *

- * - * @return Ein Set von {@code org.w3c.dom.Document}, das die verarbeiteten XML-Protokolle enthält. - */ + public static Set processXML() { int offset = 0; int limit = 10; @@ -415,12 +411,6 @@ public abstract class PPRUtils { return doc; } - /** - * Listet die Dateien im gegebenen Verzeichnis auf. - * Implementiert von Jonas - * @param directory Verzeichnis - * @return Liste der Dateinamen - */ public static ArrayList listFilesInDirectory(String directory) { File folder = new File(directory); File[] files = folder.listFiles(); @@ -435,24 +425,6 @@ public abstract class PPRUtils { return fileNames; } - /** - * Ruft neue Protokoll-XML-Dokumente von der Bundestag OpenData-API ab und verarbeitet sie. - * - * Diese Methode verwendet eine paginierte Abfrage (über Offset und Limit) der URL - * "https://www.bundestag.de/ajax/filterlist/de/services/opendata/866354-866354". - * Für jeden gefundenen XML-Link wird anhand des Dateinamens (z.B "20212.xml") die Sitzungsnummer extrahiert. - * Protokolle mit den Dateinamen "20007" oder "20212" werden als fehlerhaft erkannt und übersprungen. - * Falls die extrahierte Sitzungsnummer (nach Entfernen eines möglichen "20"-Präfixes) noch nicht in der Datenbank existiert - * (bestimmt durch mongoDBHandler.sessionExists(sessionNumber)), wird das XML-Dokument heruntergeladen und geparst. - * Die neu verarbeiteten XML-Dokumente werden in einem Set gesammelt und zurückgegeben. - * - * Die Pagination erfolgt über das HTML-Element
mit dem Attribut - * data-nextoffset. Ist kein nächster Offset vorhanden, wird die Schleife beendet. - * - * - * @param mongoDBHandler der MongoDBHandler, der für die Prüfung der Existenz einer Session in der Datenbank verwendet wird - * @return ein Setvon org.w3c.dom.Document, das alle neuen (noch nicht verarbeiteten) Protokoll-XML-Dokumente enthält - */ public static Set checkAndProcessNewProtocols(MongoDBHandler mongoDBHandler) { Set newProtocols = new HashSet<>(); int offset = 0; @@ -474,10 +446,6 @@ public abstract class PPRUtils { // Entferne die Dateiendung String sessionNumberFull = fileName.replace(".xml", ""); // z.B. "20212" String sessionNumber; - if (sessionNumberFull.equals("20007") || sessionNumberFull.equals("20212")) { - Logger.warn("Skipping faulty protocol: " + sessionNumberFull); - continue; - } if (sessionNumberFull.startsWith("20") && sessionNumberFull.length() > 2) { sessionNumber = sessionNumberFull.substring(2); } else { @@ -513,126 +481,5 @@ public abstract class PPRUtils { return newProtocols; } - /** - * Listet die Fraktionen von einer Liste an Membern auf - * Implementiert von Jonas - * @param mdbList Liste der Mitglieder - * @return Liste der Fraktionen - */ - public static ArrayList listFractionsFromMembers(List mdbList) { - ArrayList fractions = new ArrayList<>(); - for (Parlamentarier parlamentarier : mdbList) { - if (parlamentarier.getPartei() != null) { - if (!fractions.contains(parlamentarier.getPartei())) { - fractions.add(parlamentarier.getPartei()); - } - } else { - if (!fractions.contains(parlamentarier.getPartei())) { - fractions.add(PARTEILOS_KUERZEL); - } - } - } - return fractions; - } - /** - * Fetched das Bild eines Mitglieds aus der Bundestagsdatenbank und gibt es als Base64-String zurück - * Implementiert von Jonas - * @param inputString Name des Mitglieds - * @return Base64-String des Bildes - * @throws IOException - */ - public static String fetchMemberImageBase64FromNameString(String inputString) throws IOException { - // Step 1: Send POST request - String urlString = "https://bilddatenbank.bundestag.de/ajax/picture-result"; - URL url = new URL(urlString); - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - conn.setRequestMethod("POST"); - conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); - conn.setRequestProperty("Cookie", getSessionCookies()); - conn.setDoOutput(true); - - // Form data - String postData = "query=" + URLEncoder.encode(inputString, "UTF-8") + "&sortVal=2"; - try (OutputStream os = conn.getOutputStream()) { - byte[] input = postData.getBytes("UTF-8"); - os.write(input, 0, input.length); - } - - // Read response - int responseCode = conn.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK) { - try (BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"))) { - StringBuilder response = new StringBuilder(); - String line; - while ((line = br.readLine()) != null) { - response.append(line); - } - - // Parse JSON response - JSONObject jsonResponse = new JSONObject(response.toString()); - JSONArray fotosArray = jsonResponse.optJSONArray("fotos"); - if (fotosArray != null && !fotosArray.isEmpty()) { - String hqBild = fotosArray.getJSONObject(0).optString("hqBild", ""); - if (!hqBild.isEmpty()) { - // Step 2: Fetch image - String imageUrl = "https://bilddatenbank.bundestag.de/fotos/" + hqBild; - URL imageDownloadUrl = new URL(imageUrl); - HttpURLConnection imageConn = (HttpURLConnection) imageDownloadUrl.openConnection(); - imageConn.setRequestMethod("GET"); - - if (imageConn.getResponseCode() == HttpURLConnection.HTTP_OK) { - try (InputStream is = imageConn.getInputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream()) { - byte[] buffer = new byte[8192]; - int bytesRead; - while ((bytesRead = is.read(buffer)) != -1) { - baos.write(buffer, 0, bytesRead); - } - return Base64.getEncoder().encodeToString(baos.toByteArray()); - } - } - } - } - } - } - return "Error: Unable to retrieve image"; - } - - /** - * Gibt die Session-Cookies zurück, die für die Requests der Bildersuche benötigt werden - * Implementiert von Jonas - * @return Session-Cookies - * @throws IOException - */ - public static String getSessionCookies() throws IOException { - String urlString = "https://bilddatenbank.bundestag.de/search/picture-result?query=Angela+Merkel&sortVal=2"; - URL url = new URL(urlString); - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - conn.setRequestMethod("GET"); - - // get both header fields with the name "Set-Cookie" - Map> headerFields = conn.getHeaderFields(); - - String phpSessId = ""; - String csrfToken = ""; - - // iterate over the header fields - for (Map.Entry> entry : headerFields.entrySet()) { - // if header field is "Set-Cookie" - if (entry.getKey() != null && entry.getKey().equals("set-cookie")) { - // iterate over the values of the header field - for (String value : entry.getValue()) { - // if value contains "PHPSESSID" - if (value.contains("PHPSESSID")) { - phpSessId = value.split(";")[0]; - } - // if value contains "_csrf" - if (value.contains("_csrf")) { - csrfToken = value.split(";")[0]; - } - } - } - } - return "PHPSESSID=" + phpSessId + "; _csrf=" + csrfToken; - } } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/PropertiesUtils.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/PropertiesUtils.java index 02a93e8..6663d9a 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/PropertiesUtils.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/PropertiesUtils.java @@ -3,9 +3,7 @@ package org.texttechnologylab.project.gruppe_05_1.util; import java.io.IOException; import java.io.InputStream; import java.util.Properties; -/** - * Datei implementiert von Valentin - */ + public abstract class PropertiesUtils { public static Properties readPropertiesFromResource(String propertiesFileName) { 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 deleted file mode 100644 index 82a184a..0000000 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/SpeechVideoUpdater.java +++ /dev/null @@ -1,153 +0,0 @@ -package org.texttechnologylab.project.gruppe_05_1.util; - -import com.mongodb.client.MongoDatabase; -import com.mongodb.client.gridfs.GridFSBucket; -import com.mongodb.client.gridfs.GridFSBuckets; -import com.mongodb.client.gridfs.model.GridFSUploadOptions; -import com.mongodb.client.model.UpdateOneModel; -import com.mongodb.client.model.WriteModel; -import org.apache.commons.logging.Log; -import org.bson.Document; -import org.bson.types.ObjectId; -import org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler; - -import java.io.*; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.ArrayList; -import java.util.List; - -//Implementiert von Henry - -public class SpeechVideoUpdater { - - - private static final int BASE_VIDEO_ID = 7615435; - private static final String BASE_URL = "https://cldf-od.r53.cdn.tv1.eu/1000153copo/ondemand/app144277506/145293313/"; - private static final String SUFFIX = "_h264_720_400_2000kb_baseline_de_2192.mp4?fdl=1"; - - /** - * Initialisiert den Video-Upload-Prozess. - * Diese Methode prüft, ob bereits ein Video für die erste Rede (speechId 0) in Session 187 und AgendaItem 4 vorhanden ist. - * Falls ein Video vorhanden ist, wird der Download übersprungen. Andernfalls wird findVideos() aufgerufen, - * um die Videos herunterzuladen und in GridFS hochzuladen sowie die Speech-Dokumente zu aktualisieren. - */ - public static void init() { - MongoDBHandler mongoDBHandler = new MongoDBHandler(); - try { - - Document filter = new Document("sessionId", 187) - .append("agendaItemId", 4) - .append("speechId", 0); - Document firstSpeech = mongoDBHandler.getSpeech(filter); - if (firstSpeech != null && firstSpeech.containsKey("video") - && firstSpeech.getString("video") != null - && !firstSpeech.getString("video").trim().isEmpty()) { - Logger.info("Videos sind bereits vorhanden. Kein Download notwendig."); - } else { - Logger.info("Keine Videos gefunden. Starte Download für die Reden der Session 187, AgendaItem 4..."); - findVideos(); - } - } catch (Exception e) { - System.err.println("Fehler beim Prüfen der Video-Felder: " + e.getMessage()); - e.printStackTrace(); - } finally { - mongoDBHandler.close(); - } - } - - /** - * Lädt Videos für Reden in Session 187, AgendaItem 4 herunter und lädt diese in GridFS hoch. - * Anschließend wird für jede Rede (speechId 0 bis 8) ein Bulk-Update erstellt, um das Speech-Dokument - * mit dem Videolink (GridFS-ID als Hex-String) zu aktualisieren. - * - * @throws Exception Falls beim Download oder Upload ein Fehler auftritt. - */ - public static void findVideos() throws Exception { - - MongoDBHandler mongoDBHandler = new MongoDBHandler(); - MongoDatabase db = mongoDBHandler.getDatabase(); - - - GridFSBucket gridFSBucket = GridFSBuckets.create(db, "videos"); - - List> bulkOperations = new ArrayList<>(); - - - for (int speechId = 0; speechId < 9; speechId++) { - int videoId = BASE_VIDEO_ID + speechId; - String videoUrl = BASE_URL + videoId + "/" + videoId + SUFFIX; - Logger.info("Downloading video for speech " + speechId + ": " + videoUrl); - - - File videoFile = downloadVideo(videoUrl, "video_" + videoId + ".mp4"); - - - ObjectId gridFsId = uploadVideoToGridFS(gridFSBucket, videoFile, "video_" + videoId + ".mp4"); - Logger.info("Uploaded video with GridFS ID: " + gridFsId); - - - Document filter = new Document("sessionId", 187) - .append("agendaItemId", 4) - .append("speechId", speechId); - - Document update = new Document("$set", new Document("video", gridFsId.toHexString())); - bulkOperations.add(new UpdateOneModel<>(filter, update)); - - - videoFile.delete(); - } - - if (!bulkOperations.isEmpty()) { - Logger.info("Uploading bulk update for " + bulkOperations.size() + " documents..."); - mongoDBHandler.bulkWriteNlpData(bulkOperations); - Logger.info("Bulk update completed."); - } - - mongoDBHandler.close(); - } - - /** - * Lädt das Video von der angegebenen URL herunter und speichert es als temporäre Datei. - * - * @param videoUrl Die URL des Videos. - * @param fileName Der gewünschte Dateiname für die temporäre Datei. - * @return Eine {@code File}-Instanz, die auf die heruntergeladene Datei verweist. - * @throws IOException Falls beim Download oder Schreiben der Datei ein Fehler auftritt. - */ - private static File downloadVideo(String videoUrl, String fileName) throws IOException { - URL url = new URL(videoUrl); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.setRequestMethod("GET"); - connection.setRequestProperty("User-Agent", "Mozilla/5.0"); - File tempFile = new File(fileName); - try (InputStream in = connection.getInputStream(); - FileOutputStream out = new FileOutputStream(tempFile)) { - byte[] buffer = new byte[4096]; - int bytesRead; - while ((bytesRead = in.read(buffer)) != -1) { - out.write(buffer, 0, bytesRead); - } - } - return tempFile; - } - - /** - * Lädt die übergebene Videodatei in GridFS hoch. - * - * @param gridFSBucket Der {@code GridFSBucket}, der für die Collection "videos" in der Datenbank konfiguriert ist. - * @param videoFile Die zu hochladende Videodatei. - * @param fileName Der Name, unter dem die Datei in GridFS gespeichert werden soll. - * @return Die {@code ObjectId} der in GridFS gespeicherten Datei. - * @throws IOException Falls beim Hochladen der Datei ein Fehler auftritt. - */ - private static ObjectId uploadVideoToGridFS(GridFSBucket gridFSBucket, File videoFile, String fileName) throws IOException { - try (InputStream streamToUploadFrom = new FileInputStream(videoFile)) { - GridFSUploadOptions options = new GridFSUploadOptions() - .chunkSizeBytes(358400) - .metadata(new Document("type", "video").append("fileName", fileName)); - ObjectId fileId = gridFSBucket.uploadFromStream(fileName, streamToUploadFrom, options); - return fileId; - } - } -} diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/XmlUtils.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/XmlUtils.java index c118274..b489ec8 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/XmlUtils.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/XmlUtils.java @@ -16,9 +16,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.zip.ZipEntry; -/** - * Datei implementiert von Valentin - */ public abstract class XmlUtils { @@ -46,6 +43,7 @@ public abstract class XmlUtils { try { document = builder.parse(xmlInputStream); + // TODO: Error handling... } catch (SAXException e) { throw new RuntimeException(e); } catch (IOException e) { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/FileObjectFactory.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/FileObjectFactory.java index 079dc64..1b88fcf 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/FileObjectFactory.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/FileObjectFactory.java @@ -5,9 +5,7 @@ import org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker; import org.texttechnologylab.project.gruppe_05_1.xml.mdb.*; import org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl; import org.w3c.dom.Node; -/** - * implementiert von Valentin - */ + public class FileObjectFactory { private static FileObjectFactory oFactory = null; diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/XmlOperations.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/XmlOperations.java index dbb53a0..5696833 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/XmlOperations.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/XmlOperations.java @@ -1,9 +1,7 @@ package org.texttechnologylab.project.gruppe_05_1.xml; import org.w3c.dom.Node; -/** - * implementiert von Valentin - */ + public interface XmlOperations { FileObjectFactory factory = FileObjectFactory.getFactory(); Object fromXmlNode(Node node); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/BiografischeAngaben_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/BiografischeAngaben_File_Impl.java index f034bef..d6cb1fb 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/BiografischeAngaben_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/BiografischeAngaben_File_Impl.java @@ -5,9 +5,7 @@ import org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils; import org.texttechnologylab.project.gruppe_05_1.util.Logger; import org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations; import org.w3c.dom.Node; -/** - * implementiert von Valentin - */ + public class BiografischeAngaben_File_Impl extends BiografischeAngaben implements XmlOperations { @Override public BiografischeAngaben fromXmlNode(Node node) { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/Institution_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/Institution_File_Impl.java index 73edb5f..5408a11 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/Institution_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/Institution_File_Impl.java @@ -5,9 +5,7 @@ import org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils; import org.texttechnologylab.project.gruppe_05_1.util.Logger; import org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations; import org.w3c.dom.Node; -/** - * implementiert von Valentin - */ + public class Institution_File_Impl extends Institution implements XmlOperations { @Override public Institution fromXmlNode(Node node) { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/MdbDocument_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/MdbDocument_File_Impl.java index 7a5c2f1..b60f4b8 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/MdbDocument_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/MdbDocument_File_Impl.java @@ -8,9 +8,7 @@ import org.w3c.dom.Node; import java.util.ArrayList; import java.util.List; -/** - * implementiert von Valentin - */ + public class MdbDocument_File_Impl extends MdbDocument implements XmlOperations { @Override public MdbDocument fromXmlNode(Node node) { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/MdbName_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/MdbName_File_Impl.java index c3d437a..4771106 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/MdbName_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/MdbName_File_Impl.java @@ -5,9 +5,7 @@ import org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils; import org.texttechnologylab.project.gruppe_05_1.util.Logger; import org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations; import org.w3c.dom.Node; -/** - * implementiert von Valentin - */ + public class MdbName_File_Impl extends MdbName implements XmlOperations { @Override public MdbName fromXmlNode(Node node) { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/Mdb_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/Mdb_File_Impl.java index 94c3076..a22adac 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/Mdb_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/Mdb_File_Impl.java @@ -9,9 +9,7 @@ import org.w3c.dom.Node; import java.util.ArrayList; import java.util.List; -/** - * implementiert von Valentin - */ + public class Mdb_File_Impl extends Mdb implements XmlOperations { @Override public Mdb fromXmlNode(Node node) { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/Wahlperiode_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/Wahlperiode_File_Impl.java index ea1807f..0cd6249 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/Wahlperiode_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/mdb/Wahlperiode_File_Impl.java @@ -9,9 +9,7 @@ import org.w3c.dom.Node; import java.util.ArrayList; import java.util.List; -/** - * implementiert von Valentin - */ + public class Wahlperiode_File_Impl extends Wahlperiode implements XmlOperations { @Override public Wahlperiode fromXmlNode(Node node) { diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speaker/Speaker_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speaker/Speaker_File_Impl.java index 43e2c2a..468888c 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speaker/Speaker_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speaker/Speaker_File_Impl.java @@ -11,9 +11,7 @@ import org.w3c.dom.Node; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; -/** - * implementiert von Valentin - */ + public class Speaker_File_Impl extends Speaker implements XmlOperations { @Override public Speaker fromXmlNode(Node node) { @@ -34,7 +32,7 @@ public class Speaker_File_Impl extends Speaker implements XmlOperations { mdbNameList.add(mdbName); } mdbNameList.sort((n1, n2 )-> n2.getHistorieVon().compareTo(n1.getHistorieVon())); // Descending order - MdbName newestMdbName = mdbNameList.get(0); + MdbName newestMdbName = mdbNameList.get(0); // TODO speaker.setName(newestMdbName.getNachname()); speaker.setFirstName(newestMdbName.getVorname()); speaker.setAkademischertitel(newestMdbName.getAkadTitel()); 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 8a9c0d0..036b204 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 @@ -3,8 +3,6 @@ package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Comment; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType; -import org.w3c.dom.Document; -import org.w3c.dom.Element; public class Comment_File_Impl implements Content, Comment { @@ -44,33 +42,4 @@ public class Comment_File_Impl implements Content, Comment { public MongoDBEntryType getType() { 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"); - comment.setAttribute("contentId", String.valueOf(this.getContentId())); - comment.setAttribute("speechId", String.valueOf(this.getSpeechId())); - comment.setAttribute("commentatorName", this.getCommentatorName()); - comment.setTextContent(this.getComment()); - return 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 6829ed3..57e7d18 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,13 +35,6 @@ 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 7375300..804bdbf 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,12 +47,6 @@ 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 c7b0a7f..920b245 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,12 +42,6 @@ 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 feec9d2..d230aaf 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 @@ -3,8 +3,6 @@ package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Line; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType; -import org.w3c.dom.Document; -import org.w3c.dom.Element; public class Line_File_Impl implements Content, Line { private final int contentId; @@ -36,32 +34,4 @@ public class Line_File_Impl implements Content, Line { public MongoDBEntryType getType() { 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"); - line.setAttribute("contentId", String.valueOf(this.getContentId())); - line.setAttribute("speechId", String.valueOf(this.getSpeechId())); - line.setTextContent(this.getContent()); - return line; - } } \ No newline at end of file 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 df43d0a..3ac9f77 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,12 +70,6 @@ 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 526d4cc..8a69053 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,12 +57,6 @@ 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 d060e17..a71b8c1 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 @@ -3,8 +3,6 @@ package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speaker; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType; -import org.w3c.dom.Document; -import org.w3c.dom.Element; public class Speaker_File_Impl implements Content, Speaker { @@ -51,33 +49,4 @@ public class Speaker_File_Impl implements Content, Speaker { public MongoDBEntryType getType() { 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"); - speaker.setAttribute("contentId", String.valueOf(this.getContentId())); - speaker.setAttribute("speechId", String.valueOf(this.getSpeechId())); - speaker.setAttribute("speakerId", String.valueOf(this.getSpeakerId())); - speaker.setAttribute("speakerName", this.getSpeakerName()); - speaker.setAttribute("fraction", this.getFraction()); - return 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 3031055..fa765c5 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 @@ -5,8 +5,6 @@ import org.apache.uima.jcas.JCas; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType; -import org.w3c.dom.Document; -import org.w3c.dom.Element; import java.util.ArrayList; @@ -83,14 +81,6 @@ 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 @@ -113,55 +103,4 @@ 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(); - - tex.append("\\NLP Metadata\\\n"); - - tex.append("$$NLPMETADATA$$\n"); - - tex.append("\\subsection*{Speech Content}\n"); - - // Add content block of speeches - for (Content content: this.getSpeechContents()) { - tex.append(content.toTeX()); - } - - - 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"); - speech.setAttribute("sessionId", String.valueOf(this.getSessionId())); - speech.setAttribute("agendaItemId", String.valueOf(this.getAgendaItemId())); - speech.setAttribute("speechId", String.valueOf(this.getSpeechId())); - speech.setAttribute("speakerId", String.valueOf(this.getSpeakerId())); - speech.setAttribute("speakerName", this.getSpeakerName()); - speech.setAttribute("fraction", this.getFraction()); - speech.setAttribute("speechKey", this.getSpeechKey()); - - for (Content content: this.getSpeechContents()) { - speech.appendChild(content.toXML(doc)); - } - - return speech; - } } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Interfaces/Content.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Interfaces/Content.java index da5955e..1138cb7 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Interfaces/Content.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Interfaces/Content.java @@ -1,7 +1,6 @@ package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType; -import org.w3c.dom.Element; public interface Content { /** @@ -25,19 +24,4 @@ public interface Content { * @return The speech ID. */ int getSpeechId(); - - /** - * Returns the content as LaTeX. - * - * @return The content. - */ - String toTeX(); - - /** - * Returns the content as XML. - * - * @param doc The XML document. - * @return The content. - */ - Element toXML(org.w3c.dom.Document doc); } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Interfaces/Speech.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Interfaces/Speech.java index 2152a6a..642a24c 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Interfaces/Speech.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Interfaces/Speech.java @@ -3,8 +3,6 @@ package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces; import org.apache.uima.UIMAException; import org.apache.uima.jcas.JCas; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType; -import org.w3c.dom.Document; -import org.w3c.dom.Element; import java.util.List; @@ -87,8 +85,4 @@ public interface Speech { String getFullText(); JCas toCas() throws UIMAException; - - String toTeX(); - - Element toXML(Document doc); } 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 3572151..1750a36 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 @@ -39,13 +39,6 @@ public class SpeechParser { public void setParseLegislativePeriods(Boolean parseLegislativePeriods) { } - /** - * Parst alle Sessions aus den globalen XML-Dokumenten, die über PPRUtils.processXML() abgerufen werden. - * Dabei werden auch die zugehörigen Reden und AgendaItems (sowie deren Inhalte) geparst. - * Die temporären Dateien werden nach der Verarbeitung gelöscht. - * - * @return Eine Liste von Session-Objekten, die aus den XML-Dokumenten erstellt wurden. - */ public List parseAllSessions() { List sessions = new ArrayList<>(); this.speeches = new ArrayList<>(); @@ -67,15 +60,6 @@ public class SpeechParser { } - /** - * Parst alle neuen Sessions aus den übergebenen XML-Dokumenten. - * Diese Methode wird verwendet, wenn bereits ein Set von XML-Dokumenten (z. B. von neuen Protokollen) - * vorliegt. Für jedes XML-Dokument wird eine temporäre Datei erstellt, geparst und anschließend gelöscht. - * - * @param xmlDocuments Ein Set von XML-Dokumenten (als org.w3c.dom.Document), - * die geparst werden sollen. - * @return Eine Liste von Session-Objekten, die aus den XML-Dokumenten erstellt wurden. - */ public List parseAllSessions(Set xmlDocuments) { List sessions = new ArrayList<>(); this.speeches = new ArrayList<>(); @@ -96,21 +80,6 @@ public class SpeechParser { } - /** - * Parst eine einzelne Session aus einer XML-Datei. - * - * - * Diese Methode erstellt mithilfe eines DocumentBuilder ein org.w3c.dom.Document aus der übergebenen Datei. - * Anschließend werden die Sitzungsdaten (z. B. Legislaturperiode, Sitzung-Nummer, Datum und Uhrzeit) aus dem Root-Element extrahiert. - * Danach werden die AgendaItems der Session und die zugehörigen Reden (inkl. Redner und Inhalte) geparst. - * Für jeden AgendaItem werden die zugehörigen Reden aus den untergeordneten XML-Elementen ("rede") extrahiert. - * Die geparsten Daten werden in Objekten vom Typ Session_File_Impl und AgendaItem_File_Impl abgelegt. - * - * - * @param file Die temporäre XML-Datei, die die Session-Daten enthält. - * @return Ein Session-Objekt, das aus der XML-Datei erstellt wurde. - * @throws Exception Falls beim Parsen der XML-Datei oder der Konvertierung in ein Session-Objekt ein Fehler auftritt. - */ private Session parseSessionFile(File file) throws Exception { //file = removeDoctypeAnnotation(file.getAbsolutePath()); @@ -215,16 +184,6 @@ public class SpeechParser { return session; } - /** - * Retrieves the text content of the first child element with the specified tag name. - * The method searches for child elements with the given tag name in the provided element. - * If at least one such element is found, its text content is returned after trimming leading and trailing whitespace. - * If no child element with the specified tag name exists, the method returns null. - * - * @param parent the parent XML element in which to search for the child element - * @param tagName the name of the child element whose text content is to be retrieved - * @return the trimmed text content of the first matching child element, or null if no such element is found - */ private static String getOptionalTextContent(Element parent, String tagName) { NodeList nodes = parent.getElementsByTagName(tagName); if (nodes.getLength() > 0) { @@ -237,12 +196,7 @@ public class SpeechParser { } /** - * 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. + * Konvertiert ein org.w3c.dom.Document in eine temporäre Datei. */ private File convertDocumentToFile(org.w3c.dom.Document xmlDoc) throws Exception { File tempFile = File.createTempFile("session_", ".xml"); diff --git a/src/main/resources/.DS_Store b/src/main/resources/.DS_Store deleted file mode 100644 index 41fcc30..0000000 Binary files a/src/main/resources/.DS_Store and /dev/null differ diff --git a/src/main/resources/static/favicon.ico b/src/main/resources/static/favicon.ico deleted file mode 100644 index 898a11b..0000000 Binary files a/src/main/resources/static/favicon.ico and /dev/null differ diff --git a/src/main/resources/static/index.css b/src/main/resources/static/index.css index 73f5f71..ca06fc5 100644 --- a/src/main/resources/static/index.css +++ b/src/main/resources/static/index.css @@ -2,11 +2,11 @@ :root { --primary-color: #333; - --accent-color: #a8170d; + --accent-color: #a00000; --background-color: #F4F4F9; --confirm-button-color: #28a745; --confirm-button-color-hover: #218838; - --header-background-color: #171717; + --header-background-color: darkgray; } @@ -27,15 +27,6 @@ header { top: 0; left: 0; right: 0; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3); - border-bottom: 5px solid #a8170d; - transition: top 0.3s ease; -} - -header h1 { - color: white; - text-align: center; - padding: 10px; } nav { @@ -73,24 +64,7 @@ body { color: var(--primary-color); line-height: 1.6; padding: 20px; - margin-top: 120px; - padding-bottom: 110px; - /* align items to center */ - display: flex; - flex-direction: column; - align-items: center; -} - -main { - width: 80%; - flex: 1 -} - -.centered-content { - display: flex; - justify-content: center; - align-items: center; - padding: 0 auto; + margin-top: 120px } /* Heading Styling */ @@ -150,7 +124,6 @@ th, td { padding: 12px; text-align: left; border-bottom: 1px solid #ddd; - border: 1px solid #ddd; } th { @@ -201,6 +174,23 @@ tbody tr:hover { } } + +.add-member-button { + background-color: var(--confirm-button-color); /* Green color */ + color: white; + padding: 10px 20px; + text-decoration: none; + border-radius: 5px; + font-size: 16px; + display: inline-block; + transition: background-color 0.3s ease; +} + +/* Change button color on hover */ +.add-member-button:hover { + background-color: var(--confirm-button-color-hover); /* Darker green on hover */ +} + #search-button { width: 75px; background-color: var(--confirm-button-color); @@ -212,93 +202,13 @@ tbody tr:hover { background-color: var(--confirm-button-color-hover); } -.red-button { - background-color: var(--accent-color); - border-radius: 5px; - padding: 5px 10px 5px 10px; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.5); -} - -.red-button a { - text-decoration: none; - color: white -} - -.red-button:hover { - background-color: #8c0d03; - cursor: pointer; -} - -.centered-flex-button { - width: 200px; - margin: 0 auto; - text-align: center; -} - -.sentiment-positive { - color: green; -} - -.sentiment-negative { - color: red; -} - -.sentiment-neutral { - color: grey; -} - .back-link { position: fixed; bottom: 50px; right: 50px; -} - -.filter-form { - background-color: white; - padding: 30px; + background-color: var(--accent-color); border-radius: 5px; - box-shadow: inset 0 2px 10px rgba(0, 0, 0, 0.5); -} - -.filter-form form { - margin: 0; -} - -select { - min-width: 200px; -} - -.chart-container { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(1000px, 1fr)); - grid-template-rows: repeat(2, 1fr); - gap: 10px; - width: 100%; -} - -.chart { - background-color: lightgray; - padding: 30px; - text-align: center; - border: 1px solid #ccc; - border-radius: 10px; - height: 800px; -} - -.chart-svg { - transform: scale(0.9); - z-index: 1; -} - -.member-photo { - max-width: 400px; - height: auto; - margin-bottom: 20px; - border-radius: 10px; -} - -.export-button { - flex: 1; - flex-direction: row; - justify-content: center; -} + padding: 5px 10px 5px 10px; + text-decoration: none; + color: white +} \ No newline at end of file diff --git a/src/main/resources/templates/about.ftl b/src/main/resources/templates/about.ftl index d4ec61f..afd5250 100644 --- a/src/main/resources/templates/about.ftl +++ b/src/main/resources/templates/about.ftl @@ -2,9 +2,5 @@ <#include "header.ftl"> -

Über

-

Alle Infos zur Nutzung und die Dokumentation kann auf der Doku GitLab Repository eingesehen werden

-
-
-

PPR WS24/25 - Gruppe_05_1

+

About

<#include "footer.ftl"> \ No newline at end of file diff --git a/src/main/resources/templates/charts.ftl b/src/main/resources/templates/charts.ftl deleted file mode 100644 index c9fcacd..0000000 --- a/src/main/resources/templates/charts.ftl +++ /dev/null @@ -1,52 +0,0 @@ - - - Parliament Explorer - -<#include "header.ftl"> - - -

Chart Sortiment

-

NLP Analyse aller Reden

-
-
- <#if aggregatedTopics?? && (aggregatedTopics?size gt 0)> -

Topics Information (als Bubble Chart)

- <#assign condenseTopicInformation = aggregatedTopics> - <#include "topicsBubbleChart.ftl"> - <#else> -

Keine Topics Information verfügbar

- -
- -
- <#if aggregatedPOS?? && (aggregatedPOS?size gt 0)> -

POS Information (als Bar Chart)

- <#assign posList = aggregatedPOS> - <#include "posBarChart.ftl"> - <#else> -

Keine POS Information verfügbar

- -
- -
- <#if aggregatedSentiment?? && (aggregatedSentiment?size gt 0)> -

Sentiments Information (als Radar Chart)

- <#assign sentiments = [aggregatedSentiment]> - <#include "sentimentsRadarChart.ftl"> - <#else> -

Keine Sentiments Information verfügbar

- -
- -
- <#if aggregatedNE?? && (aggregatedNE?size gt 0)> -

Named Entities Information (als Sunburst Chart)

- <#assign neMap = aggregatedNE> - <#include "namedEntitiesSunburstChart.ftl"> - <#else> -

Keine Named Entities Information verfügbar

- -
-
- -<#include "footer.ftl"> diff --git a/src/main/resources/templates/export.ftl b/src/main/resources/templates/export.ftl deleted file mode 100644 index 4b2f124..0000000 --- a/src/main/resources/templates/export.ftl +++ /dev/null @@ -1,43 +0,0 @@ - - - Parliament Explorer - -<#include "header.ftl"> - -
-

Export von Reden

-

Export von allen Reden (Dieser Prozess kanne einige Zeit dauern):

-
- -
- -
-
-

Export von allen Reden eines Parlamentariers.

-
- <#assign formAction = "/members"> - <#include "filterForm.ftl"> -
-
-

Export einer bestimmten Rede nach ID

-
-
- - - -
-
-
-
- - - -
-
-
- -<#include "footer.ftl"> \ No newline at end of file diff --git a/src/main/resources/templates/filterForm.ftl b/src/main/resources/templates/filterForm.ftl index cfbc3a5..0e0ba2e 100644 --- a/src/main/resources/templates/filterForm.ftl +++ b/src/main/resources/templates/filterForm.ftl @@ -1,33 +1,4 @@ -
-
- - - - - <#if parties??> - - - - <#if topics??> - - - - -
-
+
+ Name : + +
\ No newline at end of file diff --git a/src/main/resources/templates/filterFormForSpeeches.ftl b/src/main/resources/templates/filterFormForSpeeches.ftl deleted file mode 100644 index d576cec..0000000 --- a/src/main/resources/templates/filterFormForSpeeches.ftl +++ /dev/null @@ -1,28 +0,0 @@ -
-
- - - - <#if parties??> - - - - <#if topics??> - - - - -
-
diff --git a/src/main/resources/templates/header.ftl b/src/main/resources/templates/header.ftl index 8d7294b..2070c0c 100644 --- a/src/main/resources/templates/header.ftl +++ b/src/main/resources/templates/header.ftl @@ -1,139 +1,11 @@ - \ No newline at end of file diff --git a/src/main/resources/templates/home.ftl b/src/main/resources/templates/home.ftl index 42af236..b287e4e 100644 --- a/src/main/resources/templates/home.ftl +++ b/src/main/resources/templates/home.ftl @@ -1,10 +1,6 @@ - Parliament Explorer <#include "header.ftl"> - -

Overview

-

Welcome to the home page of the PPR Multimodal Parliament Explorer. View the different Pages in the Navigation Bar at the top

- + <#include "footer.ftl"> \ No newline at end of file diff --git a/src/main/resources/templates/namedEntitiesSunburstChart.ftl b/src/main/resources/templates/namedEntitiesSunburstChart.ftl index 3080860..e69de29 100644 --- a/src/main/resources/templates/namedEntitiesSunburstChart.ftl +++ b/src/main/resources/templates/namedEntitiesSunburstChart.ftl @@ -1,68 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/main/resources/templates/namedEntitiesTextEntry.ftl b/src/main/resources/templates/namedEntitiesTextEntry.ftl deleted file mode 100644 index 9c835cb..0000000 --- a/src/main/resources/templates/namedEntitiesTextEntry.ftl +++ /dev/null @@ -1 +0,0 @@ - {"name": "${neText}", "size": ${count}} \ No newline at end of file diff --git a/src/main/resources/templates/namedEntitiesTypeEntry.ftl b/src/main/resources/templates/namedEntitiesTypeEntry.ftl deleted file mode 100644 index 7e83fb1..0000000 --- a/src/main/resources/templates/namedEntitiesTypeEntry.ftl +++ /dev/null @@ -1,10 +0,0 @@ - - { - "name": "${neType}", - "children": [ - <#list innerMap as neText, count> - <#include "namedEntitiesTextEntry.ftl"> <#sep>, - - ] - } - diff --git a/src/main/resources/templates/nlp.ftl b/src/main/resources/templates/nlp.ftl index a7f9f83..4dfeb43 100644 --- a/src/main/resources/templates/nlp.ftl +++ b/src/main/resources/templates/nlp.ftl @@ -1,41 +1,34 @@ -
-
- <#if s.nlp.topics??> -

Topics Information (als Bubble Chart)

- <#assign condenseTopicInformation = s.nlp.topics> - <#include "topicsBubbleChart.ftl"> - <#else> -

Keine Topics Information für diese Rede verfügbar

- -
+ <#if s.nlp.topics??> +

Topics Information (als Bubble Chart)

+ <#assign condenseTopicInformation = s.nlp.topics> + <#include "topicsBubbleChart.ftl"> + <#else> +

Keine Topics Information für diese Rede verfügbar

+ -
- <#if s.nlp.posList??> -

POS Information (als Bar Chart)

- <#assign posList = s.nlp.posList> - <#include "posBarChart.ftl"> - <#else> -

Keine POS Information verfügbar für diese Rede verfügbar

- -
+ <#if s.nlp.posList??> +

POS Information (als Bar Chart)

+ <#assign posList = s.nlp.posList> + <#include "posBarChart.ftl"> + <#else> +

Keine POS Information verfügbar für diese Rede verfügbar

+ -
- <#if overallSentiments??> -

Sentiments Information (als Radar Chart)

- <#assign sentiments = overallSentiments> - <#include "sentimentsRadarChart.ftl"> - <#else> -

Keine Sentiments Information für diese Rede verfügbar

- -
-
- <#if na_info??> -

Named Entities Information (als Sunburst Chart)

- <#assign neMap = na_info> - <#include "namedEntitiesSunburstChart.ftl"> - <#else> -

Keine Named Entities Information für diese Rede verfügbar

- -
-
\ No newline at end of file + <#if s.nlp.sentiments??> +

SentimentsInformation (als Radar Chart)

+ <#assign overallSentiment = s.nlp.overallSentiment> + <#assign sentiments = s.nlp.sentiments> + <#include "sentimentsRadarChart.ftl"> + <#else> +

Keine Sentiments Information für diese Rede verfügbar

+ + + + <#if s.nlp.namedEntities??> +

Named Entities Information (als Sunburst Chart)

+ <#assign nea = s.nlp.namedEntities> + <#include "namedEntitiesSunburstChart.ftl"> + <#else> +

Keine Named Entities Information für diese Rede verfügbar

+ \ No newline at end of file diff --git a/src/main/resources/templates/parlamentarier.ftl b/src/main/resources/templates/parlamentarier.ftl index 2dbb945..b700c23 100644 --- a/src/main/resources/templates/parlamentarier.ftl +++ b/src/main/resources/templates/parlamentarier.ftl @@ -1,21 +1,26 @@ - + - + Abgeordnete Übersicht + + <#include "header.ftl">

Abgeordnete (alphabetisch sortiert)

- <#assign formAction = "/members"> <#include "filterForm.ftl"> -
-

Suche ergibt ${parlamentarier?size} Parlamentarier


@@ -29,16 +34,14 @@ <#list parlamentarier as p> - +
${p.vorname} ${p.nachname}${p.nachname}, ${p.vorname} ${p.partei} ${p.id}
- + Zurück zum Anfang
<#include "footer.ftl"> diff --git a/src/main/resources/templates/parlamentarierDetails.ftl b/src/main/resources/templates/parlamentarierDetails.ftl index c3ac2b2..2e75567 100644 --- a/src/main/resources/templates/parlamentarierDetails.ftl +++ b/src/main/resources/templates/parlamentarierDetails.ftl @@ -1,7 +1,7 @@ - + ${p.vorname} ${p.nachname} (${p.partei}) @@ -15,11 +15,13 @@ <#include "header.ftl"> -

${p.vorname} ${p.nachname} (${p.partei})

+
+

${p.vorname} ${p.nachname} (${p.partei})

+

<#if pic??> - Foto von ${p.vorname}  ${p.nachname} (${p.partei}) + Foto von ${p.vorname}  ${p.nachname} (${p.partei}) <#else>

(kein Foto verfügbar)

@@ -29,21 +31,7 @@

Reden

<#if speechesPlaceholder??> - -
-

Reden Export von allen Reden von ${p.vorname} ${p.nachname}

-
- -
- - -
<#else> Keine Reden vorhanden @@ -104,9 +92,13 @@
-
- Zurück -
+ +
+
+
+ +
+
diff --git a/src/main/resources/templates/posBarChart.ftl b/src/main/resources/templates/posBarChart.ftl index c6be459..26c3e36 100644 --- a/src/main/resources/templates/posBarChart.ftl +++ b/src/main/resources/templates/posBarChart.ftl @@ -1,10 +1,12 @@ - + - - - - - - - - - - diff --git a/src/main/resources/templates/showAllSpeechesList.ftl b/src/main/resources/templates/showAllSpeechesList.ftl deleted file mode 100644 index 78b9662..0000000 --- a/src/main/resources/templates/showAllSpeechesList.ftl +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - Alle Reden - -<#include "header.ftl"> - -

Reden

-
- -
- <#assign formAction = "/reden"> - <#include "filterFormForSpeeches.ftl"> -

- -
- - - - - - - - - - - - <#list speechesMetaDataList as redeMd> - - - - - - - - - - -
DatumNameFraktionSitzung / Agenda
${redeMd.dateTimeString}${redeMd.speakerName}<#if redeMd.fraction??> ${redeMd.fraction} <#else>Parteilos<#if redeMd.agendaTitel??> ${redeMd.agendaTitel} <#else>Agendapunkt
-
- -
- -<#include "footer.ftl"> - \ No newline at end of file diff --git a/src/main/resources/templates/showSpeechesList.ftl b/src/main/resources/templates/showSpeechesList.ftl index 15031ed..ff48465 100644 --- a/src/main/resources/templates/showSpeechesList.ftl +++ b/src/main/resources/templates/showSpeechesList.ftl @@ -2,7 +2,6 @@ - Reden von ${p.vorname} ${p.nachname} (${p.partei})