Um eine wiederverwendbare Oberfläche einzubinden, wird eine Schnittstelle angelegt (siehe Abbildung \ref{figure:klassenRequest}).
Um eine wiederverwendbare Oberfläche einzubinden, wird eine Schnittstelle angelegt (siehe Abbildung \ref{figure:klassenRequest}).
Die Schnittstelle wird aufgerufen, sobald der Nutzer einen Task absendet und bei der Auswahl einer Region. Das CSD-Plugin des Geoviewers implementiert diese Schnittstelle.
Die Schnittstelle wird aufgerufen, sobald der Nutzer einen Task absendet und bei der Auswahl einer Region.
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 CSDPlugin weitergeleitet.
Der Aufruf der Region wird falls möglich über einen DirectRequest an das CSD-Plugin weitergeleitet.
Die Antwort darauf erhält der SBA erneut über einen DirectRequest. % Warum ``erneut''?
Die Antwort darauf erhält der SBA erneut über einen DirectRequest. % Warum ``erneut''?
Eine DirectMessage ist im System der Middleware nicht vorhanden. Deshalb werden an dieser Stelle ersatzweise Requests verwendet.
Eine DirectMessage ist im System der Middleware nicht vorhanden.
Wir können nicht nur einen einzigen Request absetzen, da nicht bekannt ist, wie lange der Nutzer zum Einzeichnen benötigt.
Deshalb werden an dieser Stelle ersatzweise Requests verwendet.
Nutzt man lediglich einen DirectRequest, so müsste die Antwort der Plugins innerhalb des Timeouts von 5 Sekunden erfolgen.
Ein einziger Request genügt für diese Aufgabe nicht, da nicht bekannt ist, wie lange der Nutzer zum Einzeichnen benötigt.
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.
\caption{Das Generieren von Tasks hat eine einheitliche Schnittstelle. Diese wird im SBA und CSDPlugin implementiert und so kann der RequestDialog wiederverwendet werden}
\caption{Das Generieren von Tasks hat eine einheitliche Schnittstelle.
Diese wird im SBA und CSDPlugin implementiert.
So kann der RequestDialog wiederverwendet werden.}
\label{figure:klassenRequest}
\label{figure:klassenRequest}
\end{figure}
\end{figure}
...
@@ -58,13 +62,14 @@ Dieser lokale Request lässt sich im Konfigurationsfile aktivieren und führt da
...
@@ -58,13 +62,14 @@ 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 CSDCommonBibliothek 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 Methode newResult aufgerufen, um das Ergebnis genau zu verarbeiten. %Was meinst du mit ``genau verarbeiten''?
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''
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''
Bricht die Verarbeitung eines Ergebnisses ab, so wird die Methode storeErrorProduct aufgerufen.
Bricht die Verarbeitung eines Ergebnisses ab, so wird die Methode storeErrorProduct aufgerufen.
In der Standard-Implementierung wird das XML-Dokument in einem Ordner abgelegt.
In der Standard-Implementierung wird das XML-Dokument in einem Ordner abgelegt.
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.
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.
\begin{figure}
\begin{figure}
\centering
\centering
...
@@ -97,27 +102,28 @@ Alle Ergebnisse werden dem CSDDataStore hinzugefügt und der Nutzer kann sich in
...
@@ -97,27 +102,28 @@ Alle Ergebnisse werden dem CSDDataStore hinzugefügt und der Nutzer kann sich in
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 Datenbank öffnen möchte, wird dieses heruntergeladen und aus dem NSIF-Format in den SBA importiert.
\section{Ausgewertete Daten speichern}
\section{Ausgewertete Daten speichern}
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 war im SBA im Allgemeinen vorhanden. %Im Allgemeinen - im Speziellen nicht? Ich verstehe nicht, warum du die Formulierung ``im Allgemeinen'' verwendest.
Die ExportAction fragt den Nutzer nach einem Speicherort und rendert das Bild.
Die ExportAction fragt den Nutzer nach einem Speicherort und rendert das Bild.
\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 überschreibt die Standard-Export-Action.
Die Auswahl des Nutzers wurde ersetzt durch einen Ordnerpfad, der aus der Konfigurationsdatei gelesen werden kann.
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.
\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.
Zunächst muss der Nutzer alle nötigen Informationen zum Speichern in die CSD eingeben.
Zunächst muss der Nutzer alle nötigen Informationen zum Speichern in die CSD eingeben.
Die Informationen werden auf Richtigkeit und Notwendigkeit überprüft.
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.
Ist 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 zur 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.
Die nötigen Metadaten zur Erstellung des Bildes 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.
Mit den restlichen Informationen wird das XML-Dokument für die CSD erstellt 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 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?
Ist das Bild aus der CSD geladen, wird darauf geachtet, dass alle Informationen aus dem alten XML-Dokument übernommen werden, da die Eingabe nicht alle Felder umfasst, die in dem XML-Dokument vorhanden sein können.
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.
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.
Der CSDWritingClient übernimmt das Übertragen des Meta-Dokuments.
...
@@ -125,6 +131,6 @@ Das NSIF-Bild stellt die Bibliothek in einem HttpServer zur Verfügung. % Dieser
...
@@ -125,6 +131,6 @@ Das NSIF-Bild stellt die Bibliothek in einem HttpServer zur Verfügung. % Dieser
Der CSD-Server lädt sich diese Datei herunter.
Der CSD-Server lädt sich diese Datei herunter.
In der Implementierung sind beim Bereitstellen des Bildes einige Probleme aufgetreten.
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 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.
Außerdem ü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.
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.