\RequirePackage{silence} % :-\
    \WarningFilter{scrreprt}{Usage of package `titlesec'}
    %\WarningFilter{scrreprt}{Activating an ugly workaround}
    \WarningFilter{titlesec}{Non standard sectioning command detected}
\documentclass[ openright,titlepage,numbers=noenddot,headinclude,%twoside, %1headlines,% letterpaper a4paper
                footinclude=true,cleardoublepage=empty,abstract=false, % <--- obsolete, remove (todo)
                BCOR=5mm,paper=a4,fontsize=11pt,%11pt,a4paper,%
                ngerman,american,%lockflag%
                ]{scrreprt}

%*************************************************************************
% Note: Make all your adjustments in here
%*************************************************************************
\input{marco-galster-config}
\input{classicthesis-config}
\renewcommand{\myThesisType}{Bachelorarbeit\xspace}
%\renewcommand{\myTime}{22. Juli 2024\xspace}
\renewcommand{\myVersion}{version 1.0\xspace}

\makeatletter
\addto\extrasngerman{
    % Definition, um Umbrüche innerhalb von Text und Nr zu erlauben, damit kein 
    % überschreiben des Randes auftritt
    \def\sectionautorefname{Abschnitt\hskip\z@skip}
}
\makeatother

% https://en.wikibooks.org/wiki/LaTeX/Source_Code_Listings
%\lstinputlisting[frame=tb,language=SQL,caption={ein sql beispiel},label=lst:tester]{chapters/thesis/chapter05_example.sql}
\newcommand{\includecode}[4][c]{\lstinputlisting[caption=#4,label=#3,language=#1]{#2}}
\lstset{frame=tb}
\newcommand\mytodos[1]{\fcolorbox{black}{lightgray}{\parbox{\textwidth}{\textit{\textcolor{red}{TODO: #1}}}}}

% Beispiel für externe Datei:
%\includecode[SQL]{chapters/thesis/chapter05_example.sql}{lst:tester}{ein sql beispiel}
% Beispiel für direkte Eingabe:
%\begin{lstlisting}[float=b,language=Pascal,frame=tb,caption={A floating example (\texttt{listings} manual)},label=lst:useless]
%    for i:=maxint downto 0 do
%    begin
%    { do nothing or other things }
%    end;
%\end{lstlisting}
% Beispiel für Inline:
%lorem ipsum \lstinline|code| lorem ipsum

\input{tools/yaml_syntax_highlighting.tex}
\input{tools/javascript_syntax_hightlighting.tex}


%*************************************************************************
% Bibliographies
%*************************************************************************
\addbibresource{Expose-ref.bib}

%*************************************************************************
% GO!GO!GO! MOVE IT!
%*************************************************************************
\begin{document}
\frenchspacing
\raggedbottom
\selectlanguage{ngerman} % ngerman, american
%*************************************************************************
% Hyphenation - scheinbar erst nach Sprachselektion, sonst funktioniert es nicht
%*************************************************************************
\hyphenation{
  Spei-cher-be-darf
}
%\renewcommand*{\bibname}{new name}
%\setbibpreamble{}
\pagenumbering{roman}
\pagestyle{plain}
%*************************************************************************
% Frontmatter
%*************************************************************************
\include{frontbackmatter/Titlepage}
\include{frontbackmatter/Titleback}
%\cleardoublepage\include{frontbackmatter/Dedication}
%\cleardoublepage\include{frontbackmatter/Foreword}
\cleardoublepage\include{frontbackmatter/Declaration}
\condLOCK{\cleardoublepage\include{frontbackmatter/BlockingNotice}}
\cleardoublepage\include{frontbackmatter/thesis/AbstractEN}
\cleardoublepage\include{frontbackmatter/thesis/AbstractDE}
%\cleardoublepage\include{frontbackmatter/Publications}
%\cleardoublepage\include{frontbackmatter/Acknowledgments}
\cleardoublepage\include{frontbackmatter/Contents}
\cleardoublepage\include{frontbackmatter/Figures}
\cleardoublepage\include{frontbackmatter/Tables}
\cleardoublepage\include{frontbackmatter/Listings}
\cleardoublepage\include{frontbackmatter/thesis/Acronyms}
%*************************************************************************
% Mainmatter
%*************************************************************************
\cleardoublepage
\pagestyle{scrheadings}
\pagenumbering{arabic}
% Alwas use \cleardoublepage before \part{...}.
\cleardoublepage
%\part{Thesis}\label{pt:thesis}
\include{chapters/thesis/chapter01}
\include{chapters/thesis/chapter02}
\include{chapters/thesis/chapter03}
\include{chapters/thesis/chapter04}
\include{chapters/thesis/chapter05}
\include{chapters/thesis/chapter06}
\include{chapters/thesis/chapter07}
%*************************************************************************
% Backmatter
%*************************************************************************
\appendix
%\renewcommand{\thechapter}{\alph{chapter}}
\cleardoublepage
\part{Appendix}
%\include{chapters/thesis/appendix01}
\include{chapters/thesis/appendix02}
\include{chapters/thesis/appendix03}
\include{chapters/thesis/appendix04}
\include{chapters/thesis/appendix05}
\include{chapters/thesis/appendix06}
%*************************************************************************
% Other Stuff in the Back
%*************************************************************************
\cleardoublepage\include{frontbackmatter/Bibliography}
%*************************************************************************
% Game Over: Restore, Restart, or Quit?
%*************************************************************************
\end{document}
%*************************************************************************

% Performance-Analysen Postgresql:
% https://stackoverflow.com/questions/2430380/is-there-a-postgresql-equivalent-of-sql-server-profiler
% https://www.postgresql.org/docs/current/runtime-config-logging.html#guc-log-statement

% Allgemeine Webseite:
% https://www.overleaf.com/learn/latex/Bibliography_management_with_natbib
% https://postgrespro.com/docs/postgresql/14/runtime-config-resource

% Frank Wedekind:
% https://books.google.de/books?hl=de&lr=&id=3qO8DQAAQBAJ&oi=fnd&pg=PA1&dq=frank+wedekind&ots=S4LHWQ0h2e&sig=Mz8PEGF-md4n3AwH9cgXq-5vUac#v=onepage&q=frank%20wedekind&f=false
% https://www.martin.germanistik.uni-mainz.de/forschung/frank-wedekind/

% Webseiten für Java und Payara
% https://blog.payara.fish/how-to-deploy-an-application-on-payara-server-5
% https://docs.payara.fish/community/docs/6.2023.1/Technical%20Documentation/Ecosystem/IDE%20Integration/IntelliJ%20Plugin/Payara%20Server.html

% Probleme mit Latexmk nach einen Update
% pacman -S texlive-meta
% > fmtutil-user --all
% > sudo fmtutil-sys --all

% Da ich beim Deployen immer wieder Zugriffsfehler mit "kein Zugriff auf Schema public" hatte, habe ich nochmal folgende Befehle
% auf dem Datenbankserver ausgeführt um alle Rechte zu erteilen (Anlegen des User ausgenommen):
% > sudo -u postgres psql
% > CREATE USER onlineed WITH PASSWORD 'xxxxx';
% > GRANT ALL ON DATABASE wedeojpa to onlineed; -- diese kommt aus der Wiki, hat aber nicht gereicht
% > GRANT ALL PRIVILEGES ON wedeojpa TO onlineed;
% > \c wedeojpa postgres -- In die Datenbank wedeojpa wechseln unter dem User postgres
% > GRANT ALL ON SCHEMA public TO onlineed;
% nicht um die Rechte dem Benutzer onlineed

% Installation Payara mit PostgreSQL
% 1. Mit "yay -S payara" installieren lassen, liegt dann unter /opt/payara
% 2. Mit "yay -S postgresql-jdbc" den Datenbanktreiber installieren
% 3. Eigenen Benutzer der Gruppe payara hinzufügen, damit man es direkt von der IDE starten kann (gpasswd -a <user> payara)
%    über "/opt/payara/bin/asadmin start-domain" kann der Server auch per hand gestartet werden und einem zusätzlichen "-d" 
%    ist der Debugger aktiv, damit man über die IDE auch remote-debuggen kann (Es kann sein dass am Ende die Domain dazu muss)
% 4. Beim Zugriffsfehler, muss die Log-Datei schreibrechte für die Gruppe zugeordnet werden. Hierfür nachfolgenden
%    Befehl im Ordner "/opt/payara/glassfish/domains/domain1/logs" ausführen:
%    > sudo chmod g+w -R *

% Konfiguration von Idea
% 1. Neue Payara Server - Local hinzufügen
% 2. Bei Before Lunch "Build artifact" hinzufügen und "WedekindJSF.war" auswählen
% 3. Unter Deployment "Artifact" "WedekindJSF.war" hinzufügen
% 4. Sollte es Probleme mit dem Deployment geben, ala "kann ...Servlet-class nof found" einfach alle target-Verzeichnis löschen
%    und erneut Deployen oder vielleicht ein Rebuild auf dem Projekt probieren

% Konfiguration GlassFish/Payara (Muss scheinbar nach jedem neustart des Rechners gemacht werden)
% 1. Payara-Server starten, damit man an die Admin-Oberfläche kommt unter http://localhost:4848/
%    > /opt/payara/bin/asadmin start-domain domain1
% 2. Unter Ressources\JDBC\JDBC Connection Pools einen neuen Anlegen:
% 2.1. Poolname vergeben
% 2.2. Resource Type: javax.sql.DataSource
% 2.3. Database Driver Vender: Postgresql (Wenn die Auswahl nicht stehen bleibt, dann im Feld darunter fix eintragen)
% 2.4. Mit Next bestätigen
% 2.5. Datasource Classname prüfen, sollte auf org.postgresql.ds.PGSimpleDataSource oder org.postgresql.ds.PGSimpleDataSource sein
% 2.6. Die Felder User, Password und databaseName ausfüllen (Infos siehe payra-resources.xml)
% 2.7. Mit Finish bestätigen
% 3. Unter Resources\JDBC\JDBC Resources einen neuen Anlegen:
% 3.1. JNDI Name: jdbc/wedekindPostgreSQL (muss mit jta-data-source aus persistence.xml zusammen passen)
% 3.2. Pool Name: den unter 2 angelegten Pool auswählen
% 3.3. Mit Save bestätigen
% 4. Payara-Server neustarten

% Sollte der Ping nicht gehen, dann braucht man noch die Treiber, welche hier zu finden sind: https://jdbc.postgresql.org/download/
% Häufige Fehlermeldung dafür ist "No suitable driver found for jdbc:postgresql://...."
% Nach dem Download mit nachfolgendem Kommando hinzufügen:
% > /opt/payara/bin/asadmin add-library /path/to/download/jdbcdriver.jar
% > sudo -i -u postgres
% > psql
% > CREATE EXTENSION adminpack;
% danach sollte der Ping auf der Webseite gehen

% Java-Programm
% WedekindEJB beinhaltet die Datenbank-Klassen und den Zugriff in die DB, sowie die TEI Implementierung
% WedekindJSF beinhaltet die WebOberfläche
%   Unter de.wedekind sind die Funktionen/Controller zu finden
%   Unter webapp findet man die Views
%     Unter WEB-INF/layout findet man die Sonder-Elemente wie Footer, Header usw.
%   Die Verknüpfung von View zu Controller passiert scheinbar in der viewAction, bei der die Setup-Funktion des Controllers gerufen wird
%    bzw. den direkten Aufrufen der Controller-Namen innerhalb von #{}, wobei der erste Buchstabe klein ist
%   Der URL-Aufbau wird durch den webapp-Ordner vorgegeben.