\chapter{Ergänzungen zur Konzeption des Systems}
\minitoc

\newpage
\section{Domänenmodell}
\label{anhang_domainmodel}
Abbildung \ref{img_anhang_domainmodel} zeigt das Domänenmodell des Prototyps.
\begin{figure}[h]
\centering
\includegraphics[width=0.93\textwidth]{images/konzeption/jat_domain.jpg} 
\caption{Domänenmodell des Prototyps}
\label{img_anhang_domainmodel}
\end{figure}

\newpage
\section{Ergänzungen zum Metamodell}
\label{anhang_metamodell}

\subsection{Quelltext des Metamodells}
\label{anhang_metamodell_ecore}
Listing \ref{listing_anhang_ecore} zeigt das vollständige Metamodell des Prototyps als Ecore-Datei.
\lstinputlisting[frame=single, numbers=left, tabsize=3, label=listing_anhang_ecore, caption={Ausschnitt der Ecore-Datei zur Definition des Metamodells}, language=XML, keywordstyle=\color{darkred}, commentstyle=\color{darkgrey}, stringstyle=\color{darkblue}]{listings/anhang/lst_ecore}

\newpage
\subsection{Editor zur Bearbeitung des Metamodells}
\label{anhang_emf_editor}
Abbildung \ref{img_anhang_emf_editor} zeigt den EMF-Editor, in dem das Metamodell bearbeitet werden kann.
\begin{figure}[H]
\centering
\includegraphics[height=0.8\textwidth, angle=90]{images/anhang/metamodell.png} 
\caption{Metamodell des Prototyps im EMF-Editor}
\label{img_anhang_emf_editor}
\end{figure}

\newpage
\subsection{Genmodel von EMF}
\label{anhang_emf_genmodel}
Abbildung \ref{img_anhang_emf_genmodel} zeigt das Genmodel von EMF für das Metamodell.
\begin{figure}[H]
\centering
\includegraphics[height=0.93\textwidth, angle=90]{images/anhang/emf_genmodel.png} 
\caption{Genmodel für das Metamodell}
\label{img_anhang_emf_genmodel}
\end{figure}

