Skip to content

dainst/gazetteer

Repository files navigation



Gazetteer ist eine Spring Boot-Anwendung. In diesem Repostiory befinden sich sowohl Frontend als auch Backend-Code. Das Frontend wird vom Backend geservt. Es werden lokale Instanzen von MongoDB und Elasticsearch benötigt.

Inhaltsverzeichnis

  1. Setup
  2. Tests
  3. Struktur
  4. Deployment
  5. Migration von 2.9.9 nach 3.0.0

Setup

Anforderungen

Konfiguration

Gazetteer enthält Defaults für Konfigurationswerte in der src/main/resources/application.properties. Bei Bedarf können diese als Umgebungsvariablen überschrieben werden.

Die Benennung der Umgebungsvariblen sind durch das Konfigurationsframework von Spring aus den Property-Namen generiert, siehe Relaxed Binding.

Für den Prodokutionsbetrieb müssen in der Regel diese Variablen gesetzt werden:

  • SMTPHOST
  • SMTPPORT
  • SENDERMAIL
  • MAILUSERNAME
  • MAILPASSWORD
  • NOTIFICATIONMAIL
  • CLUSTER_NAME
  • BASEURI
  • GEONAMESSOLRURI
  • TEMPDIRECTORYPATH
  • MONGOREPLICASET

In der Docker-Entwicklungsumgebung müssen keine Umgebungsvariablen gesetzt werden.

Entwicklungsumgebung

Es existiert eine compose.yml um eine Entwicklungsumgebung zu starten.

docker compose up --build startet:

  • mongodb: Eine MongoDB mit Testdaten
  • elasticsearch: ElasticSearch
  • gazetteer: iDAI.gazetteer
  • elasticsearch-init: Pusht die ElasticSearch Index Template, erstellt den Index und veranlasst eine Reindizierung.

Testdaten

Beim ersten Start des mongodb-Containers werden diese Testdaten importiert:

Siehe docker/mongo/setup.sh, falls die Daten manuell importiert werden müssen.

Indizierung

Eine Elasticsearch-Reindizierung kann bei laufendem Gazetteer über die Admin-API angestoßen werden:

curl -XPOST admin:password@localhost:8080/admin/reindex

(Zum Inhaltsverzeichnis)

Tests

Unit Tests

./mvnw test

API Tests

API Tests können erweitert werden, indem mit Bruno gazetteer_api_test als Workspace geöffnet wird.

Um die Tests nur auszuführen, kann die Bruno CLI installiert werden.

docker compose up
cd gazetteer_api_test
bru run

(Zum Inhaltsverzeichnis)

Struktur

Backend (Spring Boot) und Frontend (Javascript/AngularJS) werden im gleichen Projekt verwaltet. Der Quellcode des Backends liegt unter src/main/java, der des Frontends unter src/main/webapp/resources/js. Die AngularJS Views werden durch JSPs generiert und liegen unter src/main/webapp/WEB-INF/views/html/partials. Zusätzlich liegen unter src/main/scripts einige in Ruby geschriebene Skripte für den Im- und Export für spezifische Projekte.

i18n

UI-Texte werden in zwei Dateisets eingepflegt.

  • src/main/resources/messages_<sprache>.properties
  • src/main/webapps/resources/js/i18n/messages*<sprache>.js

(Zum Inhaltsverzeichnis)

Deployment

Maven Wrapper

Um die Applikation direkt von der Shell aus zu starten:

./mvnw spring-boot:run

Docker

Zur Erstellung eines Docker-Images:

./mvnw spring-boot:build-image -Dspring-boot.build-image.imageName=org.dainst/gazetteer

(Zum Inhaltsverzeichnis)

Migration von 2.9.9 nach 3.0.0

.properties

Die Konfigurationsdateien config.properties, mail.properties und elasticsearch.properties werden nicht mehr geladen. Siehe Konfiguration.

MongoDB Migration von 4 nach 8

Entwicklungs-Datenbank

Falls Daten nicht mehr benötigt werden:

docker compose rm mongodb
rm -rf .mongo-data

Falls Daten behalten werden sollen:

# Temporarily set version tag in docker-compose to '4.0'
docker compose exec mongodb mongodump --out /data/dump
docker compose rm mongodb
# Set version tag back to '8'
docker compose exec mongodb mongorestore /data/dump
rm -rf .mongo-data/dump

In Produktion (ohne Docker)

mongodump --out ./dump
# Update your MongoDB installation after mongodump
mongorestore ./dump
# Afterwards, verify that data is migrated and make a backup of dump

(Zum Inhaltsverzeichnis)

About

iDAI.gazetteer: geo-thesaurus publishing and management tool

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 12