\documentclass[aspectratio=169]{beamer}
\input{beamer-config}
\usetheme{cleangreen}

\include{marco-galster-config}
\addbibresource{expose-ref.bib}

% ACHTUNG: Damit sich die Datei sauber im Visual Studio Code übersetzten lässt, muss in den Benutzer-Einstellungen
%   das Element "latex-workshop.latex.tools" aufgenommen werden und der erscheinende Eintrag für latexmk bei den
%   args am Anfang um den folgenden Eintrage erweitert werden:
%       "-shell-escape"

\title{\myTitle}
%\subtitle{}
\author[M. Galster]{\myName}
\footlinetext{\insertshortauthor \hspace{4em} Multi-Layer Optimization Strategies for Enhanced Performance in Digital Editions}
\institute{Universität~in~Hagen,~Deutschland}
\date{\myTime}

\begin{document}
\selectlanguage{ngerman}

% -- SLIDE -- Title
\begin{frame}[plain]
\titlepage
\end{frame}

% -- SLIDE -- TOC
\begin{frame}[c]
    \frametitle{Übersicht}

    %left space
    \begin{addmargin*}{2.5em}
        %enhance line space
        \begin{spacing}{1}
            \parbox{\linewidth}{%
                \tableofcontents
            }
        \end{spacing}
    \end{addmargin*}

    \addtocounter{framenumber}{-1}

\end{frame}

% -- SLIDES --
\section{Aufbau}
\begin{frame}
    \frametitle{Schichten}

    \begin{figure}[centered]
        \begin{tikzpicture}[scale=.6,transform shape,node distance=4em,
            block/.style={rectangle, rounded corners,minimum width=3cm,minimum height=.5cm,text centered, draw=black,fill=green!30},
            lineArrow/.style={arrows={-Latex[length=5pt 3 0]}},
            every fit/.style={inner sep=.4em,draw}
        ]
        %https://docs.oracle.com/javaee/6/tutorial/doc/bnacj.html
            \node (browser) [block] {WebBrowser};
            \node (fitClient) [rounded corners,fit=(browser)] {};
            \node [left] at (fitClient.west) {Client};
            
            \node (JSF) [block,below of=browser,node distance=5em] {Java Server Faces};
            \node (EJB) [block,below of=JSF] {Enterprise Java Beans};
            \node (JPA) [block,below of=EJB] {Java Persistance API};
            \node (openJPA) [block, below of=JPA] {OpenJPA Cache};
            \node (fitGlassfish) [rounded corners,fit=(JSF) (EJB) (JPA) (openJPA)] {};
            \node [left] at (fitGlassfish.west) {Glassfish};
    
            \node (memoryBuffers) [block, below of=openJPA] {Memory Buffers};
            \node (services) [block, right of=memoryBuffers, xshift=2cm] {Services};
            \node (database) [block, below of=memoryBuffers] {Database};
            \node (fitPostgreSQL) [rounded corners,fit=(memoryBuffers) (services) (database)] {};
            \node [left] at (fitPostgreSQL.west) {PostgreSQL};
    
            \node (fitServer) [rounded corners,fit=(fitGlassfish) (fitPostgreSQL),inner xsep=3em] {};
            \node [left] at (fitServer.west) {Server};
    
            \draw[lineArrow] (browser)--(JSF);
            \draw[lineArrow] (JSF)--(EJB);
            \draw[lineArrow] (EJB)--(JPA);
            \draw[lineArrow] (JPA)--(openJPA);
            \draw[lineArrow] (openJPA)--(memoryBuffers);
            \draw[lineArrow] (memoryBuffers)--(database);
            \draw[lineArrow] (services)|-(database);
        \end{tikzpicture}
        %\caption{Ablauf einer Web-Anfrage}
        \label{fig:webrequest}
    \end{figure}

\end{frame}

\section{Untersuchungen}
\begin{frame}
    \frametitle{Allgemein}
    --- Untersuchung vorher ---
\end{frame}

% Hier 2-3 der aktuellen erarbeiten Ansätze Vorstellen und nach dem Warum fragen
% Genau beschreiben was Signifikant besser/schlechter ist

\begin{frame}
    \frametitle{Caching mit OpenJPA}
    --- OpenJPA ---
\end{frame}

\begin{frame}
    \frametitle{Caching in JPA}
\end{frame}

\begin{frame}
    \frametitle{Caching in EJB}
\end{frame}

\begin{frame}
    \frametitle{Abfragen mit JPQL}
\end{frame}

\begin{frame}
    \frametitle{Abfragen mit Criteria API}
\end{frame}

\begin{frame}
    \frametitle{Abfragen über materialized views}
\end{frame}

\begin{frame}
    \frametitle{Cached Queries}
\end{frame}

%% -- SLIDE -- REFERENCES
% hier alle Keys aus der BIB einfügen, die mit dargestellt werden sollen
\nocite{IbmOpenJPACaching2023,PostgresPro:Chap20.4:2023}
% Für mehreren Seite bei den Referenzen ein ",allowframebreaks" in den [] hinzufügen
\begin{frame}[t]
    \frametitle{Referenzen}
    \printbibliography[title=Referenzen]
\end{frame}

\end{document}