\newpage
\section{Ergänzungen zur Entwicklung des GMF"=Modellierungstools}

\subsection{Graphical Definition Model}
Abbildung \ref{img_anhang_gmfgraph} zeigt das Graphical Definition Model für das zu entwickelnde Modellierungstool. Der Properties-View zeigt die Eigenschaften für das graphische Elemente, welches eine Scene repräsentiert. Das Graphical Definition Model befindet sich im XMI-Format auf der Diplomarbeit beiliegenden CD.
\label{anhang_gmfgraph}
\begin{figure}[H]
\centering
\includegraphics[height=0.7\textwidth, angle=90]{images/anhang/gmfgraph.png} 
\caption{Graphical Definition Model des GMF"=Modellierungstool}
\label{img_anhang_gmfgraph}
\end{figure}

\subsection{Ergänzungen zur Entwicklung einer konkreten Syntax}
\label{anhang_konkrete_syntax}
Nachfolgend finden sich Bilder der Elemente der konkreten Syntax der DSL. \\ 

\begin{figure}[H]
\begin{minipage}{0.35\textwidth}
\centering
\includegraphics[width=4cm]{images/anhang/sceneElement.png} 
\caption{Scene}
\label{img_symbol-scene}
\end{minipage}
\begin{minipage}{0.65\textwidth}
\textbf{Scene, Scene Link und Exhibition Module Link}
\par
Abbildung \ref{img_symbol-scene} zeigt die Darstellung einer Scene. Der Scene wurden ein Scene Link und eine Exhibition Module Link hinzugefügt. Sie werden durch die weißen Rechtecke auf dem Bild der Scene repräsentiert.
\end{minipage}
\end{figure}

\begin{figure}[h]
\begin{minipage}{0.35\textwidth}
\centering
\includegraphics[width=2.5cm]{images/anhang/ExhibitionModule.png} 
\caption{Exhibition Module}
\label{img_symbol-exmod}
\end{minipage}
\begin{minipage}{0.65\textwidth}
\textbf{Exhibition Module}
\par
Abbildung \ref{img_symbol-exmod} zeigt das Symbol eines Netzwerks. Dieses Symbol repräsentiert eine Exhibition Module im Modell. Das Netzwerk soll den netzwerkartigen Aufbau eines Exhibition Modules durch Sequences darstellen.
\end{minipage}
\end{figure}

\begin{figure}[h]
\begin{minipage}{0.35\textwidth}
\centering
\includegraphics[width=4cm]{images/anhang/SlideElement.png} 
\caption{Slide}
\label{img_symbol-slide}
\end{minipage}
\begin{minipage}{0.65\textwidth}
\textbf{Slide}
\par
Abbildung \ref{img_symbol-slide} zeigt die Darstellung eines Slides. Die Darstellung ist dreigeteilt. Im oberen Teil befindet sich eine Vorschau der Webseite, die für den Slide generiert wird. Darunter befindet sich jeweils eine Übersicht über alle Bilder und alle Texte, die dem Slide hinzugefügt wurden.
\end{minipage}
\end{figure}

\newpage

\begin{figure}[h]
\begin{minipage}{0.35\textwidth}
\centering
\includegraphics[width=4cm]{images/anhang/branchingPointElement.png} 
\caption{Branching Point}
\label{img_symbol-bp}
\end{minipage}
\begin{minipage}{0.65\textwidth}
\textbf{Branching Point}
\par
Abbildung \ref{img_symbol-bp} zeigt die Darstellung eines Branching Points. Die Darstellung ist viergeteilt. Im oberen Teil befindet sich eine Vorschau der Webseite, die für diesen Branching Point generiert wird. Darunter befindet sich ein Abschnitt, in dem die Branching Point Choices, die diesem Branching Point hinzugefügt wurden, angezeigt werden. Darunter ist jeweils ein Abschnitt für die Bilder und die Texte, die in diesem Branching Point enthalten sind.
\end{minipage}
\end{figure}

\begin{figure}[h]
\begin{minipage}{0.35\textwidth}
\centering
\includegraphics[width=4cm]{images/anhang/sequenceElement.png} 
\caption{Sequence}
\label{img_symbol-seq}
\end{minipage}
\begin{minipage}[b]{0.65\textwidth}
\textbf{Sequence}
\par
Abbildung \ref{img_symbol-seq} zeigt die Darstellung einer Sequence. Innerhalb des Rechtecks befindet sich eine Liste mit den Titeln der Slides und Branching Point, auf die die Sequence verweist.
\end{minipage}
\end{figure}

\par
Die Darstellung von Bildern und Texte ist eine Anzeige des entsprechenden Bilds beziehungsweise des Textes. Eine Virtual Exhibition hat keine graphische Anzeige.

\newpage
Abbildung \ref{img_anhang_alles} zeigt den Zusammenhang der Elemente der konkreten Syntax zu den generierten Webseiten.
\begin{figure}[H]
\centering
\includegraphics[height=\textwidth, angle=90]{images/anhang/alles.png} 
\caption{Elemente der konkreten Syntax und deren Darstellung in den generierten Webseiten}
\label{img_anhang_alles}
\end{figure}

\newpage
\subsection{Darstellung der Navigation durch die Scenes}
\label{anhang_navi}
Abbildung \ref{img_anhang_navi} zeigt einen Screenshot des Modellierungstools. Die Verbindungen zu den Scenes und Exhibition Modules von den Scene Links und Exhibition Module Links werden durch Linien dargestellt. Dies ermöglicht den Überblick über die Navigation durch eine virtuelle Ausstellung.
\begin{figure}[H]
\centering
\includegraphics[height=0.7\textwidth, angle=90]{images/anhang/exhibition_ssh.png} 
\caption{Navigation durch eine virtuelle Ausstellung}
\label{img_anhang_navi}
\end{figure}

\newpage
\subsection{Tooling Definition Model}
Abbildung \ref{img_anhang_gmftool} zeigt das Tooling Definition Model für das zu entwickelnden GMF"=Modellierungstool. Der Properties-View zeigt die Eigenschaften für die zweite Gruppe von Paletteneinträgen.
\label{anhang_gmftool}
\begin{figure}[H]
\centering
\includegraphics[height=0.9\textwidth, angle=90]{images/anhang/gmftool.png} 
\caption{Tooling Definition Model des Modellierungstools}
\label{img_anhang_gmftool}
\end{figure}

\newpage
\subsection{Aufbau des Modellierungstools}
\label{anhang_editor}
Abbildung \ref{img_anhang_editor} zeigt den Aufbau des Modellierungstools, das als Prototyp entwickelt wurde.
\begin{figure}[H]
\centering
\includegraphics[height=0.85\textwidth, angle=90]{images/anhang/editor.png} 
\caption{Aufbau des GMF-Modellierungstools}
\label{img_anhang_editor}
\end{figure}

\newpage
\subsection{Menüleisten des Modellierungstools}
\label{anhang_menuleisten}
Abbildung \ref{img_anhang_menues} zeigt einen Screenshot des Modellierungstools. Am oberen Bildrand ist das Hauptmenü zu sehen. Am oberen Rand des Anwendungsfensters des Modellierungstools ist die Coolbar zu finden.
\begin{figure}[H]
\centering
\includegraphics[height=0.78\textwidth, angle=90]{images/anhang/menues.png} 
\caption{Modellierungstool mit zwei Menüleisten}
\label{img_anhang_menues}
\end{figure}

\newpage
\subsection{Validierung}
\label{anhang_validierung}
Abbildung \ref{img_anhang_validate} zeigt das Modellierungstool nach der Validierung des Modells. Die Elemente, die gegen einen Constraint verstoßen sind durch Icons gekennzeichnet.
\begin{figure}[H]
\centering
\includegraphics[height=0.8\textwidth, angle=90]{images/anhang/validierung.png} 
\caption{Validierung im GMF-Modellierungstool}
\label{img_anhang_validate}
\end{figure}

\subsection{Slide Templates}
\label{anhang_slide_template}
Listing \ref{listing_anhang_jatpt} zeigt ein JAT Page Template für einen Branching Point, das ein Bild und rechts daneben einen Text anzeigt.
\lstinputlisting[frame=single, numbers=left, tabsize=3, label=listing_anhang_jatpt, caption={JAT Page Template}, language=HTML, keywordstyle=\color{darkred}, commentstyle=\color{darkgrey}, stringstyle=\color{darkblue}]{listings/anhang/lst_jatpt}

Listing \ref{listing_anhang_css} zeigt die zu dem JAT Page Template gehörende CSS-Datei.
\lstinputlisting[frame=single, numbers=left, tabsize=3, label=listing_anhang_css, caption={CSS-Datei für die Definition eines Slide Templates}, language=XML, keywordstyle=\color{darkred}, commentstyle=\color{darkgrey}, stringstyle=\color{darkblue}]{listings/anhang/lst_jatpt_css}

\newpage
\subsection{Mehrere geöffnete Editoren}
\label{anhang_tabs}
Abbildung \ref{img_anhang_tabs} zeigt die Darstellung von mehreren geöffneten Editoren durch Reiter.
\begin{figure}[H]
\centering
\includegraphics[height=0.77\textwidth, angle=90]{images/anhang/tabs.png} 
\caption{Mehrere geöffnete Editoren}
\label{img_anhang_tabs}
\end{figure}


\section{Ergänzungen zur Entwicklung des Codegenerators}
\label{anhang_codegenerator}

\subsection{Template zur Generierung von Webseiten für Exhibition Modules}
\label{anhang_template_jatgt}
Listing \ref{listing_anhang_template} zeigt das Template für die Generierung von Webseiten für die Exhibition Modules einer virtuellen Ausstellung.
\lstinputlisting[frame=single, numbers=left, tabsize=3, label=listing_anhang_template, caption={JAT Generation Template für Exhibition Modules}, language=HTML, keywordstyle=\color{darkred}, commentstyle=\color{darkgrey}, stringstyle=\color{darkblue}]{listings/anhang/lst_jatgt}

\subsection{Quelltextauszug der Implementierung des Ersetzungsprozesses}
\label{anhang_listing_regex}
Listing \ref{listing_anhang_regex} zeigt einen Auszug aus der Methode zur Generierung einer Datei aus einem Template. Das Template wird Zeile für Zeile eingelesen. Für jede Zeile werden die Tags durch entsprechende Werte ersetzt. Im Anschluss werden nicht verwendete Tags aus der Zeile gelöscht. Die Zeilen werden über einen \code{BufferedWriter} in eine Datei geschrieben.
\lstinputlisting[frame=single, numbers=left, tabsize=3, label=listing_anhang_regex, caption={Quelltextauszug der Implementierung des Ersetzungsprozesses}, language=Java, keywordstyle=\color{darkred}, commentstyle=\color{darkgrey}, stringstyle=\color{darkblue}]{listings/anhang/lst_regex}

\newpage
\section{Ergänzungen zu den verwendeten Entwurfsmustern}
\label{anhang_entwurfsmuster}

\subsection{Quelltext der Klasse \code{JatGenerationEngineFactory}}
\label{anhang_factory}
Listing \ref{listing_anhang_factory} zeigt den Quelltext der Klasse \code{JatGenerationEngineFactory}. Diese Klasse ist Teil der Umsetzung des Abstract Factory-Pattern im Zusammenhang mit dem Strategy-Pattern.
\lstinputlisting[frame=single, numbers=left, tabsize=3, label=listing_anhang_factory, caption={Quelltext der Klasse \code{JatGenerationEngineFactory}}, language=Java, keywordstyle=\color{darkred}, commentstyle=\color{darkgrey}, stringstyle=\color{darkblue}]{listings/anhang/lst_factory}

\subsection{Quelltext zur Umsetzung des Singleton-Patterns}
\label{anhang_singleton}
Listing \ref{listing_anhang_singleton} zeigt eine gekürzte Fassung des Quelltexts der Klasse \code{WorkspaceManager}. Diese setzt das Singleton-Pattern um.
\lstinputlisting[frame=single, numbers=left, tabsize=3, label=listing_anhang_singleton, caption={Quelltext zur Umsetzung des Singleton-Patterns}, language=Java, keywordstyle=\color{darkred}, commentstyle=\color{darkgrey}, stringstyle=\color{darkblue}]{listings/anhang/lst_singleton}

\newpage
\section{Ergänzungen zu den Implementierungsdetails}
\label{anhang_implementdetails}

\subsection{Quelltext der \code{plugin.xml} des Hauptprojekts}
\label{anhang_pluginxml}
Listing \ref{listing_anhang_pluginxml} zeigt den Quelltext der \code{plugin.xml} des Hauptprojekts.
\lstinputlisting[frame=single, numbers=left, tabsize=3, label=listing_anhang_pluginxml, caption={Ausschnitt der Ecore-Datei zur Definition des Metamodells}, language=XML, keywordstyle=\color{darkred}, commentstyle=\color{darkgrey}, stringstyle=\color{darkblue}]{listings/anhang/lst_pluginxml}

\subsection{Quelltext der Klasse \code{ValidationMarker}}
\label{anhang_validationmarker}
Listing \ref{listing_anhang_valMark} zeigt den Quelltext der Klasse \code{ValidationMarker}, der ein zweiter Konstruktor hinzugefügt wurde. Diesem Konstruktor wird zusätzlich das validierte Modellelement übergeben.
\lstinputlisting[frame=single, numbers=left, tabsize=3, label=listing_anhang_valMark, caption={Quelltext der Klasse \code{ValidationMarker}}, language=Java, keywordstyle=\color{darkred}, commentstyle=\color{darkgrey}, stringstyle=\color{darkblue}]{listings/anhang/lst_validationmarker}

\subsection{Quelltext des Label Providers der Tabelle der Validierungsergebnisse}
\label{anhang_labelProvider}
Listing \ref{listing_anhang_labelProv} zeigt den Quelltext des Label Providers für die Tabelle der Validierungsergebnisse.
\lstinputlisting[frame=single, numbers=left, tabsize=3, label=listing_anhang_labelProv, caption={Quelltext des Label Providers der Tabelle der Validierungsergebnisse}, language=Java, keywordstyle=\color{darkred}, commentstyle=\color{darkgrey}, stringstyle=\color{darkblue}]{listings/anhang/lst_labelProvider}

\newpage
\section{Unit-Tests}
\label{anhang_junit}
Abbildung \ref{img_anhang_junit} zeigt die Ergebnisse der JUnit-Tests, die unter Verwendung von Eclipse durchgeführt wurden,  für das Plugin \code{org.jat.generation}.
\begin{figure}[H]
\centering
\includegraphics[width=\textwidth]{images/anhang/Junit.png} 
\caption{JUnit-Tests des Plugins \code{org.jat.generation}}
\label{img_anhang_junit}
\end{figure}

Abbildung \ref{img_anhang_junit2} zeigt die Ergebnisse der JUnit-Tests, die unter Verwendung von Eclipse durchgeführt wurden, für das Plugin \code{org.jat.generation.engine}.
\begin{figure}[H]
\centering
\includegraphics[width=\textwidth]{images/anhang/Junit2.png} 
\caption{JUnit-Tests des Plugins \code{org.jat.generation.engine}}
\label{img_anhang_junit2}
\end{figure}


