diff --git a/Benutzerhandbuch.txt b/Benutzerhandbuch.txt new file mode 100644 index 0000000..edbf900 --- /dev/null +++ b/Benutzerhandbuch.txt @@ -0,0 +1,38 @@ +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 05365b3..b57ac66 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,196 @@ # 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 ``` -## Upload member Images +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 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 new file mode 100644 index 0000000..2545ec0 Binary files /dev/null and b/doc/Gantt_Chart_PPR_Abschlussprojekt.ods differ diff --git a/doc/Gantt_Chart_PPR_Abschlussprojekt.pdf b/doc/Gantt_Chart_PPR_Abschlussprojekt.pdf new file mode 100644 index 0000000..235a824 Binary files /dev/null and b/doc/Gantt_Chart_PPR_Abschlussprojekt.pdf differ diff --git a/doc/PPR_Mockup.jpg b/doc/PPR_Mockup.jpg new file mode 100644 index 0000000..5a79ca3 Binary files /dev/null and b/doc/PPR_Mockup.jpg differ diff --git a/doc/UseCasePlantUML b/doc/UseCasePlantUML new file mode 100644 index 0000000..56ebd11 --- /dev/null +++ b/doc/UseCasePlantUML @@ -0,0 +1,77 @@ +@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 new file mode 100644 index 0000000..a352939 Binary files /dev/null and b/doc/class_diagram.pdf differ diff --git a/doc/class_diagram.png b/doc/class_diagram.png new file mode 100644 index 0000000..50dcfef Binary files /dev/null and b/doc/class_diagram.png differ diff --git a/doc/class_diagram.tex b/doc/class_diagram.tex new file mode 100644 index 0000000..5a97aaa --- /dev/null +++ b/doc/class_diagram.tex @@ -0,0 +1,3564 @@ +\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 new file mode 100644 index 0000000..42d1cc6 Binary files /dev/null and b/doc/usecasediagram.png differ diff --git a/generated_class_diagram.puml b/generated_class_diagram.puml index 95c3b22..e7bcb28 100644 --- a/generated_class_diagram.puml +++ b/generated_class_diagram.puml @@ -10,11 +10,13 @@ package org.texttechnologylab.project.gruppe_05_1 { + 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() } } @@ -23,45 +25,307 @@ 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.exceptions { - class "FractionNotFoundException" as org.texttechnologylab.project.gruppe_05_1.exceptions.FractionNotFoundException { +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.exceptions { - class "FractionAlreadyExistsException" as org.texttechnologylab.project.gruppe_05_1.exceptions.FractionAlreadyExistsException { +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.exceptions { - class "MemberNotFoundException" as org.texttechnologylab.project.gruppe_05_1.exceptions.MemberNotFoundException { +package org.texttechnologylab.project.gruppe_05_1.database { + class "SpeechIndexFactoryImpl" as org.texttechnologylab.project.gruppe_05_1.database.SpeechIndexFactoryImpl { + - speechParser + - sessions + - agendaItems + - speeches + - members + + parseLegislativePeriods() + + builder() + + parseSessions() + + build() + + filterForCurrentMembers() + } +} +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 { + class "MongoObjectFactory" as org.texttechnologylab.project.gruppe_05_1.database.MongoObjectFactory { + - factory + + getFactory() + + createBiografischeAngaben() + + createInstitution() + + createMdb() + + createMdbName() + + createWahlperiode() + + createSpeaker() + + createMembership() + } +} +org.texttechnologylab.project.gruppe_05_1.database.MongoObjectFactory "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership +org.texttechnologylab.project.gruppe_05_1.database.MongoObjectFactory "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker + +package org.texttechnologylab.project.gruppe_05_1.database { + interface "MongoOperations" as org.texttechnologylab.project.gruppe_05_1.database.MongoOperations { + + createEntity() + + createList() } } -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.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.exceptions { - class "ServerErrorException" as org.texttechnologylab.project.gruppe_05_1.exceptions.ServerErrorException { +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.exceptions { - class "SpeechNotFoundException" as org.texttechnologylab.project.gruppe_05_1.exceptions.SpeechNotFoundException { +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.exceptions { - class "AgendaItemNotFoundException" as org.texttechnologylab.project.gruppe_05_1.exceptions.AgendaItemNotFoundException { +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 { + + 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 + +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 { + + 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 + +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 { + + 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 + +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 { + + 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 + +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 { + + 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 + +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 { + + 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 + +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() + + 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 + +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 { + + 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 + +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() + } +} +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 + +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() + } +} +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 + +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() + } +} +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 package org.texttechnologylab.project.gruppe_05_1.domain { enum "Gender" as org.texttechnologylab.project.gruppe_05_1.domain.Gender { @@ -71,35 +335,165 @@ package org.texttechnologylab.project.gruppe_05_1.domain { } } -package org.texttechnologylab.project.gruppe_05_1.domain.mdb { - class "MdbName" as org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbName { - - nachname - - vorname - - ortszusatz - - adel - - praefix - - andereTitel - - akadTitel - - historieVon - - historieBis - + getNachname() - + setNachname() +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() - + getOrtszusatz() - + setOrtszusatz() - + getAdel() - + setAdel() - + getPraefix() - + setPraefix() - + getAndereTitel() - + setAndereTitel() - + getAkadTitel() - + setAkadTitel() - + getHistorieVon() - + setHistorieVon() - + getHistorieBis() - + setHistorieBis() + + 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() @@ -161,40 +555,47 @@ package org.texttechnologylab.project.gruppe_05_1.domain.mdb { } 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() + 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 + - vorname + - ortszusatz + - adel + - praefix + - andereTitel + - akadTitel + - historieVon + - historieBis + + getNachname() + + setNachname() + + getVorname() + + setVorname() + + getOrtszusatz() + + setOrtszusatz() + + getAdel() + + setAdel() + + getPraefix() + + setPraefix() + + getAndereTitel() + + setAndereTitel() + + getAkadTitel() + + setAkadTitel() + + getHistorieVon() + + setHistorieVon() + + getHistorieBis() + + setHistorieBis() + equals() + hashCode() + toString() @@ -235,13 +636,20 @@ 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() +package org.texttechnologylab.project.gruppe_05_1.domain.speaker { + class "Membership" as org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership { + + getRole() + + setRole() + + getMember() + + setMember() + + getBegin() + + setBegin() + + getEnd() + + setEnd() + + getLabel() + + setLabel() + + getWp() + + setWp() + equals() + hashCode() + toString() @@ -287,296 +695,14 @@ package org.texttechnologylab.project.gruppe_05_1.domain.speaker { } } -package org.texttechnologylab.project.gruppe_05_1.domain.speaker { - class "Membership" as org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership { - + getRole() - + setRole() - + getMember() - + setMember() - + getBegin() - + setBegin() - + getEnd() - + setEnd() - + getLabel() - + setLabel() - + getWp() - + setWp() - + 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() - } -} -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 "ParlamentarierDetails" as org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails { +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() - + 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 { - 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.nlp { - class "NamedEntity" as org.texttechnologylab.project.gruppe_05_1.domain.nlp.NamedEntity { - + getType() - + setType() - + getText() - + setText() - + 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() - } -} - -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 "VideoInformation" as org.texttechnologylab.project.gruppe_05_1.domain.nlp.VideoInformation { - + setAudioTokens() - + 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() - } -} - -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 "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 "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 "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 "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.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() @@ -622,13 +748,18 @@ package org.texttechnologylab.project.gruppe_05_1.domain.speech { } package org.texttechnologylab.project.gruppe_05_1.domain.speech { - class "Agenda" as org.texttechnologylab.project.gruppe_05_1.domain.speech.Agenda { - + getIndex() - + setIndex() + class "Speech" as org.texttechnologylab.project.gruppe_05_1.domain.speech.Speech { + getId() + setId() - + getTitle() - + setTitle() + + getText() + + setText() + + getSpeakerId() + + setSpeakerId() + + getProtocol() + + setProtocol() + + setTextContents() + + getAgenda() + + setAgenda() + equals() + hashCode() + toString() @@ -677,457 +808,184 @@ 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 { - + getId() - + setId() - + getText() - + setText() - + getSpeakerId() - + setSpeakerId() - + getProtocol() - + setProtocol() - + setTextContents() - + getAgenda() - + setAgenda() +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.util { - class "FileUtils" as org.texttechnologylab.project.gruppe_05_1.util.FileUtils { - + createDirectoryIFNotExists() - + writeStringsToFile() - + writeStringToFile() - + createFileWriter() +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.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.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.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.util { - class "PropertiesUtils" as org.texttechnologylab.project.gruppe_05_1.util.PropertiesUtils { - + readPropertiesFromResource() +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.util { - class "Logger" as org.texttechnologylab.project.gruppe_05_1.util.Logger { - - DATE_TIME_FORMATTER - + info() - + warn() - + error() - + debug() - + pink() - } -} -org.texttechnologylab.project.gruppe_05_1.util.Logger "1" <-- "1" static - -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.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.rest { - class "FrontEndController" as org.texttechnologylab.project.gruppe_05_1.rest.FrontEndController { - + getHomepage() - + getAllParlamentarier() - } -} -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.HtmlSpeech -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.html.ParlamentarierDetails -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.domain.speech.SpeechMetaData -org.texttechnologylab.project.gruppe_05_1.rest.FrontEndController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger -org.texttechnologylab.project.gruppe_05_1.rest.FrontEndController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PPRUtils -org.texttechnologylab.project.gruppe_05_1.rest.FrontEndController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech -org.texttechnologylab.project.gruppe_05_1.rest.FrontEndController "1" <-- "1" static - -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 "RESTHandlerOld" as org.texttechnologylab.project.gruppe_05_1.rest.RESTHandlerOld { - + startJavalin() - } -} -org.texttechnologylab.project.gruppe_05_1.rest.RESTHandlerOld "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger -org.texttechnologylab.project.gruppe_05_1.rest.RESTHandlerOld "1" <-- "1" static - -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 "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 "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.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.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 -org.texttechnologylab.project.gruppe_05_1.rest.SpeechController "1" <-- "1" static - -package org.texttechnologylab.project.gruppe_05_1.export { - class "TeXUtil" as org.texttechnologylab.project.gruppe_05_1.export.TeXUtil { +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.database { - class "SpeechIndexFactoryImpl" as org.texttechnologylab.project.gruppe_05_1.database.SpeechIndexFactoryImpl { - - speechParser - - sessions - - agendaItems - - speeches - - members - + parseLegislativePeriods() - + builder() - + parseSessions() - + build() - + filterForCurrentMembers() +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.database.SpeechIndexFactoryImpl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser +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.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() - - readParlamentarierDetailsFromSpeaker() - - getMembership() - + countSpeechesOfSpeaker() - + augmentSpeechMetaDataFromSession() - + getSessionDateTime() - + getAgendaTitle() - + getSpeechByKey() - + getMemberPhoto() - + rebuildMetadata() - } -} -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.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 { - class "SpeechIndex" as org.texttechnologylab.project.gruppe_05_1.database.SpeechIndex { - - sessions - - speeches - - agendaItems +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.database { - interface "SpeechIndexFactory" as org.texttechnologylab.project.gruppe_05_1.database.SpeechIndexFactory { - - parseLegislativePeriods() - - filterForCurrentMembers() +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.database { - interface "MongoOperations" as org.texttechnologylab.project.gruppe_05_1.database.MongoOperations { - + createEntity() - + createList() +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.database { - class "MongoObjectFactory" as org.texttechnologylab.project.gruppe_05_1.database.MongoObjectFactory { - - factory - + getFactory() - + createBiografischeAngaben() - + createInstitution() - + createMdb() - + createMdbName() - + createWahlperiode() - + createSpeaker() - + createMembership() +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() } } -org.texttechnologylab.project.gruppe_05_1.database.MongoObjectFactory "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership -org.texttechnologylab.project.gruppe_05_1.database.MongoObjectFactory "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker - -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() - + sessionExists() - + getMemberPhoto() - + 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.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.domainimpl.mdb { - class "Speech_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speech_MongoDB_Impl { - + getFullText() - + toCas() - + toTeX() - } -} -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.Speech - -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 "MdbName_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.MdbName_MongoDB_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 - -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 { - + 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 - -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 { - + 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 - -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 { - + 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 - -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 { - + 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 - -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 { - + createEntity() - + toTeX() - } -} -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" static - -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 "LegislativePeriod_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.LegislativePeriod_MongoDB_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 - -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 { - } -} -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 - -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 { - } -} -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 - -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 { - } -} -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 package org.texttechnologylab.project.gruppe_05_1.nlp { class "NlpUtils" as org.texttechnologylab.project.gruppe_05_1.nlp.NlpUtils { @@ -1167,6 +1025,188 @@ org.texttechnologylab.project.gruppe_05_1.nlp.XmiExtractor "1" <-- "1" org.textt 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 @@ -1200,15 +1240,14 @@ org.texttechnologylab.project.gruppe_05_1.xml.mdb.BiografischeAngaben_File_Impl 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 { + 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.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 +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 { @@ -1231,14 +1270,15 @@ org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbName_File_Impl "1" <-- "1" 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 "Institution_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.mdb.Institution_File_Impl { + 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.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 +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 { @@ -1277,6 +1317,112 @@ org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser "1" <-- "1" 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 @@ -1295,20 +1441,21 @@ org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.LegislativePeriod_F 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 "Fraction_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Fraction_File_Impl { - - name - - longName - - members - + getName() - + getLongName() + class "Line_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Line_File_Impl { + - contentId + # speechId + - content + + getContentId() + + getSpeechId() + + getContent() + getType() - + addMember() - + updateName() - + toHTML() + + toTeX() + + toXML() } } -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 +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 { @@ -1333,128 +1480,6 @@ org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.MemberOfParliament_ 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 "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 "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 "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 "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 "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 "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 "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 "Session_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Session_File_Impl { - id @@ -1475,6 +1500,27 @@ org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Session_File_Impl " 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 @@ -1497,6 +1543,8 @@ package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls { + 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 @@ -1504,28 +1552,16 @@ org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speech_File_Impl "1 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 "Comment" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Comment { + interface "Constituency" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Constituency { } } -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Comment "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType +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 "Individual" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Individual { + interface "HistoryEntry" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.HistoryEntry { } } -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 "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 "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 +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 { @@ -1535,29 +1571,10 @@ package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { 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 "Session" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Session { - - addAgendaItem() + interface "Speaker" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speaker { } } -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 "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 "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 "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 +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 { @@ -1567,10 +1584,22 @@ package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { 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 "Constituency" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Constituency { + interface "Individual" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Individual { } } -org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Constituency "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType +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 { @@ -1580,9 +1609,29 @@ package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces { } 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 @@ -1592,4 +1641,85 @@ package org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums { } } +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/main/java/org/texttechnologylab/project/gruppe_05_1/Main.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/Main.java index 7670218..ebe8e79 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,6 +7,7 @@ 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; @@ -43,6 +44,13 @@ public class Main { 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"); @@ -146,8 +154,9 @@ public class Main { if (UPLOAD_MEMBER_PHOTOS) { Logger.pink("Uploading Member Photos to DB..."); - mongoDBHandler.uploadMemberPhotos(); + mongoDBHandler.uploadMemberPhotosFromResourceFolder(); } + SpeechVideoUpdater.init(); ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); scheduler.scheduleAtFixedRate(() -> { try { 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 fc263d4..d0b0209 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 @@ -4,11 +4,10 @@ import com.mongodb.MongoClientSettings; import com.mongodb.MongoCredential; import com.mongodb.ServerAddress; import com.mongodb.bulk.BulkWriteResult; -import com.mongodb.client.MongoClient; -import com.mongodb.client.MongoClients; -import com.mongodb.client.MongoCollection; -import com.mongodb.client.MongoDatabase; +import com.mongodb.client.*; 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; @@ -31,6 +30,8 @@ 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 { @@ -57,7 +58,9 @@ 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"); @@ -116,6 +119,7 @@ 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() { @@ -176,6 +180,7 @@ public class MongoDBHandler { /** * * @return List with the names of all collections + * Implementiert von Valentin */ public Set getCollectionNames() { // return getDatabase().listCollectionNames().into(new ArrayList<>()); @@ -186,6 +191,7 @@ 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); @@ -194,6 +200,7 @@ 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 */ @@ -219,6 +226,7 @@ public class MongoDBHandler { /** * Create Collection + * Implementiert von Valentin * @param database * @param collectionName */ @@ -237,6 +245,7 @@ public class MongoDBHandler { /** * Creates a collection. If the collection exists already, delete all its document + * Implementiert von Valentin * @param database * @param collectionName */ @@ -252,7 +261,12 @@ 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)) { @@ -266,6 +280,12 @@ 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)) { @@ -280,6 +300,9 @@ public class MongoDBHandler { } } + /** + * Implementiert von Valentin + */ public void createIndicesForSpeakerCollection() { if (speakerCollection.listIndexes().into(new ArrayList<>()).size() == 1) { MongoDBHandler.createIndexForCollection(speakerCollection,"name", true); @@ -288,10 +311,15 @@ 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); } } @@ -301,6 +329,7 @@ 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 @@ -314,6 +343,7 @@ 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) @@ -325,7 +355,7 @@ public class MongoDBHandler { } /** - * + *Implementiert von Valentin * @param collection * @return count of documents in the collection */ @@ -339,7 +369,7 @@ public class MongoDBHandler { /** - * + *Implementiert von Valentin * @param database * @param collectionName * @return count of documents in the collection @@ -353,7 +383,7 @@ public class MongoDBHandler { } /** - * + *Implementiert von Valentin * @param database * @param collectionName */ @@ -372,6 +402,7 @@ public class MongoDBHandler { */ /** + * Implementiert von Valentin * Creates a BSON document containing only simple fields according to fields given in a map * @param attributes * @return @@ -390,6 +421,7 @@ 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 @@ -418,6 +450,7 @@ public class MongoDBHandler { } /** + * 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 @@ -439,7 +472,7 @@ public class MongoDBHandler { /** - * + *Implementiert von Valentin * @param collection * @param doc * @return @@ -449,7 +482,7 @@ public class MongoDBHandler { } /** - * + *Implementiert von Valentin * @param collection * @param docs * @return @@ -459,7 +492,7 @@ public class MongoDBHandler { } /** - * + *Implementiert von Valentin * @param collection * @param fieldName * @param fieldValue @@ -471,6 +504,7 @@ 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 @@ -493,7 +527,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 @@ -504,11 +538,12 @@ public class MongoDBHandler { collection.deleteOne(deleteQuery); } - /* - * Justus Jonas operations - * ======================= - */ + /** + * Fügt eine Session in die Datenbank ein. + * + * @param session Das Session-Objekt, das eingefügt werden soll. + */ public void insertSession(Session session) { Document sessionDocument = new Document("sessionId", session.getId()) .append("dateTime", session.getDateTime()) @@ -518,6 +553,15 @@ 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; @@ -535,13 +579,22 @@ 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) { @@ -555,7 +608,15 @@ 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)); @@ -579,6 +640,11 @@ 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<>(); @@ -629,7 +695,11 @@ 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<>(); @@ -640,6 +710,13 @@ public class MongoDBHandler { 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<>(); @@ -650,6 +727,11 @@ public class MongoDBHandler { 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<>(); @@ -660,6 +742,12 @@ 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<>(); @@ -670,6 +758,11 @@ 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<>(); @@ -680,6 +773,12 @@ 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<>(); @@ -690,6 +789,13 @@ 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), @@ -697,6 +803,9 @@ 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()); @@ -704,6 +813,11 @@ 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); @@ -721,6 +835,11 @@ 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")); } @@ -737,6 +856,12 @@ 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"); @@ -754,6 +879,12 @@ 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..."); @@ -764,7 +895,41 @@ 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 @@ -781,6 +946,12 @@ 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)); long count = sessionsCollection.countDocuments(filter); @@ -795,8 +966,20 @@ 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 dd5ac73..c1fd65c 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() { 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 4fd3dc8..627c782 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,6 +4,10 @@ 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 dd6d638..87aa8fe 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 @@ -57,11 +57,18 @@ public class MongoPprUtils { 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; @@ -82,12 +89,17 @@ public class MongoPprUtils { return picturesCollection; } + /** + * 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() { @@ -98,6 +110,7 @@ public class MongoPprUtils { } /** + * Implementiert von Valentin * Create the Speech Collection and useful indices for it */ public static void createIndexForSpeechCollection() { @@ -107,6 +120,7 @@ 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({})" */ @@ -123,6 +137,7 @@ 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 @@ -161,6 +176,14 @@ 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"); @@ -229,6 +252,14 @@ public class MongoPprUtils { } } + /** + * 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<>(); @@ -246,6 +277,103 @@ public class MongoPprUtils { /** + * 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 @@ -298,8 +426,9 @@ public class MongoPprUtils { /** * Holt einen Speaker aus der Datenbank - * @param id - * @return + * Implementiert von Jonas + * @param id ID des Parlamentariers + * @return Speaker */ public static Speaker_MongoDB_Impl getSpeakerById(String id) { Logger.debug("ID: " + id); @@ -312,6 +441,7 @@ public class MongoPprUtils { /** + * Implementiert von Valentin * Holt die Details eines Parlamentariers * @param id Parlamentarier-ID (Integer) * @return ParlamentarierDetails @@ -419,9 +549,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 @@ -432,6 +562,7 @@ public class MongoPprUtils { /** + * Implementiert von Valentin * Liefert alle Reden eines Redners zurück * @param speakerId * @return Alle Reden eines Redners @@ -450,6 +581,7 @@ public class MongoPprUtils { } /** + * Implementiert von Valentin * Liefert alle Reden zurück * Die Auswahl kann durch einen (textuellen) Filter eingeschränkt werden * @param filter @@ -486,6 +618,7 @@ public class MongoPprUtils { } /** + * 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 @@ -529,6 +662,7 @@ public class MongoPprUtils { } /** + * 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. @@ -591,6 +725,7 @@ public class MongoPprUtils { /** + * Implementiert von Valentin * Holt die Redeinformationen aus der Datenbank, die wichtig sind, um eine Liste der Reden in HTML darzustellen * @return */ @@ -626,8 +761,48 @@ public class MongoPprUtils { 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 @@ -653,6 +828,7 @@ public class MongoPprUtils { } /** + * Implementiert von Valentin * Liefert das Datum und die Uhrzeit einer Sitzung zurück * @param sessionId * @return @@ -668,6 +844,7 @@ public class MongoPprUtils { } /** + * Implementiert von Valentin * Liefert den Agenda-Titel zurück * @param sessionId * @return @@ -684,6 +861,7 @@ public class MongoPprUtils { } /** + * Implementiert von Valentin * Liefert die Rede-Informationen für die Anzeige einer Rede: * - die Rede-ID * - Name und Fraktion des Redners @@ -702,6 +880,12 @@ public class MongoPprUtils { 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(); @@ -734,6 +918,7 @@ public class MongoPprUtils { /** + * 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) @@ -786,6 +971,11 @@ public class MongoPprUtils { 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)); @@ -796,6 +986,10 @@ public class MongoPprUtils { return speechIds; } + /** + * Implementiert von Valentin + * @return + */ public static List getAllSpeeches() { List speechIds = new ArrayList<>(); Document filter = new Document(); @@ -806,6 +1000,12 @@ public class MongoPprUtils { 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); @@ -815,6 +1015,13 @@ public class MongoPprUtils { } 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); @@ -826,6 +1033,12 @@ public class MongoPprUtils { 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<>(); @@ -856,6 +1069,7 @@ public class MongoPprUtils { } /** + * 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 @@ -877,6 +1091,7 @@ public class MongoPprUtils { ); /** + * 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: @@ -893,6 +1108,7 @@ public class MongoPprUtils { } /** + * Implementiert von Valentin * Reichere die Rede-Dokumente um Informationen an: * - Datum und Uhrzeit der Rede (als DateTime und textuell): dateTimeString , dateTime * - Agenda-Titel: agendaTitel @@ -958,6 +1174,7 @@ public class MongoPprUtils { } /** + * 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 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/domainimpl/mdb/AgendaItem_MongoDB_Impl.java index f4c38b1..bf94d8f 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/domainimpl/mdb/AgendaItem_MongoDB_Impl.java @@ -4,7 +4,9 @@ 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/BiographicalInformation_MongoDB_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/BiographicalInformation_MongoDB_Impl.java index f2e8ee2..2664492 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/BiographicalInformation_MongoDB_Impl.java @@ -11,6 +11,9 @@ 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 { @Override public Document createEntity(BiografischeAngaben entity) { 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_MongoDB_Impl.java index 39f6b54..bd93e7f 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_MongoDB_Impl.java @@ -10,6 +10,9 @@ 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 { @Override public Document createEntity(Institution entity) { 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/LegislativePeriod_MongoDB_Impl.java index 699160b..5951fd3 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/LegislativePeriod_MongoDB_Impl.java @@ -11,6 +11,9 @@ 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 { @Override public Document createEntity(Wahlperiode entity) { 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_MongoDB_Impl.java index 6d10af6..090b834 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_MongoDB_Impl.java @@ -10,6 +10,9 @@ 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 { @Override public Document createEntity(MdbName entity) { 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_MongoDB_Impl.java index dbfa7cf..08be4f0 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_MongoDB_Impl.java @@ -11,6 +11,9 @@ 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 { @Override public Document createEntity(Mdb entity) { 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_MongoDB_Impl.java index 62f19dc..3446ce2 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_MongoDB_Impl.java @@ -10,6 +10,9 @@ 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 { @Override public Document createEntity(Membership entity) { 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/domainimpl/mdb/Session_MongoDB_Impl.java index 3088031..d66c424 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/domainimpl/mdb/Session_MongoDB_Impl.java @@ -4,7 +4,9 @@ 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/domainimpl/mdb/Speaker_MongoDB_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Speaker_MongoDB_Impl.java index f3d5133..0c96ef1 100644 --- 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 @@ -17,6 +17,11 @@ 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")); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Speech_MongoDB_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Speech_MongoDB_Impl.java index a625769..19a4d44 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Speech_MongoDB_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/Speech_MongoDB_Impl.java @@ -19,6 +19,11 @@ 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( @@ -50,29 +55,41 @@ public class Speech_MongoDB_Impl extends Speech_File_Impl implements Speech { } } + /** + * Gibt den vollständigen Text der Rede zurück, indem alle Zeilen- und Kommentarinhalte + * zusammengesetzt werden. Inhalte vom Typ "speaker" werden dabei ignoriert. + * + * @return Der vollständige Redetext als String + */ public String getFullText() { StringBuilder fullText = new StringBuilder(); - // Iteriere über alle Inhalte, die bereits in der Rede gespeichert wurden. + for (Object content : this.getSpeechContents()) { if (content instanceof Line_MongoDB_Impl) { - // Wir gehen davon aus, dass Line_MongoDB_Impl eine Methode getContent() hat, die den Text zurückgibt. + String lineText = ((Line_MongoDB_Impl) content).getContent(); if (lineText != null && !lineText.isEmpty()) { fullText.append(lineText).append("\n"); } } else if (content instanceof Comment_MongoDB_Impl) { - // Wir gehen davon aus, dass Comment_MongoDB_Impl eine Methode getComment() hat, die den Kommentartext liefert. + String commentText = ((Comment_MongoDB_Impl) content).getComment(); if (commentText != null && !commentText.isEmpty()) { fullText.append(commentText).append("\n"); } } - // Inhalte vom Typ "speaker" werden ignoriert. + } return fullText.toString().trim(); } - //TODO not going fuckin insane + /** + * 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()); @@ -82,6 +99,11 @@ public class Speech_MongoDB_Impl extends Speech_File_Impl implements Speech { return jCas; } + /** + * Exportiert die Rede im LaTeX-Format inkl. Platzhalter für Sprecher- und NLP-Informationen. + * + * @return LaTeX-Darstellung der Rede + */ public String toTeX() { StringBuilder tex = new StringBuilder(); @@ -117,6 +139,12 @@ public class Speech_MongoDB_Impl extends Speech_File_Impl implements Speech { return tex.toString(); } + /** + * Wandelt die Rede in ein XML-Element um, das in ein vollständiges XML-Dokument eingefügt werden kann. + * + * @param doc das übergeordnete XML-Dokument + * @return das XML-Element, das die Rede darstellt + */ public Element toXML(org.w3c.dom.Document doc) { Element speech = doc.createElement("speech"); speech.setAttribute("sessionId", String.valueOf(this.getSessionId())); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/speechline/Comment_MongoDB_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimpl/mdb/speechline/Comment_MongoDB_Impl.java index d2ca74d..ca37860 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/domainimpl/mdb/speechline/Comment_MongoDB_Impl.java @@ -5,7 +5,9 @@ import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Comment_File 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) { 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/domainimpl/mdb/speechline/Line_MongoDB_Impl.java index d2d81f4..6b06bde 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/domainimpl/mdb/speechline/Line_MongoDB_Impl.java @@ -5,7 +5,9 @@ import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Line_File_Im 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( 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 index 4c6ffff..630f13f 100644 --- 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 @@ -5,6 +5,9 @@ import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speaker_File 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( 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 a44f9de..a137417 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,5 +1,7 @@ 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 accc14e..1da825a 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 @@ -10,6 +10,9 @@ 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; @@ -19,6 +22,8 @@ public class HtmlSpeech { String agendaTitle; // aus "agendaItems" Collection List content = new ArrayList<>(); NlpInfo nlp = null; + String video = null; + String videoData; public HtmlSpeech() { } @@ -27,7 +32,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<>()); @@ -51,13 +56,13 @@ public class HtmlSpeech { // 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)); @@ -74,7 +79,6 @@ public class HtmlSpeech { List topicsDocs = nlpDoc.get("topics", MongoDBHandler.DOC_LIST_CLASS); nlp.setTopics(Topic.readTopicsFromMongo(topicsDocs)); - // TODO: Video return nlp; } @@ -157,4 +161,20 @@ public class HtmlSpeech { .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 47828d7..aa624ef 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,7 +2,9 @@ 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 7b2e163..bf7c6e5 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,7 +8,9 @@ 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 index 6c8f570..f839880 100644 --- 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 @@ -2,6 +2,9 @@ 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; 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 911c1c1..026d476 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,6 +3,9 @@ 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 e988ed3..6be099a 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,6 +3,9 @@ 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 3a3bd44..5000097 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,6 +1,9 @@ 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 2b92247..cb4b5e9 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,6 +3,9 @@ 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 122b434..1b4f25b 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,6 +3,9 @@ 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 3839933..53e2e3c 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,6 +3,9 @@ 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 65bcbbf..f46ca5d 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,6 +4,9 @@ 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 de72e1d..ec8c713 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,7 +2,9 @@ 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 ad5ead6..159cf30 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,7 +2,9 @@ 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 dadd618..3d312e5 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 @@ -7,7 +7,10 @@ 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. String text; 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 de7ecd5..d98ae80 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,7 +4,9 @@ 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 6a75ce2..35e9162 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 @@ -4,7 +4,10 @@ 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... 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 213f58e..4cbbd37 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 7b8815b..28378de 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 @@ -8,7 +8,10 @@ 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; 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 09a5365..cc30960 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,7 +3,9 @@ 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; @@ -67,6 +69,7 @@ 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<>(); @@ -83,6 +86,7 @@ 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 e4cfff6..de18875 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 @@ -5,7 +5,10 @@ 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; 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 e33db12..259ab79 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,7 +3,9 @@ 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 d96dcf0..bd1d937 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,6 +3,7 @@ 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 40ab1ef..5c4f92a 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,12 +3,14 @@ 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; // 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 member; + LocalDate begin; + LocalDate end; 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 c281111..8fb08e3 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,7 +4,9 @@ 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; @@ -23,9 +25,6 @@ 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 b8532cd..6e64b3e 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,7 +2,9 @@ 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 3439a31..377c1aa 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,7 +4,9 @@ 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 1727e86..a7af3ec 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,7 +4,9 @@ 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 ff50e6c..76d5576 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,7 +3,9 @@ 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 1468786..735e7e0 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,16 +5,17 @@ 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; // TODO: nötig? + int speechId; int speakerId; String speakerName; String fraktion; - int sessionId; // TODO: nötig? + int sessionId; // aus "sessions" Collection LocalDateTime dateTime; 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 167ae99..4bdfcc4 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,7 +2,9 @@ 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 index 7180e6b..fb4ca6e 100644 --- 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 @@ -24,6 +24,10 @@ 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"; 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 index 64e766d..ef51dc8 100644 --- 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 @@ -19,6 +19,10 @@ 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 { 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 17e125b..467b1b5 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 @@ -48,9 +48,10 @@ 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 { @@ -68,6 +69,9 @@ public class NlpUtils { createSentimentInfo(); } + /** + * implementiert von Valentin + */ private static void duuiInit() { DUUILuaContext ctx; @@ -116,6 +120,7 @@ public class NlpUtils { } /** + * implementiert von Valentin * Initialization of a sample CAS document * @return JCas object */ @@ -143,7 +148,9 @@ public class NlpUtils { return pCas; } - + /** + * implementiert von Valentin + */ public static void runDockerDriver() { // reset existing pipeline-components @@ -188,7 +195,9 @@ 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 { @@ -242,6 +251,7 @@ public class NlpUtils { /** + * implementiert von Valentin * Execution of video processing via DUUI using the RemoteDriver * @throws Exception in case of an error */ @@ -315,6 +325,15 @@ 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() 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 89fee0d..d367238 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,7 +6,6 @@ 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; @@ -24,7 +23,12 @@ 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<>()); @@ -36,6 +40,13 @@ 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) { @@ -85,6 +96,13 @@ 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)) { @@ -181,11 +199,21 @@ 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 e1ac0de..c7ba4c0 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,29 +1,32 @@ package org.texttechnologylab.project.gruppe_05_1.rest; -import gnu.trove.impl.sync.TSynchronizedShortObjectMap; +import com.mongodb.client.MongoCollection; 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.html.ParlamentarierDetails; 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.util.PPRUtils; -import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech; +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 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; -import static org.texttechnologylab.project.gruppe_05_1.util.PPRUtils.listFractionsFromMembers; - +/** + * Controller für die Frontend‑Routen. + * Größtenteils implementiert von Jonas + */ public class FrontEndController { @OpenApi( summary = "Get the homepage.", @@ -39,6 +42,20 @@ 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! 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 8136ed6..0541218 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,6 +9,7 @@ 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 15eb37c..d9198b9 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,6 +15,7 @@ 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. 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 b2d3347..9571bf6 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,6 +15,9 @@ 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() { @@ -66,8 +69,14 @@ public class RESTHandler { 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("/about", FrontEndController::getAbout); + 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 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 deleted file mode 100644 index df4424c..0000000 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/RESTHandlerOld.java +++ /dev/null @@ -1,68 +0,0 @@ -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); - - // 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/SpeechController.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/SpeechController.java index c91a08e..290b154 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,7 +1,11 @@ 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; @@ -14,11 +18,13 @@ 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.stream.Collectors; public class SpeechController { /** + * Datei implementiert von Valentin * Liste alle Reden eines Parlamentariers an * @param ctx Javalin Context */ @@ -39,8 +45,7 @@ public class SpeechController { String parlamentarierId = ctx.pathParam("id"); ParlamentarierDetails p = MongoPprUtils.getParlamentarierDetailsByID(parlamentarierId); - List speechMetaDataList = MongoPprUtils.getSpeechesMetadataForSpeaker(parlamentarierId); - + List speechMetaDataList = MongoPprUtils.getSpeechesOverviewForSpeaker(Integer.parseInt(parlamentarierId)); Map attributes = new HashMap<>(); attributes.put("p", p); attributes.put("speechesMetaDataList", speechMetaDataList); @@ -50,6 +55,8 @@ 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", @@ -79,6 +86,24 @@ public class SpeechController { } 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(); + } + } + // Foto des Abgeordnetes String picture = MongoPprUtils.getParlamentarierPictureByID(parlamentarierId); attributes.put("picture", picture); @@ -105,7 +130,7 @@ public class SpeechController { Map posCounts = Token.countPOS(tokens); List posList = posCounts.entrySet().stream() - .map(entry -> new Token(entry.getKey(), String.valueOf(entry.getValue()), "")) // Lemma remains empty + .map(entry -> new Token(entry.getKey(), String.valueOf(entry.getValue()), "")) .collect(Collectors.toList()); Logger.debug("Sending POS List to NLP - " + posList); @@ -114,7 +139,7 @@ public class SpeechController { } else { Logger.debug("POS List is EMPTY"); - speech.getNlp().setPosList((List) new ArrayList()); // Ensure it's never null + speech.getNlp().setPosList((List) new ArrayList()); } // NLP: Named Entities @@ -151,10 +176,8 @@ public class SpeechController { attributes.put("na_info", 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 - // NLP: Sentiments - // Der erste Sentiment gilt der gesamten Rede. Die weitere Sentiments entsprechen die Sätze. + // 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); @@ -212,30 +235,25 @@ public class SpeechController { tags = {"Rede"}, queryParams = { @OpenApiParam(name = "filter", description = "Full-Text-Filter. Kann Vorname, Nachname oder Partei filtern", required = false), - // TODO: Topic Filter }, responses = { @OpenApiResponse(status = "200", content = {@OpenApiContent(from = Speech[].class)}) }) public static void listAllSpeeches(Context ctx) { - String filter = ctx.queryParam("filter"); - Logger.info("Filter: '" + filter + "'"); - - List speechOverviews = MongoPprUtils.getSpeechOverview(); + List speechOverviews = MongoPprUtils.getFilteredSpeechesOverview(ctx); Map attributes = new HashMap<>(); attributes.put("speechesMetaDataList", speechOverviews); - // Filtern nach Text - attributes.put("filter", filter == null || filter.isBlank() ? null : filter); + String name = ctx.queryParam("name"); + if ((name != null) && ( ! name.isBlank())) attributes.put("name", name); - // Filtern nach Partei/Fraktion attributes.put("parties", MongoPprUtils.getAllPartiesFromSpeeches()); - // Filtern nach Topics 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 index 2b61d76..81679f2 100644 --- 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 @@ -14,6 +14,10 @@ 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", 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 index e2324d0..b233929 100644 --- 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 @@ -16,6 +16,10 @@ 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", 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 b53da1a..e2684a1 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,6 +17,7 @@ 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 d67d198..871c6f7 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 796498b..da9dea8 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,6 +4,10 @@ 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 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 4198ec1..565bb83 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,6 +1,8 @@ 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; @@ -22,6 +24,7 @@ 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; @@ -41,6 +44,7 @@ public abstract class PPRUtils { /** + * Von Valentin angelegt, von allen verändert * Alle Informationen lesen... * - Parlamentarier * - Reden @@ -61,21 +65,16 @@ public abstract class PPRUtils { Logger.warn("Members already in the DB. Skipping..."); } - // Reden und Kommentare einlesen und persistieren - TODO + // Reden und Kommentare einlesen und persistieren readSpeechesAndComments(xmlFactory, mongoFactory); - // Fotos hochladen - TODO + // Fotos hochladen 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 - TODO + * Fotos hochladen * @param mongoFactory Factory für die MongoDB-Objekte */ public static void readPhotos(MongoObjectFactory mongoFactory) { @@ -83,7 +82,7 @@ public abstract class PPRUtils { } /** - * Reden und Kommentare einlesen - TODO + * Reden und Kommentare einlesen * @param xmlFactory Factory für die XML-Objekte * @param mongoFactory Factory für die MongoDB-Objekte */ @@ -99,7 +98,6 @@ 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"); @@ -114,12 +112,9 @@ 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) @@ -156,7 +151,7 @@ public abstract class PPRUtils { zipInputStream.closeEntry(); } - if (xmlOutputStream.size() == 0 || dtdOutputStream.size() == 0) { // TODO + if (xmlOutputStream.size() == 0 || dtdOutputStream.size() == 0) { // throw new FileNotFoundException("XML or DTD not found in the ZIP archive"); } InputStream xmlInputStreamFinal = new ByteArrayInputStream(xmlOutputStream.toByteArray()); @@ -171,7 +166,6 @@ public abstract class PPRUtils { return doc; } catch (IOException e) { - // TODO throw new RuntimeException(e); } } @@ -209,8 +203,6 @@ 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 @@ -327,7 +319,19 @@ 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; @@ -411,6 +415,12 @@ 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(); @@ -425,6 +435,24 @@ 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; @@ -485,6 +513,12 @@ 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) { @@ -500,4 +534,105 @@ public abstract class PPRUtils { } 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 6663d9a..02a93e8 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,7 +3,9 @@ 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 new file mode 100644 index 0000000..82a184a --- /dev/null +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/util/SpeechVideoUpdater.java @@ -0,0 +1,153 @@ +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 b489ec8..c118274 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,6 +16,9 @@ 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 { @@ -43,7 +46,6 @@ 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 1b88fcf..079dc64 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,7 +5,9 @@ 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 5696833..dbb53a0 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,7 +1,9 @@ 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 d6cb1fb..f034bef 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,7 +5,9 @@ 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 5408a11..73edb5f 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,7 +5,9 @@ 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 b60f4b8..7a5c2f1 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,7 +8,9 @@ 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 4771106..c3d437a 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,7 +5,9 @@ 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 a22adac..94c3076 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,7 +9,9 @@ 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 0cd6249..ea1807f 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,7 +9,9 @@ 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 468888c..43e2c2a 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,7 +11,9 @@ 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) { @@ -32,7 +34,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); // TODO + MdbName newestMdbName = mdbNameList.get(0); 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 4a824b1..8a9c0d0 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Comment_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Comment_File_Impl.java @@ -45,11 +45,25 @@ public class Comment_File_Impl implements Content, Comment { return MongoDBEntryType.SPEECH_COMMENT; } + /** + * Gibt den Kommentar als LaTeX-kompatiblen String zurück. + * Der Kommentar wird farbig dargestellt (blau) mit dem Label "Kommentar". + * + * @return String im LaTeX-Format für den Kommentar + */ @Override public String toTeX() { return "\\textcolor{blue}{Kommentar}: " + this.getComment() + "\\\n"; } + /** + * Wandelt den Kommentar in ein XML-Element um. + * Das erzeugte Element enthält die contentId, speechId, den Namen des Kommentators + * sowie den eigentlichen Kommentartext als Inhalt. + * + * @param doc Das XML-Dokument, in das das Element eingebettet wird + * @return Ein XML-Element, das den Kommentar repräsentiert + */ @Override public Element toXML(Document doc) { Element comment = doc.createElement("comment"); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Constituency_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Constituency_File_Impl.java index 57e7d18..6829ed3 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Constituency_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Constituency_File_Impl.java @@ -35,6 +35,13 @@ public class Constituency_File_Impl implements Constituency { return MongoDBEntryType.CONSTIUENCY; } + + /** + * Gibt eine HTML-Darstellung des Wahlkreises zurück. + * Die HTML-Ausgabe enthält die ID, den Namen und das Bundesland des Wahlkreises. + * + * @return HTML-String mit den Details des Wahlkreises + */ @Override public String toHTML() { return "
" diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Fraction_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Fraction_File_Impl.java index 804bdbf..7375300 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Fraction_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Fraction_File_Impl.java @@ -47,6 +47,12 @@ public class Fraction_File_Impl implements Fraction { this.name = name; } + /** + * Gibt eine HTML-Darstellung der Fraktion zurück. + * Die HTML-Ausgabe enthält den Namen sowie den Langnamen der Fraktion. + * + * @return HTML-String mit den Details der Fraktion + */ @Override public String toHTML() { return "
" diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/LegislativePeriod_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/LegislativePeriod_File_Impl.java index 920b245..c7b0a7f 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/LegislativePeriod_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/LegislativePeriod_File_Impl.java @@ -42,6 +42,12 @@ public class LegislativePeriod_File_Impl implements LegislativePeriod { return MongoDBEntryType.LEGISLATIVE_PERIOD; } + /** + * Gibt eine HTML-Darstellung der aktuellen Legislaturperiode zurück. + * Die HTML-Ausgabe enthält Informationen wie ID, Start- und Enddatum sowie den Wahlkreis. + * + * @return HTML-String mit den Details der Legislaturperiode + */ @Override public String toHTML() { return "
" diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Line_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Line_File_Impl.java index 72149fc..feec9d2 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Line_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Line_File_Impl.java @@ -37,11 +37,25 @@ public class Line_File_Impl implements Content, Line { return MongoDBEntryType.SPEECH_LINE; } + /** + * Konvertiert die aktuelle Zeile (Line) in LaTeX-Format. + * Jede Zeile endet mit einem Zeilenumbruch (`\\`), wie es in LaTeX üblich ist. + * + * @return Ein String im LaTeX-Format + */ @Override public String toTeX() { return this.getContent() + "\\\n"; } + /** + * Wandelt die Zeile (Line) in ein XML-Element um. + * Dabei werden `contentId` und `speechId` als Attribute gesetzt, + * der eigentliche Inhalt wird als Text eingefügt. + * + * @param doc Das übergeordnete XML-Dokument + * @return Ein XML-Element vom Typ + */ @Override public Element toXML(Document doc) { Element line = doc.createElement("line"); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/MemberOfParliament_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/MemberOfParliament_File_Impl.java index 3ac9f77..df43d0a 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/MemberOfParliament_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/MemberOfParliament_File_Impl.java @@ -70,6 +70,12 @@ public class MemberOfParliament_File_Impl extends Individual_File_Impl implement return MongoDBEntryType.MEMBER_OF_PARLIAMENT; } + /** + * Erzeugt eine HTML-Repräsentation eines Abgeordneten mit Basisinformationen, + * Foto und Daten zu den legislativen Perioden. + * + * @return HTML-String zur Darstellung des Abgeordneten + */ @Override public String toHTML() { StringBuilder html = new StringBuilder(); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Session_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Session_File_Impl.java index 8a69053..526d4cc 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Session_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Session_File_Impl.java @@ -57,6 +57,12 @@ public class Session_File_Impl implements Session { this.agendaItems.add(item); } + /** + * Gibt die Session-Informationen als HTML-String zurück. + * Enthält Angaben zur ID, zur Legislaturperiode sowie Start- und Endzeitpunkt der Sitzung. + * + * @return HTML-Darstellung der Sitzung als String + */ @Override public String toHTML() { return "
" diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speaker_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speaker_File_Impl.java index 8959244..d060e17 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speaker_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speaker_File_Impl.java @@ -52,11 +52,24 @@ public class Speaker_File_Impl implements Content, Speaker { return MongoDBEntryType.SPEECH_SPEAKER; } + /** + * Gibt die Sprecherdaten als TeX-String zurück. + * Der Name des Redners bzw. der Rednerin wird farblich hervorgehoben. + * + * @return TeX-Darstellung des Redners/der Rednerin + */ @Override public String toTeX() { return "\\textcolor{blue}{Redner/Rednerin}: " + this.getSpeakerName() + "\\\n"; } + /** + * Erstellt ein XML-Element mit Informationen zum Redner/zur Rednerin. + * Enthält ID, Name, Fraktion und zugehörige Redeinformationen. + * + * @param doc Das übergeordnete XML-Dokument + * @return XML-Element für den Redner/die Rednerin + */ @Override public Element toXML(Document doc) { Element speaker = doc.createElement("speaker"); diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speech_File_Impl.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speech_File_Impl.java index aa62491..3031055 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speech_File_Impl.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/xml/speeches/Impls/Speech_File_Impl.java @@ -83,6 +83,14 @@ public class Speech_File_Impl implements Speech { //Logger.pink("Added paragraph to speech: " + paragraph); } + /** + * Gibt die Rede als HTML-Darstellung zurück. + * Die HTML-Ausgabe enthält Informationen zur Sitzung, zum Redner und zur Fraktion. + *

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

