Commit d6e4e6f3 by Kai Westerkamp

Update chapter3.tex 3

parent c9d026a7
...@@ -6,7 +6,7 @@ Ein Ziel dieser Arbeit ist es die Verbindung des CSDAdapter zu verbessern und wi ...@@ -6,7 +6,7 @@ Ein Ziel dieser Arbeit ist es die Verbindung des CSDAdapter zu verbessern und wi
Außerdem soll der SBA auch an die CSD angebunden werden. Außerdem soll der SBA auch an die CSD angebunden werden.
Aktuell muss der Bidlasuwerter jedes Bild einzeln Dateisystem laden, was ineffizient und langwierig ist. Aktuell muss der Bidlasuwerter jedes Bild einzeln Dateisystem laden, was ineffizient und langwierig ist.
Der Bildauswerter soll die Daten direkt aus der CSD laden können und seine ausgewerteten Ergebnisse dort abspeichern. Der Bildauswerter soll die Daten direkt aus der CSD laden können und seine ausgewerteten Ergebnisse dort abspeichern.
Eine weiter Anforderung an den SBA ist das dieser auch ohne die Verbindung zur Middleware bzw. dem Backend funktionieren soll. % Zur Verbesserung der Robustheit. Eine weitere Anforderung an den SBA ist das dieser auch ohne die Verbindung zur Middleware bzw. dem Backend funktionieren soll.
\section{Übersicht über die bestehende Struktur} \section{Übersicht über die bestehende Struktur}
Der Bildauswerteplatz der Zukunft besteht aus mehren Komponenten (siehe Abbildung \ref{figure:backend}). Der Bildauswerteplatz der Zukunft besteht aus mehren Komponenten (siehe Abbildung \ref{figure:backend}).
...@@ -83,7 +83,7 @@ Die Eingaben des Nutzers müssen in eine CSD-Query umgewandelt und die Verbindun ...@@ -83,7 +83,7 @@ Die Eingaben des Nutzers müssen in eine CSD-Query umgewandelt und die Verbindun
Der Geoviewer sendet die Task zur Verarbeitung an den CSD-Adapter. Der Geoviewer sendet die Task zur Verarbeitung an den CSD-Adapter.
Der SBA verarbeitet den Task direkt. Der SBA verarbeitet den Task direkt.
Bei beiden Zugriffen auf die CSD wird zunächst der Task gestartet und anschließend mit dem CSDReadingClient der Isaac.lib auf den Server zugegriffen. % Warum sprichst du von 2 Zugriffen? Bei beiden Programmen wird zunächst der Task gestartet und anschließend mit dem CSDReadingClient der Isaac.lib auf den Server zugegriffen.
In den Abbildungen \ref{figure:strukturViewer} und \ref{figure:strukturSBA} ist dieser Teil grün markiert. In den Abbildungen \ref{figure:strukturViewer} und \ref{figure:strukturSBA} ist dieser Teil grün markiert.
Die Verarbeitung eines Tasks und der Zugriff auf den CSD-Server ist in beiden Komponenten ähnlich und wurde deshalb in die CSDCommons-Bibliothek ausgelagert. Die Verarbeitung eines Tasks und der Zugriff auf den CSD-Server ist in beiden Komponenten ähnlich und wurde deshalb in die CSDCommons-Bibliothek ausgelagert.
...@@ -153,7 +153,7 @@ Zur Benutzung wurden Buttons zur schnellen Datumsauswahl und zum Generieren von ...@@ -153,7 +153,7 @@ Zur Benutzung wurden Buttons zur schnellen Datumsauswahl und zum Generieren von
Nachdem der Nutzer alle Informationen eingetragen hat, beginnt der eigentliche Schreibvorgang. Nachdem der Nutzer alle Informationen eingetragen hat, beginnt der eigentliche Schreibvorgang.
Zunächst wird das Bild gerendert und mit Hilfe des NSIF-Creators in ein NSIF-Bild umgewandelt. Zunächst wird das Bild gerendert und mit Hilfe des NSIF-Creators in ein NSIF-Bild umgewandelt.
Das Metadaten-XML-File wird mit Hilfe des CSD-Writing Cleints der Isaac.lib an die CSD gesendet. Das Metadaten-XML-File wird mit Hilfe des CSD-Writing Cleints der Isaac.lib an die CSD gesendet.
Das Bild wird in einem HTTP Server der der Isaac.lib zur Verfügung gestellt, sodass CSD Server das Bild herunterladen kann. % gehört der HTTP Server zur isaac.lib? Das ``der Isaac.lib'' kann man auf 2 Arten lesen (Genetiv ODER Dativ-Objekt zum Verb ``zur Verfügung stellen'' Das Bild wird in einem HTTP Server, der in der Isaac.lib enthalten ist, zur Verfügung gestellt, sodass CSD Server das Bild herunterladen kann.
\begin{figure} \begin{figure}
\centering \centering
......
...@@ -2,20 +2,24 @@ ...@@ -2,20 +2,24 @@
\label{chapter:implemetation} \label{chapter:implemetation}
\section{Laden von Daten} \section{Laden von Daten}
\todo{Einleitung}
\subsection{CSD-Task erstellen} \subsection{CSD-Task erstellen}
Die Request UI des CSDPlugin soll wiederverwendbar werden.
Um eine wiederverwendbare Oberfläche einzubinden, wird eine Schnittstelle angelegt (siehe Abbildung \ref{figure:klassenRequest}). Hierfür wurde eine Schnittstelle gemeinsame Schnittstelle angelegt (siehe Abbildung \ref{figure:klassenRequest}).
Die Schnittstelle wird aufgerufen, sobald der Nutzer einen Task absendet und bei der Auswahl einer Region. Diese Schnittstelle wird aufgerufen, sobald der Nutzer einen Task absendet und bei der Auswahl einer Region.
Das CSD-Plugin des Geoviewers implementiert diese Schnittstelle. Das CSD Plugin des Geoviewers implementiert diese Schnittstelle.
Region-Anfragen werden direkt bearbeitet und der Task Request wird an den CSD-Adapter gesendet. Region Anfragen werden direkt bearbeitet und der Task Request wird an den CSD-Adapter gesendet.
Im SBA wird das Interface der CSDRequestAction implementiert. Im SBA wird das Interface der CSDRequestAction implementiert.
Der Aufruf der Region wird falls möglich über einen DirectRequest an das CSD-Plugin weitergeleitet. Der Aufruf der Region wird falls möglich an das CSD-Plugin weitergeleitet.
Die Antwort darauf erhält der SBA erneut über einen DirectRequest. % Warum ``erneut''? Die Middleware verfügt neben Nachrichten und Anfragen an das Backend über DirectRequests zwischen den an die Middleware angeschlossenen Komponenten.
Eine DirectMessage ist im System der Middleware nicht vorhanden. Jede verbundene Komponente verfügt über eine eindeutige ID.
Deshalb werden an dieser Stelle ersatzweise Requests verwendet. Durch diese ID erfolgt die Zuordnung des DirectRequests die am Empfänger verarbeitet und mit einer DirectResponse beantwortet wird.
Ein einziger Request genügt für diese Aufgabe nicht, da nicht bekannt ist, wie lange der Nutzer zum Einzeichnen benötigt. Der SBA nutzt diese DirectRequests um eine Region auf dem Geoviewer auswählen zu lassen.
Nutzt man lediglich einen DirectRequest, so müsste die Antwort der Plugins innerhalb des Timeouts von 5 Sekunden erfolgen, was nicht gewährleistet werden kann. Das Problem hierbei ist, dass der Nutzer beliebig lange zum einzeichnen brauchen kann und die Antwort eines DirectRequest innerhalb des Timeouts erfolgen muss.
Deshalb antwortet der Geoviewer sofort auf den Request und lässt den Nutzer Einzeichnungen vornehmen.
Ist die Regionsauswahl abgeschlossen sendet der Geoviewer einen DirectRequest an den SBA um das Ergebnis der Auswahl zu übermitteln.
Im Sequenzdiagramm \ref{figure:klassenRequest} sind beide Abläufe dargestellt.
\begin{figure} \begin{figure}
\centering \centering
...@@ -26,34 +30,46 @@ So kann der RequestDialog wiederverwendet werden.} ...@@ -26,34 +30,46 @@ So kann der RequestDialog wiederverwendet werden.}
\label{figure:klassenRequest} \label{figure:klassenRequest}
\end{figure} \end{figure}
\begin{figure}
\centering
\includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{../UML/Sequenz RequestUI.png}
\caption{Das Erstellen eines CSD Tasks als Sequenz Diagramm.
Links der Ablauf im CSDPlugin des Geoviewer, Rechts im SBA.
Der Alt Block steht nur zur Verfügung wenn der SBA mit dem Geoviewer verbunden ist. }
\label{figure:sequenzRequest}
\end{figure}
\subsection{Task ausführen} \subsection{Task ausführen}
Die Isaac.lib unterstützt 2 Arten von Anfragen an die CSD. Die Isaac.lib unterstützt 2 Arten von Anfragen an die CSD.
Ein CSD-Request ist eine einmalige Abfrage des Servers, die alle Treffer an einen im Request definierten ResultHandler übergibt und sich dann beendet. Ein CSD-Request ist eine einmalige Abfrage des Servers, die alle Treffer an einen im Request definierten ResultHandler übergibt und sich dann beendet.
Eine Subskription liefert auch nach dem Abfragezeitpunkt Ergebnisse. Eine Subskription liefert auch nach dem Abfragezeitpunkt Ergebnisse.
Wird zum Beispiel ein neuer Datensatz hinzugefügt, der auf die Abfrage passt, so wird dieser auch an den ResultHandler übergeben. Wird zum Beispiel ein neuer Datensatz hinzugefügt, der auf die Abfrage passt, so wird dieser auch an den ResultHandler übergeben.
Beide Abfragen unterscheiden sich bei der Erstellung nur durch die eigentlichen Abfrage. % Was bedeutet das? ``Die ABFRAGEN unterscheiden sich NUR durch die ABFRAGE'' Bitte den geringen Unterschied klarer darstellen. Die Verarbeitung der unterschiedlichen Abfragen unterscheidet sich nur in dem Aufruf des CSDReadingClients.
Deshalb wurde die abstrakte Klasse CSDTask angelegt (siehe Abbildung \ref{figure:klassenTask}). Deshalb wurde die abstrakte Klasse CSDTask angelegt (siehe Abbildung \ref{figure:klassenTask}).
Die Methode startRequest startet die Abfrage in einen neuen Thread. Die Methode startRequest startet die Abfrage in einen neuen Thread.
Zuerst wird die abstrakte Methode beforeTask aufgerufen, um Vorbereitungen zu treffen, zum Beispiel Ergebnisse von einem alten Task zu löschen. Zuerst wird die abstrakte Methode beforeTask aufgerufen, um Vorbereitungen zu treffen, zum Beispiel Ergebnisse von einem alten Task zu löschen.
Die Ausführung der CSD-Abfrage erfolgt in 3 Schritten. Die Ausführung der CSD-Abfrage erfolgt in 3 Schritten.
Erst wird der CSD Querry String generiert. Erst wird der CSD Querry String generiert. \todo{Beispiel}
Anschließend folgt eine Abfrage über die Anzahl der erwarteten Ergebnisse. Anschließend folgt eine Abfrage über die Anzahl der erwarteten Ergebnisse.
Die Methode isValidTaskSize überprüft nun, ob der Task ausgeführt werden soll oder ob das Ergebnis zu lange brauchen würde. Die Methode isValidTaskSize überprüft nun, ob der Task ausgeführt werden soll oder ob das Ergebnis zu groß und somit nicht sinnvoll ist.
Die Standard-Implementierung vergleicht die erwarteten Ergebnisse mit einem Wert aus der Konfigurationsdatei. Die Standard-Implementierung vergleicht die erwarteten Ergebnisse mit einem Wert aus der Konfigurationsdatei.
Ist der Task ``klein genug'', wird die abstrakte Methode queryCSD aufgerufen. Ist der Task ``klein genug'', wird die abstrakte Methode queryCSD aufgerufen.
Die Methode wird implementiert von den beiden Klassen CSDRequst und CSDSubscription, die vom CSDTask erben. Die Methode wird implementiert von den beiden Klassen CSDRequst und CSDSubscription, die vom CSDTask erben.
In dieser Methode wird die Verbindung zur CSD aufgebaut und durchsucht. In dieser Methode wird die Verbindung zur CSD aufgebaut und durchsucht.
Die Ergebnisse der Abfrage werden alle an den übergebenden Result Handler weitergeleitet. Die Ergebnisse der Abfrage werden alle an den übergebenden Result Handler weitergeleitet.
Um in Präsentationen Fehler zu vermeiden, wurde die Möglichkeit eines lokalen Request aus dem CSD-Adapter übernommen. % Du meinst wahrscheinlich Präsentationen = Demonstrationen beim Kunden, wo keine Verbindung zum Backend besteht. Ich habe zuerst an die Präsentationsschicht im GUI gedacht. Sollten wir vielleicht klarer schreiben. Um in Demonstrationen beim Kunden Fehler zu vermeiden, wurde die Möglichkeit eines lokalen Request aus dem CSD-Adapter übernommen.
Dieser lokale Request lässt sich im Konfigurationsfile aktivieren und führt dazu, dass die Ergebnisse aus einer Datei geladen und direkt an den ResultHandler übergeben werden. Dieser lokale Request lässt sich im Konfigurationsdatei aktivieren und führt dazu, dass die Ergebnisse aus einer Datei geladen und direkt an den ResultHandler übergeben werden.
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{../UML/Klassen CSDTask.png} \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{../UML/Klassen CSDTask.png}
\caption{Vererbungs-Hierachie des CSDTasks. Die Ausführung des Task wird in der Superklasse gestartet. Die Funktionalität ist in den eigentlichen Klassen implementiert.} \caption{Vererbungs-Hierachie des CSDTasks. Die Ausführung des Task wird in der Superklasse gestartet.
% Ist die Formuilierung ``die eigentlichen Klassen'' gut? Wie wäre: in den ``spezialisierten Klassen''? Der Aufruf der CSDReadingClienst übernehmen Der CSDRequest und die CSDSubscription.
Der SBA Request und der Adapter Request implementieren die Vor- und Nachbereitung des Tasks sowie das Userfeedback über den Fortschritt in den jeweiligen Programmen.
}
\label{figure:klassenTask} \label{figure:klassenTask}
\end{figure} \end{figure}
...@@ -62,14 +78,16 @@ Dieser lokale Request lässt sich im Konfigurationsfile aktivieren und führt da ...@@ -62,14 +78,16 @@ Dieser lokale Request lässt sich im Konfigurationsfile aktivieren und führt da
Die Ergebnisse aus einer CSD-Abfrage werden als Liste aus XML-Dokumenten an die Methode newResults(List<Documents>) übergeben. Die Ergebnisse aus einer CSD-Abfrage werden als Liste aus XML-Dokumenten an die Methode newResults(List<Documents>) übergeben.
Diese ist ein Teil des Interfaces isaac.lib ResultHandler. Diese ist ein Teil des Interfaces isaac.lib ResultHandler.
Für den SBA und den CSD-Adapter müssen zunächst einige allgemeine Informationen aus dem XML-Dokument ausgelesen werden. Für den SBA und den CSD-Adapter müssen zunächst einige allgemeine Informationen aus dem XML-Dokument ausgelesen werden.
Deshalb wurde die abstrakte Klasse ResultHandler in der CSDCommon-Bibliothek angelegt (siehe Abbildung \ref{figure:klassenResult}. Deshalb wurde die abstrakte Klasse ResultHandler in der CSDCommon-Bibliothek angelegt (siehe Abbildung \ref{figure:klassenResult}).
Für jedes neue Ergebnis werden zunächst alle allgemeinen Felder ausgelesen und anschließend die Methode newResult aufgerufen, um das Ergebnis genau zu verarbeiten. %Was meinst du mit ``genau verarbeiten''? Für jedes neue Ergebnis werden zunächst alle allgemeinen Felder ausgelesen und anschließend die abstrakte Methode newResult aufgerufen.
Außerdem wird jeder Fehler abgefangen, der bei der Auswertung passieren könnte. % ``jeder Fehler wird abgefangen''. Bist du sicher das du ALLE Fehler abfängst? Wenn nicht, würde ich schreiben ``Außerdem werden Fehler abgefangen'' Diese Methode wird von den spezifischen ResultHandlern implementiert um ein Ergebnis zu verarbeiten.
Bricht die Verarbeitung eines Ergebnisses ab, so wird die Methode storeErrorProduct aufgerufen. Außerdem werden alle Java Exceptions abgefangen, der bei der Auswertung eines Ergebnisses geworfen werden.
In der Standard-Implementierung wird das XML-Dokument in einem Ordner abgelegt. Bricht die Verarbeitung eines Ergebnisses mit einer Exception ab, so wird die Methode storeErrorProduct aufgerufen.
In der Standard-Implementierung wird das XML Dokument dessen Verarbeitung fehlgeschlagen ist, in einem Ordner abgelegt.
Der Nutzer kann diese XML Dokument manuell einsehen und sich nötige Daten selber auslesen, falls die Verarbeitung fehlschlägt.
Ist ein Ergebnis verarbeitet, wird im zugehörigen Task die Methode resultFinished aufgerufen. Ist ein Ergebnis verarbeitet, wird im zugehörigen Task die Methode resultFinished aufgerufen.
So kann der Task, nachdem alle Ergebnis ausgewertet sind, die Methode afterTask aufrufen, um einen eventuelle Nachbearbeitung durchzuführen. So kann der Task, nachdem alle Ergebnis ausgewertet sind, die Methode afterTask aufrufen, um einen eventuelle Nachbearbeitung durchzuführen (Abbildung \ref{figure:klassenTask}).
\begin{figure} \begin{figure}
\centering \centering
...@@ -80,17 +98,17 @@ So kann der Task, nachdem alle Ergebnis ausgewertet sind, die Methode afterTask ...@@ -80,17 +98,17 @@ So kann der Task, nachdem alle Ergebnis ausgewertet sind, die Methode afterTask
\subsection{CSD-Adapter} \subsection{CSD-Adapter}
Im CSD-Adapter wird ein CSDRequest genutzt. Im CSD-Adapter wird ein CSDRequest genutzt.
Die Methoden beforeTask wird verwendet, um alte Daten zu löschen. In beforeTask und resultFinished werden Nachrichten an den Goeviewer gesendet, um ein visuelles Feedback an den Nutzer zu geben, wie weit die Bearbeitung des Tasks vorangeschritten ist.
Außerdem wird, wie auch in beforeTask und resultFinished, eine Nachricht an den Goeviewer gesendet, um ein visuelles Feedback an den Nutzer zu geben, wie weit die Bearbeitung des Tasks vorangeschritten ist. \todo{Bild}
Zur Kommunikation implementiert der CSD-Adapter einen ConnectionServer und der Geoviwer einen ConnectionManager aus den MiddlewareTools. Zur Kommunikation implementiert der CSD-Adapter einen ConnectionServer und der Geoviwer einen ConnectionManager aus den MiddlewareTools.
Das heißt, die Kommunikation über neue Tasks und den Fortschritt läuft nicht über das Backend, sondern direkt zwischen den Programmen. Das heißt, die Kommunikation über neue Tasks und den Fortschritt läuft nicht über das Backend, sondern direkt zwischen den Programmen.
Die erstellten Datenobjekte werden über die % hier fehlt ein wichtiges Wort Die erstellten Datenobjekte werden an das Backend gesendet, sodass diese im System sind und alle angeschlossenen Programme die Daten darstellen können.
an das Backend gesendet, sodass diese im System sind und alle angeschlossenen Programme die Daten darstellen können.
Die Verarbeitung der Ergebnisse im ResultHandler wird zunächst aufgeteilt. Die Verarbeitung der Ergebnisse im ResultHandler wird zunächst aufgeteilt.
Der MainResultHandler erhält alle Ergebnisse und gibt diese an einen auf den jeweiligen Datentyp spezialisierten ResultHandler weiter. Der MainResultHandler erhält alle Ergebnisse und gibt diese an einen auf den jeweiligen Datentyp spezialisierten ResultHandler weiter.
Sowohl der MainResultHandler als auch die spezifischen Handler erben von der allgemeinen Implementierung in der CSDCommons Bibliothek. Im MainResultHandler wird die Methode newResults überschrieben, um die Ergebnisse weiterzureichen. Sowohl der MainResultHandler als auch die spezifischen Handler erben von der allgemeinen Implementierung in der CSDCommons Bibliothek.
Im MainResultHandler wird die Methode newResults überschrieben, um die Ergebnisse weiterzureichen.
\subsection{SBA} \subsection{SBA}
Im SBA ist die Auswahl-Oberfläche auf Bilder eingeschränkt. Im SBA ist die Auswahl-Oberfläche auf Bilder eingeschränkt.
...@@ -99,16 +117,21 @@ Bei der Verarbeitung der Bilder werden alle wichtigen Informationen in einem CSD ...@@ -99,16 +117,21 @@ Bei der Verarbeitung der Bilder werden alle wichtigen Informationen in einem CSD
Falls ein Vorschaubild vorhanden ist, wird dieses heruntergeladen. Falls ein Vorschaubild vorhanden ist, wird dieses heruntergeladen.
Auch Vorschaubilder liegen in der CSD als NSIF-Bilder vor und werden deshalb in PNG-Bilder umgewandelt. Auch Vorschaubilder liegen in der CSD als NSIF-Bilder vor und werden deshalb in PNG-Bilder umgewandelt.
Alle Ergebnisse werden dem CSDDataStore hinzugefügt und der Nutzer kann sich in der ResultUI ein Bild aussuchen. Alle Ergebnisse werden dem CSDDataStore hinzugefügt und der Nutzer kann sich in der ResultUI ein Bild aussuchen.
Sobald der Nutzer ein Bild aus der Datenbank öffnen möchte, wird dieses heruntergeladen und aus dem NSIF-Format in den SBA importiert. Sobald der Nutzer ein Bild aus der CSD laden möchte, wird dieses heruntergeladen und aus dem NSIF-Format in den SBA importiert.
Um das Bil0 zu importieren wird es zunächst in ein PNG umgewandelt.
\section{Ausgewertete Daten speichern} \section{Bilder exportieren}
Das Exportieren von Daten war im SBA im Allgemeinen vorhanden. %Im Allgemeinen - im Speziellen nicht? Ich verstehe nicht, warum du die Formulierung ``im Allgemeinen'' verwendest. Das Exportieren von Daten auf das Dateisystem war im SBA im vorhanden.
Die ExportAction fragt den Nutzer nach einem Speicherort und rendert das Bild. Wie alle Funktionen im SBA wurde auch das Exportieren in einer Swing Action implementiert, die an mehre Nutzereingaben wie Buttons verknüpft werden kann.
Diese ExportAction fragt den Nutzer nach einem Speicherort, rendert das Bild und legt es als Datei an den vom Nutzer ausgewählten Ort.
\subsection{Export in \rec} \subsection{Export in \rec}
Um den Export in den \rec zu gestalten, wurde das Rendern der ExportAction umgebaut, so dass es wiederverwendbar ist. Um den Export in den \rec zu gestalten, wurde das Rendern der ExportAction umgebaut, so dass es wiederverwendbar ist.
Die ExportAction in \rec überschreibt die Standard-Export-Action. Die ExportAction in \rec erbt von der Standart ExportAciton, sodass die Hauptfunktionalität, das Rendern übernommen wird.
Die Auswahl des Nutzers wurde ersetzt durch einen Ordnerpfad, der aus der Konfigurationsdatei gelesen werden kann. % ... weil hier keine Benutzerinteraktion möglich ist? Ist mir nicht ganz klar. Um das Bild dem \rec zur verfügung zu stellen muss dieses in einem vordefinierten Ordner abgelegt werden.
Dieser Ordnerpfad wird aus der Konfigurationsdatei gelesen.
Der Nutzer muss also nicht jedes mal manuell den Pfad heraussuchen, sondern das Bild wird direkt an den richtigen Ort gelegt.
\subsection{Export in CSD} \subsection{Export in CSD}
Der Export in die CSD erbt auch von der ExportAction. Der Export in die CSD erbt auch von der ExportAction.
...@@ -117,28 +140,35 @@ Die Informationen werden auf Richtigkeit und Notwendigkeit überprüft. ...@@ -117,28 +140,35 @@ Die Informationen werden auf Richtigkeit und Notwendigkeit überprüft.
Wurde das editierte Bild aus der CSD geladen, so wird die Oberfläche mit den Informationen aus dem geladenen XML-File ausgefüllt. Wurde das editierte Bild aus der CSD geladen, so wird die Oberfläche mit den Informationen aus dem geladenen XML-File ausgefüllt.
Stammt das Bild nicht aus der CSD, werden falls möglich Standardwerte gesetzt. Stammt das Bild nicht aus der CSD, werden falls möglich Standardwerte gesetzt.
Diese Werte sind in der Konfigurationsdatei editierbar. Diese Werte sind in der Konfigurationsdatei editierbar.
Nachdem der Nutzer die Informationen editiert hat, wird das temporäre Bild mit dem Nsif-Creator zu einem NSIF-Bild konvertiert. Nachdem der Nutzer die Informationen editiert hat, wird das temporäre Bild mit dem NSIF-Creator zu einem NSIF-Bild konvertiert.
Die nötigen Metadaten zur Erstellung des Bildes werden aus der Nutzeroberfläche geladen und in ein XML-Dokument geschrieben. Der NSIF-Creator ist eine Bibliothek, die aus diversen herkömmlichen Bildformaten und einem Metadaten XML-File ein NSIF-Bild erstellt.
Die nötigen Metadaten werden aus der Nutzeroberfläche geladen und in ein XML-Dokument geschrieben.
Sind im SBA Geoinformationen vorhanden, werden diese ebenfalls angefügt. Sind im SBA Geoinformationen vorhanden, werden diese ebenfalls angefügt.
Das XML-Dokument für die CSD wird mit den restlichen Informationen angereichert und zusammen mit dem NSIF-Bild an die Isaac.lib übergeben. % Welche Informationen können zu den ``restlichen'' gehören? Das XML-Dokument für die CSD wird ebenfalls mit den Informationen aus der Nutzereingabe generiert und zusammen mit dem NSIF-Bild an die Isaac.lib übergeben.
Ist das Bild aus der CSD geladen, wird darauf geachtet, dass alle Informationen aus dem alten XML-Dokument übernommen werden. Ist das Bild aus der CSD geladen, wird darauf geachtet, dass alle Informationen aus dem alten XML-Dokument übernommen werden.
Die Eingabe umfasst nicht alle Felder , die in dem XML-Dokument vorhanden sein können. Die Eingabe umfasst nicht alle Felder , die in dem XML-Dokument vorhanden sein können.
Bei der Erstellung des neuen Dokuments wird in diesem Fall das alte kopiert, alle Felder, die vom Server generiert werden, gelöscht und alle Änderungen aus der Nutzereingabe eingetragen. Bei der Erstellung des neuen Dokuments wird in diesem Fall das alte kopiert, alle Felder, die vom Server generiert werden, gelöscht und alle Änderungen aus der Nutzereingabe eingetragen.
Sind keine Informationen vom vorherigen Bild vorhanden, wird ein neues XML-Dokument generiert. Sind keine Informationen vom vorherigen Bild vorhanden, wird ein neues XML-Dokument generiert.
Der CSDWritingClient übernimmt das Übertragen des Meta-Dokuments. Das NSIF-Bild wird nicht direkt übertragen sondern wird in einem HTTP Server der isaac.lib zum download bereitgestellt.
Das NSIF-Bild stellt die Bibliothek in einem HttpServer zur Verfügung. % Dieser Satz scheint logisch verdreht. Die URL des Bildes wird in das XML Dokument eingetragen ud dann mit dem CSDWritingClient an die CSD übertragen.
Der CSD-Server lädt sich diese Datei herunter. Der CSD-Server läd sich daraufhin das Bild aus dem HTTP-Server herunter.
In der Implementierung sind beim Bereitstellen des Bildes einige Probleme aufgetreten.
Zum Einen ist darauf zu achten, dass die Infrastruktur erlaubt, dass der Server eine Rückverbindung zum Client aufbaut. Ist diese Funktionalität durch eine Firewall blockiert, kann das Bild nicht übertragen werden.
Zum Anderen überträgt die Isaac.lib nicht die IP-Adresse des Clients als Download-URL, sondern den DNS-Namen. Dies kann ebenfalls dazu führen, dass der Server das Bild nicht herunterladen kann.
\TODO{Ref auf Bild}
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{../UML/Struktur Writing.png} \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{../UML/Struktur Writing.png}
\caption{Die Nutzereingabe zur Eingabe der Metadaten. } \caption{Ablauf des Exportierns in die CSD
\label{figure:StrukturWriting} In Orange Action ist die Initiale Aktivierung des Nutzers.
Die roten Pfeile ist die Abfolge der Programmteile die Aufgerufen werden.
In grün sind die Komponenten der isaac.lib und der CSD dargestellt.
Insbesonder erfolgt der ``upload'' des Bildes, indem sich der Server die Datei vom Client herunterlädt.}
\label{figure:klassenResult}
\end{figure} \end{figure}
\subsection{Probleme}
\todo{Kapittel Probleme?}
In der Implementierung sind beim Bereitstellen des Bildes einige Probleme aufgetreten.
Zum Einen ist darauf zu achten, dass die Infrastruktur erlaubt, dass der Server eine Rückverbindung zum Client aufbaut. Ist diese Funktionalität durch eine Firewall blockiert, kann das Bild nicht übertragen werden.
Zum Anderen überträgt die Isaac.lib nicht die IP-Adresse des Clients als Download-URL, sondern den DNS-Namen. Dies kann ebenfalls dazu führen, dass der Server das Bild nicht herunterladen kann.
...@@ -10,6 +10,8 @@ Jedes Objekt in der CSD hat eine eindeutige UUID. Diese wird verwendet um die Da ...@@ -10,6 +10,8 @@ Jedes Objekt in der CSD hat eine eindeutige UUID. Diese wird verwendet um die Da
Bisher werden auf dem Geoviewer die Objekte aus der CSD nur dargestellt, und ermöglichen das Anzeigen der zugehörigen Metadaten auf dem MetaDaten Display. Bisher werden auf dem Geoviewer die Objekte aus der CSD nur dargestellt, und ermöglichen das Anzeigen der zugehörigen Metadaten auf dem MetaDaten Display.
Hier kann eine weiter Verbindung zwischen SBA und Geoviewer hergestellt werden. Durch Auswahl des Objektes im Geoviewer wird das Bild im SBA geladen. Hier kann eine weiter Verbindung zwischen SBA und Geoviewer hergestellt werden. Durch Auswahl des Objektes im Geoviewer wird das Bild im SBA geladen.
\subsection{Geoviewer Umgebung vom SBA ausr}
\subsection{Assoziationen} \subsection{Assoziationen}
Bidl und ergebniss verknüpfen Bidl und ergebniss verknüpfen
Bericht hinzufügen Bericht hinzufügen
......
No preview for this file type
UML/Klassen CSDTask.png

26.3 KB | W: | H:

UML/Klassen CSDTask.png

25.4 KB | W: | H:

UML/Klassen CSDTask.png
UML/Klassen CSDTask.png
UML/Klassen CSDTask.png
UML/Klassen CSDTask.png
  • 2-up
  • Swipe
  • Onion skin
No preview for this file type
No preview for this file type
UML/Struktur Writing.png

11.6 KB | W: | H:

UML/Struktur Writing.png

14.1 KB | W: | H:

UML/Struktur Writing.png
UML/Struktur Writing.png
UML/Struktur Writing.png
UML/Struktur Writing.png
  • 2-up
  • Swipe
  • Onion skin
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment