diff --git a/xplan-database/xplan-database-docker/README.md b/xplan-database/xplan-database-docker/README.md index c43878a0f2d0516c34259ee781b4fc1001f973ab..3a55d184f2850e7eb85455c32a968809a9342403 100644 --- a/xplan-database/xplan-database-docker/README.md +++ b/xplan-database/xplan-database-docker/README.md @@ -1,5 +1,4 @@ -## SoapUI TestSuites - +## XPlanDB ### Docker Image @@ -13,10 +12,21 @@ docker build -t xplanbox/xplan-db . Running image for the `xplanbox` database: ``` -docker run -it xplanbox/xplan-db +docker run -it --env ... xplanbox/xplan-db ``` -Running image for the `inspireplu` database: -``` -docker run -it --env DB_NAME=inspireplu xplanbox/xplan-db -``` +Use the docker image xplan-db-updater (maven module xplan-databse-scripts) to set up the database with liquibase. + +#### Environment variables + +Used with `--env` + +* XPLAN_DB_NAME: Name of the database to create. Default: xplanbox +* XPLAN_DB_USER: Name of the app user. Default: xplanbox +* XPLAN_DB_PASSWORD: Password of the app user. Default: xplanbox +* XPLAN_DB_INIT_USER: Name of the init user. Default: initxplanbox +* XPLAN_DB_INIT_PASSWORD: Name of the password user. Default: initxplanbox + +### Deprection notice + +The SQL-Scripts located in `src/main/resources` are deprecated and will be removed in a future version. \ No newline at end of file diff --git a/xplan-database/xplan-database-scripts/src/main/assembly/assembly.xml b/xplan-database/xplan-database-scripts/src/main/assembly/assembly.xml index 34b23519e13c9c5b53645e8ee3b920b4ba5ee207..ced6abf78d23c59a9b1238406c936978d43cbbd2 100644 --- a/xplan-database/xplan-database-scripts/src/main/assembly/assembly.xml +++ b/xplan-database/xplan-database-scripts/src/main/assembly/assembly.xml @@ -30,6 +30,9 @@ <fileSet> <directory>${basedir}/src/main/resources</directory> <outputDirectory>/</outputDirectory> + <excludes> + <exclude>liquibase-diff.properties</exclude> + </excludes> </fileSet> </fileSets> </assembly> diff --git a/xplan-distribution/pom.xml b/xplan-distribution/pom.xml index 1878029c465db3bc032c074dd2333cc6e8145494..87ffef4e409370dd81a858e773bc93e36f4f4feb 100644 --- a/xplan-distribution/pom.xml +++ b/xplan-distribution/pom.xml @@ -147,6 +147,12 @@ <type>war</type> </dependency> <!-- Config > /conf --> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>xplan-database-scripts</artifactId> + <version>${project.version}</version> + <type>zip</type> + </dependency> <dependency> <groupId>${project.groupId}</groupId> <artifactId>xplan-manager-config</artifactId> diff --git a/xplan-distribution/src/main/assembly/assembly.xml b/xplan-distribution/src/main/assembly/assembly.xml index a44378bb41c8cb74adc9c68c913d988a5e650470..e8dbf74e41e9a434a1590da2a4f6929251278e07 100644 --- a/xplan-distribution/src/main/assembly/assembly.xml +++ b/xplan-distribution/src/main/assembly/assembly.xml @@ -84,6 +84,14 @@ <include>de.latlon.product.xplanbox:xplan-webservices-workspaces:zip:*</include> </includes> </dependencySet> + <dependencySet> + <useProjectArtifact>false</useProjectArtifact> + <outputDirectory>conf</outputDirectory> + <outputFileNameMapping>${artifact.artifactId}${dashClassifier?}.${artifact.extension}</outputFileNameMapping> + <includes> + <include>de.latlon.product.xplanbox:xplan-database-scripts:zip:*</include> + </includes> + </dependencySet> <dependencySet> <useProjectArtifact>false</useProjectArtifact> <outputDirectory>test</outputDirectory> diff --git a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/anhang/xplanwms.adoc b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/anhang/xplanwms.adoc index e39fcbb16995e2d86362c0e02cb5bdf4d4a683c5..45aa0d0807df9f93af92b25878037ecc6d789f5d 100644 --- a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/anhang/xplanwms.adoc +++ b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/anhang/xplanwms.adoc @@ -103,12 +103,12 @@ Die folgende Übersicht der Verzeichnisstruktur und der darin enthaltenen Dateie <2> Im Verzeichnis _data/_ werden die Rasterdaten (PNG oder GeoTIFF) aus dem XPlanArchiv abgelegt. <3> Im Verzeichnis _datasources/tile/_ werden zu jeder Konfigurationsdatei aus <4> durch den XPlanManager Konfigurationsdateien nach dem Muster __<planId>_<rasterdatei>.xml__ automatisch erzeugt. <4> Im Verzeichnis _datasources/tile/tilematrixset/_ werden zu jeder Rasterdatei aus <2> durch den <<xplanmanager-web, XPlanManager>> Konfigurationsdateien nach dem Muster __<planId>_<rasterdatei>.xml__ automatisch erzeugt. -<5> Die Datei _gdal.ignore_ kann gelöscht werden, wenn kein <<konfiguration-gdal, GDAL>> verwendet wird. Wird GDAL verwendet, dann muss die Konfigurationsdatei in _gdal.xml_ umbenannt werden. +<5> Die Datei _gdal.ignore_ kann gelöscht werden, wenn kein <<konfiguration-gdal,GDAL>> verwendet wird. Wird GDAL verwendet, dann muss die Konfigurationsdatei in _gdal.xml_ umbenannt werden. <6> Im Verzeichnis _jdbc/_ liegt die Konfigurationsdatei mit der Datenbankverbindung zur <<XPlanDB>>. -<7> Im Verzeichnis _layers/_ werden zu jeder Rasterdatei durch den <<xplanmanager-web, XPlanManager>> eine Konfigurationsdatei passend zu <3> nach dem Muster __<planId>_<rasterdatei>.xml__ automatisch erzeugt. +<7> Im Verzeichnis _layers/_ werden zu jeder Rasterdatei durch den <<xplanmanager-web,XPlanManager>> eine Konfigurationsdatei passend zu <3> nach dem Muster __<planId>_<rasterdatei>.xml__ automatisch erzeugt. <8> Im Verzeichnis _legends/_ liegen die Legendensymbole. -<9> Im Verzeichnis _services/_ liegen die Konfigurationsdateien für den <<xplanwms, XPlanWMS>>. -<10> Die Datei _html.gfi_ beinhaltet die Konfiguration der HTML-Ausgabe der GetFeatureInfo-Operation des <<xplanwms, XPlanWMS>>. -<11> Im Verzeichnis _styles/_ liegen die Zeichenvorschriften für den <<xplanwms, XPlanWMS>>. +<9> Im Verzeichnis _services/_ liegen die Konfigurationsdateien für den <<xplanwms,XPlanWMS>>. +<10> Die Datei _html.gfi_ beinhaltet die Konfiguration der HTML-Ausgabe der GetFeatureInfo-Operation des <<xplanwms,XPlanWMS>>. +<11> Im Verzeichnis _styles/_ liegen die Zeichenvorschriften für den <<xplanwms,XPlanWMS>>. <12> Im Verzeichnis _symbols/_ liegen die Symbole, die in den Zeichenvorschriften verwendet werden. -<13> Im Verzeichnis _themes/_ liegen die Konfigurationsdateien für den <<xplanwms, XPlanWMS>>, die den Ebenenbaum definieren. Die unter <6> generierten Konfigurationsdateien für die einzelnen Ebenen werden beim Import vom XPlanManager automatisch erweitert. Dies sind nach Planart und Planstatus die Dateien mit der Dateiendung `*raster.xml`. +<13> Im Verzeichnis _themes/_ liegen die Konfigurationsdateien für den <<xplanwms,XPlanWMS>>, die den Ebenenbaum definieren. Die unter <6> generierten Konfigurationsdateien für die einzelnen Ebenen werden beim Import vom XPlanManager automatisch erweitert. Dies sind nach Planart und Planstatus die Dateien mit der Dateiendung `*raster.xml`. diff --git a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/installation/datenbank.adoc b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/installation/datenbank.adoc index f9a571e02736922a7634479848d01b7d05cc28a2..27560bd964e37030869862feea6655172251b268 100644 --- a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/installation/datenbank.adoc +++ b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/installation/datenbank.adoc @@ -1,27 +1,86 @@ [[konfiguration-der-datenbank]] === Erstellen der Datenbank XPlanDB +[[konfiguration-xplandb]] +==== Vorbereitung -Das Erstellen der Datenbank XPlanDB kann mit einem beliebigen Datenbankwerkzeug, wie z. B. dem Kommandozeilentool `psql` oder https://www.pgadmin.org[pgAdmin] erfolgen. +Für das Erstellen der Datenbank XPlanDB ist ein Datenbankwerkzeug, wie z. B. https://www.pgadmin.org[pgAdmin] oder das Kommandozeilentool `psql` erforderlich. -Für die Erstellung der XPlanDB müssen die folgenden Schritte ausgeführt werden: +Die folgenden Schritte müssen ausgeführt werden: - Verbindung zum PostgreSQL-Server als Super User (Rolle _postgres_) herstellen -- Anlegen der Datenbank und Datenbankbenutzer mit: +- Anlegen der Datenbank und der Datenbankbenutzer `DB_INIT_USER` (1) mit Berechtigungen für DDL und DCL sowie `DB_USER` (2) mit Berechtigungen für DQL und DML: [source,sql] ---- -CREATE USER "$DB_INIT_USER" PASSWORD '$DB_INIT_PASSWORD'; -CREATE USER "$DB_USER" PASSWORD '$DB_PASSWORD'; +CREATE USER "$DB_INIT_USER" PASSWORD '$DB_INIT_PASSWORD'; <1> +CREATE USER "$DB_USER" PASSWORD '$DB_PASSWORD'; <2> CREATE DATABASE "$DB_NAME" OWNER '$DB_INIT_USER'; -GRANT ALL PRIVILEGES ON DATABASE "$DB_NAME" TO "$DB_INIT_USER"; -GRANT CONNECT ON DATABASE "$DB_NAME" TO "$DB_USER"; ---- - Installation der PostGIS-Erweiterung für die neu erstellte Datenbank. - .. Dazu als Super User (_postgres_) mit der neuen Database `$DB_NAME` verbinden und folgendes SQL-Statement ausführen: +.. Dazu als Super User (_postgres_) mit der neuen Database `$DB_NAME` verbinden und folgendes SQL-Statement ausführen: [source,sql] ---- CREATE EXTENSION IF NOT EXISTS postgis; ---- + +[[konfiguration-xplandb-liquibase]] +==== Liquibase + +Um die XPlanDB einzurichten ist die Installation von https://www.liquibase.com/download[Liquibase] 4.27+ erforderlich. +Liquibase benötigt ein <<jdk>> und einen aktuellen JDBC-Treiber für die <<datenbank>>. + +Für die initiale Installation und auch Aktualisierungen sind folgende Schritte erforderlich: + +- Download und Installation von Liquibase wie in der https://docs.liquibase.com/start/install/home.html[Dokumentation] beschrieben. +- Nach der Installation sollte der Aufruf von `liquibase --version` möglich sein: +[source,bash] +---- +export LIQUIBASE_HOME=/Users/admin/Downloads/liquibase-4.27.0 +$LIQUIBASE_HOME/liquibase --version +---- +- Ausführen der Liquibase-Skripte +[source,bash] +---- +$LIQUIBASE_HOME/liquibase + --driver org.postgresql.Driver \ <1> + --classpath=./org/postgresql/postgresql/42.7.3/postgresql-42.7.3.jar \ <2> + --search-path=changelog \ <3> + --changelog-file=changelog_xplandb.yaml \ <4> + --url=$XPLAN_JDBC_URL \ <5> + --username=$XPLAN_DB_INIT_USER \ <6> + --password=$XPLAN_DB_INIT_PASSWORD \ <7> + update <8> + -Dxplan.db.user=$XPLAN_DB_USER <9> + -Dxplan.srid=$XPLAN_SERVICES_DEFAULT_CRS_SRID <10> +---- +<1> ein JDBC-Treiber für PostgreSQL ist in Liquibase enthalten (optional) +<2> Pfad zu JDBC-Treiber (optional) +<3> Pfad zu den Liquibase Changelog-Dateien (optional) +<4> Liquibase-Datei für die XPlanDB _changelog_xplandb.yaml_ +<5> JDBC URL, z.B. `jdbc:postgresql://localhost:5432/xplanbox` +<6> Benutzername, `$DB_INIT_USER` aus <<konfiguration-xplandb>> +<7> Passwort für den Benutzer, `$DB_INIT_PASSWORD` aus <<konfiguration-xplandb>> +<8> Liquibase Kommando https://docs.liquibase.com/commands/update/update.html[Update] +<9> Benutzername, `$DB_USER` aus <<konfiguration-xplandb>> +<10> PostGIS SRID in dem die Daten gespeichert werden, z.B. `25832` + +[[konfiguration-xplandb-sql]] +==== SQL-Skripte +Für die initiale Installation der XPlanDB mit den bereitgestellten SQL-Skripten sind folgende Schritte erforderlich: + - Das SQL-Skript _create.sql_ aus dem Verzeichnis _xplan-manager-workspace/sql_ in der neu angelegten Datenbank in der Rolle `$DB_INIT_USER` ausführen. + +Für die Bereitstellung von Plänen als INSPIRE PLU konforme Datensätze ist ein weiteres Datenbankschema erforderlich und es müssen zusätzlich die folgenden Schritte ausgeführt werden: + +. Die SQL-Skripte aus dem Verzeichnis _xplan-manager-workspace/sql/inspireplu_ in der neu angelegten Datenbank ausführen (in der genannten Reihenfolge): +.. _01_create_inspireplu_schema.sql_ +.. _02_create_inspireplu_view.sql_ + +NOTE: Weitere Informationen zu der Erstellung der XPlanDB im Anhang <<appendix_xplandb_skript>>. + +IMPORTANT: Ab Version 7.2 ist die Einrichtung der XPlanDB mit SQL-Skripten veraltet (deprecated). Die SQL-Skripte werden in zukünftigen Version der xPlanBox nicht mehr mit ausgeliefert. Die Einrichtung und Aktualisierung der XPlanDB muss dann über <<konfiguration-xplandb-liquibase,Liquibase>> erfolgen. + +==== Datenbankverbindungen anpassen + - Anpassen der Datenbank-Verbindungen in den XPlanDiensten und im XPlanManagerWorkspace unter Verwendung der Rolle `$DB_USER`: .. _<DEEGREE_WORKSPACE_ROOT>/xplan-manager-workspace/jdbc/xplan.xml_ .. _<DEEGREE_WORKSPACE_ROOT>/xplan-services-wfs-workspace/jdbc/xplan.xml_ @@ -29,22 +88,9 @@ CREATE EXTENSION IF NOT EXISTS postgis; .. _<DEEGREE_WORKSPACE_ROOT>/xplan-services-wms-workspace/jdbc/xplan.xml_ . Anpassen der Datenbank-Verbindungen im XPlanValidatorWMS, wenn die persistente Datenhaltung verwendet wird (siehe <<konfiguration-xplanvalidatorwms>>) .. _<DEEGREE_WORKSPACE_ROOT>/xplan-webservices-validator-wms-sql-workspace/jdbc/xplan.xml_ - -NOTE: Weitere Informationen zu der Erstellung der XPlanDB im Anhang <<appendix_xplandb_skript>>. - -[[aufsetzen-plu-db-schema]] -==== Erstellen der Datenbank für INSPIRE PLU - -Für die Bereitstellung von Plänen, die vom XPlanManager verwaltet werden, als INSPIRE PLU konforme Datensätze ist ein weiteres Datenbankschema erforderlich. - -Es müssen die folgenden Schritte ausgeführt werden: - - . Die folgenden SQL-Skripte aus dem Verzeichnis _xplan-manager-workspace/sql/inspireplu_ in der neu angelegten Datenbank ausführen (in der genannten Reihenfolge): - .. _01_create_inspireplu_schema.sql_ - .. _02_create_inspireplu_view.sql_ - . Anpassen der Datenbank-Verbindungen in den XPlanDiensten und im XPlanManagerWorkspace: - .. _<DEEGREE_WORKSPACE_ROOT>/xplan-webservices-inspireplu-workspace/jdbc/inspireplu.xml_ - .. _<DEEGREE_WORKSPACE_ROOT>/xplan-manager-workspace/jdbc/inspireplu.xml_ +. Anpassen der Datenbank-Verbindungen in den XPlanDiensten und im XPlanManagerWorkspace, wenn die Bereitstellung für INSPIRE PLU erfolgen soll: +.. _<DEEGREE_WORKSPACE_ROOT>/xplan-webservices-inspireplu-workspace/jdbc/inspireplu.xml_ +.. _<DEEGREE_WORKSPACE_ROOT>/xplan-manager-workspace/jdbc/inspireplu.xml_ ==== Weiterführende Informationen zur Konfiguration des Datenbankzugriffs diff --git a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/konfiguration/manager/koordinatensystem.adoc b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/konfiguration/manager/koordinatensystem.adoc index 429bfdb7b7ea8f753c24b7a2e61d3d50251de0cc..dfd7a684a82a51baa921d22bf7acfe67d8f9ac87 100644 --- a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/konfiguration/manager/koordinatensystem.adoc +++ b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/konfiguration/manager/koordinatensystem.adoc @@ -44,14 +44,14 @@ rasterConfigurationCrs=EPSG:25832 Als Vorgabewert für das Standard-Koordinatenreferenzsystem wird EPSG:25832 in allen Konfigurationsdateien gesetzt. Wenn das Standard-Koordinatenreferenzsystem der Datenhaltung geändert werden soll, dann ist eine Anpassung sowohl der Konfiguration für <<crs-vektordaten>> und <<crs-rasterdaten>> als auch eine Anpassung an den Konfigurationsdateien für die SQLFeatureStore und der XPlanDB erforderlich. -Um die Datenhaltung der XPlanDB z. B. auf EPSG:25833 umzustellen müssen in allen SQLFeatureStore-Dateien die Angabe des `StorageCRS` und der Angabe des PostGIS `srid` wie folgt angepasst werden: +Um die Datenhaltung der XPlanDB z. B. auf EPSG:25833 umzustellen müssen in allen SQLFeatureStore-Dateien die Angabe des `StorageCRS` und der Angabe des PostGIS SRID wie folgt angepasst werden: [source,xml] ---- <StorageCRS srid="25833" dim="2D">EPSG:25833</StorageCRS> ---- -Um die notwendigen Änderungen auch an der XPlanDB vorzunehmen, müssen für alle Geometrie-Spalten der XPlanDB das PostGIS `srid` gesetzt werden. +Um die notwendigen Änderungen auch an der XPlanDB vorzunehmen, müssen für alle Geometrie-Spalten der XPlanDB das PostGIS SRID gesetzt werden. Hier am Beispiel für das Schema `xplan60` für die Spalte `bbox` der Tabelle `feature_types`: ---- diff --git a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/ueberblick.adoc b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/ueberblick.adoc index 4590d589d0763a9aa16e1f9a121e816ef4e5648e..ba93203e776ab55d3df08932e660644ff7e9c771 100644 --- a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/ueberblick.adoc +++ b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/ueberblick.adoc @@ -79,7 +79,7 @@ Um eine spätere Trennung der Dienste (Web-Anwendungen) zu gewährleisten, wird TIP: Empfohlen wird Apache Tomcat Version 9.0+. [[datenbank]] -=== Datenbank +=== PostgreSQL Datenbank Als Datenbanksystem ist eine https://www.postgresql.org[PostgreSQL-Datenbank] mit installierter https://postgis.net/[PostGIS-Erweiterung] erforderlich.