About

+

Über

+

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

+
+
+

PPR WS24/25 - Gruppe_05_1

<#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 new file mode 100644 index 0000000..c9fcacd --- /dev/null +++ b/src/main/resources/templates/charts.ftl @@ -0,0 +1,52 @@ + + + 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/filterFormForSpeeches.ftl b/src/main/resources/templates/filterFormForSpeeches.ftl new file mode 100644 index 0000000..d576cec --- /dev/null +++ b/src/main/resources/templates/filterFormForSpeeches.ftl @@ -0,0 +1,28 @@ +
+
+ + + + <#if parties??> + + + + <#if topics??> + + + + +
+
diff --git a/src/main/resources/templates/header.ftl b/src/main/resources/templates/header.ftl index dabcc1e..8d7294b 100644 --- a/src/main/resources/templates/header.ftl +++ b/src/main/resources/templates/header.ftl @@ -12,6 +12,8 @@
Reden
+ Charts +
Exportieren
Über diff --git a/src/main/resources/templates/posBarChart.ftl b/src/main/resources/templates/posBarChart.ftl index 4f0fb8f..c6be459 100644 --- a/src/main/resources/templates/posBarChart.ftl +++ b/src/main/resources/templates/posBarChart.ftl @@ -15,7 +15,7 @@ posData.push({ pos: "No Data", count: 0 }); - console.log("Final POS Data being used:", posData); + console.log("POS Data:", posData); var svg = d3.select("#posBarchart") .attr("width", barChartWidth) diff --git a/src/main/resources/templates/sentimentsRadarChart.ftl b/src/main/resources/templates/sentimentsRadarChart.ftl index db70cba..be8b0f9 100644 --- a/src/main/resources/templates/sentimentsRadarChart.ftl +++ b/src/main/resources/templates/sentimentsRadarChart.ftl @@ -1,4 +1,5 @@ + + + + + + + + + + diff --git a/src/main/resources/templates/showAllSpeechesList.ftl b/src/main/resources/templates/showAllSpeechesList.ftl index e5e811e..78b9662 100644 --- a/src/main/resources/templates/showAllSpeechesList.ftl +++ b/src/main/resources/templates/showAllSpeechesList.ftl @@ -13,7 +13,7 @@
<#assign formAction = "/reden"> - <#include "filterForm.ftl"> + <#include "filterFormForSpeeches.ftl">

