\section{General Settings}
\subsection{Structure of Configurationfile}
The Configuration of the Artifact-Server will generally be done in one single
File. This file is called conf.xml and is stored in the folder conf of the 
Artifact-Server.
Some additional Configurations will be done using Systemproperties. This 
Properties will be listed in the last Section of this chapter.

The Configuration is modelled using XML.
The main Structure of the XML-Document now will be explained:

\begin{verbatim}
artifact-database
|--artifact-factories
|--artifacts
|--gnv
|  |--charttemplate
|  |--palettes
|  |--horizontal-cross-section-profile
|  |--horizontal-cross-section
|  |--vertical-cross-section
|  |--shapefile-directory
|  `--map-generator
|--mapserver
|--velocity
|--ehcache
|--geo-backend
|--rest-server
|--cleaner
`--database
\end{verbatim}

\subsubsection{artifact-factories}

These Section configures the Factories for Artifacts which can be used.
The meaning of artifact-factories are explained in Section TODO: LINK to Model of Transition

\subsubsection{artifacts}

These Section configures the Artifacts which could be reached using the Artifact-Server.
The meaning of artifacts are explained in Section TODO: LINK to Model of Transition

\subsubsection{gnv}

This Section configures all GNV-specific settings of the Artifact-Server.
//TODO add paragraphs and explain the child-elements.

\subsubsection{mapserver}

The Section Mapserver is introduced to be able to configure all Settings which 
are required to setup the WMS-Export of the GNV-Artifacts.

It is possible to Configure the following settings:

\begin{itemize}
    \item server: The URL the WMS of the GNV-Artifacts will be reached from
                  Clients.
\end{itemize}

\subsubsection{velocity}

Velocity is an Library which is used in this Project.
Velocity has it's own Logging, so that it is necessary to configure
this to get Loginformations.

\begin{itemize}
    \item logfile: The absolute Path to the Logfile of Velocity.
\end{itemize}

\subsubsection{ehcache}

The Ehcache is used to implement an Cache storing the Thematic-Data of the
different Sessions.

It is possible to configure this Cache in many ways. To realize this it is
possible to configure the following settings:

\begin{itemize}
    \item configuration: The absolute Path to the Configuration-File.
                         It is possible to start with \$\{artifacts.config.dir\}
                         to reference the file from the Directory which includes
                         the Configuration
\end{itemize}


\subsubsection{geo-backend}

The geo-backend is an separate Module of this Project. It encapsulate the logic
which is required to provide the Access to the Databasebackend.
At this Time only the Access to the ArcSDE is implemented.

To setup the geo-backend the following settings are required:

\begin{itemize}
    \item backend-configuration: The absolute Path to the File which contains the
                                 properties to establish the Connection to the 
                                 Databasebackend.
    \item query-configuration: The absolute Path to the File which contains all
                               SQL-Statements which are required to fetch the
                               Thematic-Data
\end{itemize}

Both Path can start with \$\{artifacts.config.dir\} to reference the file from 
the Directory which includes the Configuration.
\paragraph{Backend-Configuration (arcsdeconnectionpool.properties)}

\paragraph{Query-configuration (queries.properties)}

This File contains Key-Value-Pairs to define SQL-Statements.
All Queries will be handle using the Prepared-Statement-Syntax using "?"
to define an Place where an dynamic Value should be placed into the Statement.

There is one special Implementation to support spatial access to the ArcSDE,
because the ArcSDE does not support the Access to spatial Objects using the
definition of the Simple Feature Specification for SQL of the OGC.

It was necessary to implement this mechanism to simulate the Access.

All Queries which contains the following Literals will be handle separate
using the ArcSDE-API.

\begin{itemize}
    \item ST\_ASTEXT(SHAPE): Will return the Geometry as an WellKnowText (WKT)
    \item ST\_ASTEXT(RASTER): Will return the Raster in an readable Way.
    \item INTERSECTS(SHAPE,"?"): Will only return the Elements which Geometry
                                 intersects the given Geometry ("?" will be 
                                 replace with an WKT) 
\end{itemize}

\subsubsection{rest-server}
\subsubsection{cleaner}
\subsubsection{database}


\subsection{Set the Communicationport}
\subsection{Logging}
\subsection{Configure ArtifactServer using Systemproperties}
\begin{itemize}
    \item artifact.database.dir The folder where the Configuration is located-
    \item query.executor.factory: The absolute  Classname which QueryExecutorfactory should be used
    \begin{itemize}
        \item de.intevation.gnv.geobackend.base.query.QueryExecutorFactory :
              Standardfactory without any Addons.
        \item de.intevation.gnv.geobackend.base.query.CachingQueryExecutorFactory: 
              Factory with Cache for SQL-Query-Results
    \end{itemize}
    \item caching.query.executor.config: The absolute Path to the Configurationfile 
                                         for the Cache which stores the SQL-Query-
                                         Results. This only take effect if the
                                         query.executor.factory-Property is set
                                         to de.intevation.gnv.geobackend.base.query.CachingQueryExecutorFactory.
    \item caching.cleaner.interval: The Interval in seconds the Caches should be cleaned using the Cachecleaner
\end{itemize}