diff --git a/src/main/resources/templates/showSpeechesList.ftl b/src/main/resources/templates/showSpeechesList.ftl index 84fc93a..15031ed 100644 --- a/src/main/resources/templates/showSpeechesList.ftl +++ b/src/main/resources/templates/showSpeechesList.ftl @@ -32,7 +32,7 @@ <#list speechesMetaDataList as redeMd> ${redeMd.dateTimeString} - ${redeMd.agendaTitle} + ${redeMd.agendaTitel} diff --git a/src/main/resources/templates/speech.ftl b/src/main/resources/templates/speech.ftl index f267c03..6fa384e 100644 --- a/src/main/resources/templates/speech.ftl +++ b/src/main/resources/templates/speech.ftl @@ -57,7 +57,6 @@ -

@@ -76,6 +75,18 @@ <#include "speechContent.ftl"> + <#-- Video einbinden, falls videoData vorhanden ist --> + <#if s.videoData?? && (s.videoData?trim != "")> +
+ +
+ <#else> +

Kein Video vorhanden.

+ +

<#if s.nlp??>

NLP Information

diff --git a/src/main/resources/templates/topicsBubbleChart.ftl b/src/main/resources/templates/topicsBubbleChart.ftl index 7eb2885..378596c 100644 --- a/src/main/resources/templates/topicsBubbleChart.ftl +++ b/src/main/resources/templates/topicsBubbleChart.ftl @@ -8,6 +8,8 @@ ]; + console.log("Topics Data:", topicsData); + const topics_bc_width = 1000; const topics_bc_height = 800;