From fdcbfc93e89fd9d511931263a302b8ebcc9e1e00 Mon Sep 17 00:00:00 2001
From: Nikolaus Krismer <nikolaus.krismer@uibk.ac.at>
Date: Wed, 27 May 2015 17:03:22 +0200
Subject: [PATCH] using multiple bootstrap shell script (so on dbis-isochrone
 data can be imported without running virtualbox machine)

---
 Vagrantfile                                   |   4 +-
 bootstrap/config.sh                           | 123 +++++++
 bootstrap/createDatabase.sh                   |  69 ++++
 bootstrap/importData.sh                       | 201 +++++++++++
 .../prepareEnvironment.sh                     | 331 +++---------------
 5 files changed, 436 insertions(+), 292 deletions(-)
 create mode 100755 bootstrap/config.sh
 create mode 100755 bootstrap/createDatabase.sh
 create mode 100755 bootstrap/importData.sh
 rename bootstrap.sh => bootstrap/prepareEnvironment.sh (70%)
 mode change 100644 => 100755

diff --git a/Vagrantfile b/Vagrantfile
index dd20e08..6b0cec5 100644
--- a/Vagrantfile
+++ b/Vagrantfile
@@ -60,7 +60,9 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
   config.vm.synced_folder "log/bootstrap", "/var/log/vagrant_bootstrap", create: true, owner: "vagrant", group: "vagrant"
 
   # Setup environment on startup (done using a shell script)
-  config.vm.provision "shell", path: "bootstrap.sh", args: ["niko", "secretPhdPassword#2014!", (isLocalMode ? "true" : "false")]
+  config.vm.provision "shell", path: "bootstrap/prepareEnvironment.sh", args: ["secretPhdPassword#2014!", (isLocalMode ? "true" : "false")]
+  config.vm.provision "shell", path: "bootstrap/createDatabase.sh", args: ["niko", "secretPhdPassword#2014!"]
+  config.vm.provision "shell", path: "bootstrap/importData.sh", args: ["niko", "secretPhdPassword#2014!", (isLocalMode ? "true" : "false")]
 
   # Network configuration
   config.vm.network :forwarded_port, guest: 5432, host: 5432, id: "postgresql", auto_correct: false
diff --git a/bootstrap/config.sh b/bootstrap/config.sh
new file mode 100755
index 0000000..c1c26f7
--- /dev/null
+++ b/bootstrap/config.sh
@@ -0,0 +1,123 @@
+#!/bin/bash
+#############################
+# This is used to configure the behaviout of the various bootstrap scripts.
+#############################
+
+IMPORT_DATA_OSM=false
+IMPORT_DATA_OSM_CACHED=false
+IMPORT_DATA_SQL=true
+IMPORT_SCHEDULES=true
+
+INSTALL_GEOSERVER=false
+INSTALL_HTTPD=true
+# install isochrone from vagrant start directory (eclipse project)
+INSTALL_ISOCHRONE_LOCAL=false
+# install latest isochrone release from nexus repository
+INSTALL_ISOCHRONE_RELEASE=true
+# install latest isochrone snapshot from nexus repository
+INSTALL_ISOCHRONE_SNAPSHOT=true
+# install latest isochrone tools from nexus repository
+INSTALL_ISOCHRONE_TOOLS=true
+INSTALL_NEO4J=false
+INSTALL_NEO4J_SPATIAL=false
+INSTALL_PGROUTING=false
+INSTALL_POSTGIS=true
+INSTALL_POSTGRES=true
+INSTALL_POSTGRES_ADMIN=true
+INSTALL_PROJECT_PSIPROBE=true
+
+CACHE_DIR_LOCAL="/tmp/vagrant-cache"
+CACHE_DIR_REMOTE="http://dbis-informatik.uibk.ac.at/static/ma/niko/isochrone"
+DEPLOY_DIR="/opt"
+SETUP_DIR="/setup"
+WORKING_DIR="/var/log/vagrant_bootstrap"
+
+# Parameters that can also (some must) be passed as arguments
+IS_LOCAL_TEST_DEPLOY=false
+PG_DB_NAME="isochrone"
+PG_DB_USER="@db_username@"
+PG_DB_PASSWORD="@db_password@"
+TOMCAT_PASSWORD="@tomcat_password@"
+
+############################
+# Calculated variables
+############################
+
+# Do not change anything below this line!
+
+EXEC_POSTGRES="psql"
+POSTGRES_SHARE="/usr/share/pgsql"
+if [ ! -d ${POSTGRES_SHARE} ]; then
+	POSTGRES_SHARE="$(dirname /usr/pgsql*/.)""/share"
+fi
+
+AVAILABLE_GEOSERVER=$([ -d "${DEPLOY_DIR}/geoserver" ] && echo true || echo false)
+AVAILABLE_NEO4J=$([ -d "${DEPLOY_DIR}/neo4j" ] && echo true || echo false)
+AVAILABLE_NEO4J_SPATIAL=$([ -d "${DEPLOY_DIR}/neo4j-spatial" ] && echo true || echo false)
+AVAILABLE_POSTGRES=$(type ${EXEC_POSTGRES} >/dev/null 2>&1 && echo true || echo false)
+AVAILABLE_POSTGIS=$([ -f "${POSTGRES_SHARE}/extension/postgis.control" ] && echo true || echo false)
+AVAILABLE_PGROUTING=$([ -f "${POSTGRES_SHARE}/extension/pgrouting.control" ] && echo true || echo false)
+
+DOWNLOAD_DIR="${CACHE_DIR_LOCAL}/wget"
+if [ ! -f "${SETUP_DIR}" ]; then
+	SCRIPT="$(readlink -f ${BASH_SOURCE[0]})"
+	SCRIPT_DIR="$(dirname ${SCRIPT})"
+	SETUP_DIR="$(dirname ${SCRIPT_DIR})"
+fi
+SHARED_CONF_DIR="${SETUP_DIR}/conf"
+SHARED_IMG_DIR="${SETUP_DIR}/img"
+
+# Function definitions
+
+fn_arg2boolean() {
+	local OUTVAR="${1}"
+	local ARG="${2}"
+	local VALUE="${3}" # Default value
+	 
+	if [ -n "$ARG" ]; then
+		if [ "$ARG" == "true" ]; then
+			VALUE=true
+		else
+			VALUE=false
+		fi
+	fi
+
+	eval $OUTVAR="\$VALUE"
+}
+
+fn_arg2string() {
+	local OUTVAR="${1}"
+	local ARG="${2}"
+	local VALUE="${3}" # Default value
+
+	if [ "${VALUE:0:1}" == "@" ]; then
+			VALUE="${ARG}"
+	fi
+	if [ "${VALUE:0:1}" == "@" ]; then
+		echo '- No (or invalid) database user supplied!'
+		exit 1
+	fi
+
+	eval $OUTVAR="\$VALUE"
+}
+
+fn_download() {
+	local FILE="$1"
+	local URL="$2"
+
+	if wget --no-check-certificate -q -O /dev/null "$URL"; then
+		wget --no-check-certificate -q -O "$FILE" "$URL"
+	fi
+}
+
+fn_download_newer() {
+	# "wget -N" does not work with "-O" option... so we use a workaround here
+	local FILE="$1"
+	local URL="$2"
+
+	if [ ! -f "$FILE" ]; then
+		if wget --no-check-certificate -q -O /dev/null "$URL"; then
+			wget --no-check-certificate -q -O "$FILE" "$URL"
+		fi
+	fi
+}
diff --git a/bootstrap/createDatabase.sh b/bootstrap/createDatabase.sh
new file mode 100755
index 0000000..8debd54
--- /dev/null
+++ b/bootstrap/createDatabase.sh
@@ -0,0 +1,69 @@
+#! /bin/bash
+#############################
+# This script creates postgis (and pgRouting) databases.
+#############################
+
+if [ "$EUID" -ne "0" ]; then
+	echo '- This script must be run as root!'
+	exit 1
+fi
+
+############################
+# Variable definitions     #
+############################
+
+SCRIPT="$(readlink -f ${BASH_SOURCE[0]})"
+SCRIPT_DIR="$(dirname ${SCRIPT})"
+if [ ! -f "${SCRIPT_DIR}/config.sh" ]; then
+	# If config.properties is not besides the bash-script (most likely because vagrant uploaded it into the guest)
+	# we will try to find it in the shared folder
+	SCRIPT_DIR="/vagrant/bootstrap"
+fi
+if [ ! -f "${SCRIPT_DIR}/config.sh" ]; then
+	echo '- No variable declarations found (config.properties file not found)!'
+	exit 1;
+fi
+source "${SCRIPT_DIR}/config.sh"
+
+fn_arg2string PG_DB_USER "${1}" "${PG_DB_USER}"
+fn_arg2string PG_DB_PASSWORD "${2}" "${PG_DB_PASSWORD}"
+
+######################
+# Database creation  #
+######################
+
+echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
+echo " Preparing the database ($(date +%H:%M:%S)):"
+echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
+
+START=$(date +%s)
+
+if $AVAILABLE_POSTGRES; then
+	echo "Creating postgresql database \"$PG_DB_NAME\""
+	sudo -u "postgres" ${EXEC_POSTGRES} -d template1 -c "CREATE DATABASE \"$PG_DB_NAME\";" >> $WORKING_DIR/setup_database.log 2>&1
+	sudo -u "postgres" ${EXEC_POSTGRES} -d "$PG_DB_NAME" -c "CREATE USER \"$PG_DB_USER\" WITH PASSWORD '$PG_DB_PASSWORD';" >> $WORKING_DIR/setup_database.log 2>&1
+	sudo -u "postgres" ${EXEC_POSTGRES} -d "$PG_DB_NAME" -c "ALTER DATABASE \"$PG_DB_NAME\" OWNER TO \"$PG_DB_USER\";" >> $WORKING_DIR/setup_database.log 2>&1
+	sudo -u "postgres" ${EXEC_POSTGRES} -d "$PG_DB_NAME" -c "GRANT ALL PRIVILEGES ON DATABASE \"$PG_DB_NAME\" TO \"$PG_DB_USER\";" >> $WORKING_DIR/setup_database.log 2>&1
+	sudo -u "postgres" ${EXEC_POSTGRES} -d "$PG_DB_NAME" -c "ALTER SCHEMA public OWNER TO \"$PG_DB_USER\";" >> $WORKING_DIR/setup_database.log 2>&1
+	sudo -u "postgres" ${EXEC_POSTGRES} -d "$PG_DB_NAME" -c "ALTER ROLE \"$PG_DB_USER\" SUPERUSER;" >> $WORKING_DIR/setup_database.log 2>&1
+
+	if $AVAILABLE_POSTGIS; then
+		echo "Registering postgis extension for database \"$PG_DB_NAME\""
+		PGPASSWORD="$PG_DB_PASSWORD" ${EXEC_POSTGRES} -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -c "CREATE EXTENSION postgis;" >> $WORKING_DIR/setup_database.log 2>&1
+		PGPASSWORD="$PG_DB_PASSWORD" ${EXEC_POSTGRES} -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -f $SHARED_CONF_DIR/pg_procedures.sql >> $WORKING_DIR/setup_database.log 2>&1
+		PGPASSWORD="$PG_DB_PASSWORD" ${EXEC_POSTGRES} -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -f $SHARED_CONF_DIR/srid_82344_insert.sql >> $WORKING_DIR/setup_database.log 2>&1
+	fi
+	
+	if $AVAILABLE_PGROUTING; then
+		echo "Registering pgRouting extension for database \"$PG_DB_NAME\""
+		PGPASSWORD="$PG_DB_PASSWORD" ${EXEC_POSTGRES} -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -c "CREATE EXTENSION pgRouting;" >> $WORKING_DIR/setup_database.log 2>&1
+	fi
+fi
+
+END=$(date +%s)
+TOTAL=$(( $END - $START ))
+
+echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
+echo " Database prepared"
+printf 'Time to prepare the database: %dh:%dm:%ds\n' $(($TOTAL/3600)) $(($TOTAL%3600/60)) $(($TOTAL%60))
+echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
diff --git a/bootstrap/importData.sh b/bootstrap/importData.sh
new file mode 100755
index 0000000..6a00250
--- /dev/null
+++ b/bootstrap/importData.sh
@@ -0,0 +1,201 @@
+#! /bin/bash
+#############################
+# This script imports data (e.g. from the road network of bolzano) that is
+# downloaded from osm (OpenStreetMap) and then imported into available
+# databases (neo4j and postgresql).
+#############################
+
+if [ "$EUID" -ne "0" ]; then
+	echo '- This script must be run as root!'
+	exit 1
+fi
+
+############################
+# Variable definitions     #
+############################
+
+SCRIPT="$(readlink -f ${BASH_SOURCE[0]})"
+SCRIPT_DIR="$(dirname ${SCRIPT})"
+if [ ! -f "${SCRIPT_DIR}/config.sh" ]; then
+	# If config.properties is not besides the bash-script (most likely because vagrant uploaded it into the guest)
+	# we will try to find it in the shared folder
+	SCRIPT_DIR="/vagrant/bootstrap"
+fi
+if [ ! -f "${SCRIPT_DIR}/config.sh" ]; then
+	echo '- No variable declarations found (config.properties file not found)!'
+	exit 1;
+fi
+source "${SCRIPT_DIR}/config.sh"
+
+if ! $IMPORT_DATA_OSM && ! $IMPORT_DATA_OSM_CACHED && ! $IMPORT_DATA_SQL; then
+	exit 0
+fi
+
+fn_arg2string PG_DB_USER "${1}" "${PG_DB_USER}"
+fn_arg2string PG_DB_PASSWORD "${2}" "${PG_DB_PASSWORD}"
+fn_arg2boolean IS_LOCAL_TEST_DEPLOY "${3}" "${IS_LOCAL_TEST_DEPLOY}"
+
+############################
+# Function definitions     #
+############################
+
+fn_import_data() {
+	local NAME="$1"
+	local OSM_FILE="$2"
+	local OSM_FILE_FILTERED="$3"
+	local BOUNDING="$4"
+	local SQL_EXPORT_FILE="$5"
+	local TABLE_PREFIX="$6"
+
+	local VALID_OSM=false
+	local VALID_SQL=false
+	if $IMPORT_DATA_SQL && $AVAILABLE_POSTGIS && $IMPORT_SCHEDULES; then
+		if [ -n "$SQL_EXPORT_FILE" ]; then
+			VALID_SQL=true
+		fi
+	fi
+	if ( $AVAILABLE_PGROUTING || $AVAILABLE_NEO4J_SPATIAL ) && ( $IMPORT_DATA_OSM_CACHED || $IMPORT_DATA_OSM ); then
+		# osm data does not need to be downloaded (since it would not be imported afterwards)
+		VALID_OSM=true
+	fi
+
+	echo "Importing data for region of $NAME"
+	if ! ( $VALID_SQL || $VALID_OSM ); then
+		echo "  - skipping import"
+		return 1
+	fi
+
+	if $VALID_SQL; then
+		echo "  - downloading sql export"
+		fn_download_newer $DOWNLOAD_DIR/$SQL_EXPORT_FILE $CACHE_DIR_REMOTE/$SQL_EXPORT_FILE
+		cp $DOWNLOAD_DIR/$SQL_EXPORT_FILE $DEPLOY_DIR/$SQL_EXPORT_FILE >> /dev/null 2>&1
+
+		echo "  - importing sql export into postgis database"
+		gunzip -c $DEPLOY_DIR/$SQL_EXPORT_FILE | PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost "$PG_DB_NAME" >> "$WORKING_DIR/import_schedule_$NAME.log" 2>&1
+
+		echo "  - getting table permissions"
+		tables=`PGPASSWORD="$PG_DB_PASSWORD" psql -qAt -U "$PG_DB_USER" -h localhost -c "SELECT tablename FROM pg_tables WHERE schemaname = 'public' AND tableowner = 'postgres';" "$PG_DB_NAME"`
+
+		echo "  - fixing table permissions"
+		for tbl in $tables ; do
+			PGPASSWORD="$PG_DB_PASSWORD" psql -qAt -U "$PG_DB_USER" -h localhost -c "ALTER TABLE $tbl OWNER TO $PG_DB_USER" "$PG_DB_NAME";
+		done
+	fi
+
+	if ! $VALID_OSM; then
+		return 0
+	fi
+
+	if $IMPORT_DATA_OSM_CACHED; then
+		echo "  - downloading cached OpenStreetMap file"
+		fn_download_newer $DOWNLOAD_DIR/$OSM_FILE_FILTERED $CACHE_DIR_REMOTE/$OSM_FILE_FILTERED
+		cp $DOWNLOAD_DIR/$OSM_FILE_FILTERED $DEPLOY_DIR/$OSM_FILE_FILTERED >> /dev/null 2>&1
+	fi
+
+	if [ ! -f $DEPLOY_DIR/$OSM_FILE_FILTERED ]; then
+		if $IMPORT_DATA_OSM; then
+			echo "  - downloading OpenStreetMap file (no cached file found)"
+			OSM_FILENAME=$DOWNLOAD_DIR/${OSM_FILE##*/}
+			fn_download_newer $OSM_FILENAME $OSM_DOWNLOAD_MIRROR/$OSM_FILE
+	
+			echo "  - filtering OpenStreetMap data"
+			if [[ "$BOUNDING" == *.poly ]]; then
+				$DEPLOY_DIR/osmosis/bin/osmosis --read-pbf file="$OSM_FILENAME" --bounding-polygon file="$BOUNDING" --way-key keyList="$OSM_KEYS" --used-node --write-xml file="$DEPLOY_DIR/$OSM_FILE_FILTERED" >> "initialize_osmData_$NAME.log" 2>&1
+			else
+				$DEPLOY_DIR/osmosis/bin/osmosis --read-pbf file="$OSM_FILENAME" --bounding-box $BOUNDING --way-key keyList="$OSM_KEYS" --used-node --write-xml file="$DEPLOY_DIR/$OSM_FILE_FILTERED" >> "initialize_osmData_$NAME.log" 2>&1
+			fi
+		else
+			echo "  - problems with downloading cached osm file... this will most likely lead cause errors"		
+		fi
+	fi
+
+	if $AVAILABLE_PGROUTING; then
+		echo "  - importing filtered OpenStreetMap data into pgRouting"
+		$DEPLOY_DIR/osm2pgrouting/build/osm2pgrouting -file "$DEPLOY_DIR/$OSM_FILE_FILTERED" -conf "$OSM2PGROUTING_MAPPING_CONF" -dbname $PG_DB_NAME -user $PG_DB_USER -passwd $PG_DB_PASSWORD -clean -prefixtables $TABLE_PREFIX >> "import_osm2pgrouting_$NAME.log" 2>&1
+
+		echo "  - creating pgRouting topology"
+		PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -c "SELECT pgr_createTopology('${TABLE_PREFIX}ways', $TOPOLOGY_TOLERANCE, 'the_geom', 'gid');" >> "$WORKING_DIR/setup_database_$NAME.log" 2>&1
+	fi
+
+	if $AVAILABLE_NEO4J_SPATIAL; then
+		echo "  - importing filtered OpenStreetMap data into neo4j-spatial"
+		cd $DEPLOY_DIR/neo4j-spatial
+		mvn exec:java -Dexec.mainClass=org.neo4j.gis.spatial.osm.OSMImporter -Dexec.args="$DEPLOY_DIR/neo4j/data/graph.db $DEPLOY_DIR/$OSM_FILE_FILTERED" >> $WORKING_DIR/import_osm2neo4j.log 2>&1
+		cd $WORKING_DIR
+	fi
+
+	return 0
+}
+
+################
+# Data import  #
+################
+
+echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
+echo " Importing datasets ($(date +%H:%M:%S)):"
+echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
+
+START=$(date +%s)
+
+# Import real world datasets
+fn_import_data "Bozen" "$OSM_FILE_ITALY" "$OSM_FILE_BZ_FILTERED" "$OSM_BBOX_BZ" "bz_export.sql.gz" "$TABLE_PREFIX_BZ"
+fn_import_data "Innsbruck" "$OSM_FILE_AUSTRIA" "$OSM_FILE_IBK_FILTERED" "$OSM_BBOX_IBK" "" "$TABLE_PREFIX_IBK"
+fn_import_data "San Francisco" "$OSM_FILE_CALIFORNIA" "$OSM_FILE_SF_FILTERED" "$OSM_BBOX_SF" "sf_export.sql.gz" $TABLE_PREFIX_SF
+#if ! $IS_LOCAL_TEST_DEPLOY; then
+#	fn_import_data "Italy" "$OSM_FILE_ITALY" "$OSM_FILE_IT_FILTERED" "$OSM_BBOX_IT" "it_export.sql.gz" $TABLE_PREFIX_IT
+#	fn_import_data "Alto Adige" "$OSM_FILE_ITALY" "$OSM_FILE_ST_FILTERED" "$OSM_BBOX_ST" "st_export.sql.gz" $TABLE_PREFIX_ST
+#fi
+
+# Generate synthetic data
+if $AVAILABLE_POSTGIS && $INSTALL_ISOCHRONE_TOOLS; then
+	java -cp $DOWNLOAD_DIR/isochrone-tools.jar at.uibk.dbis.isochrone.generator.GridNetworkGenerator -d 100 -l 60 > "$WORKING_DIR/generate_gridNetwork.log" 2>&1
+	java -cp $DOWNLOAD_DIR/isochrone-tools.jar at.uibk.dbis.isochrone.generator.SpiderNetworkGenerator -d 6 -lvl 1000 -l 60 > "$WORKING_DIR/generate_spiderNetwork.log" 2>&1
+fi
+
+if $AVAILABLE_GEOSERVER; then
+	if $AVAILABLE_NEO4J_SPATIAL; then
+		echo "Configuring neo4j data permissions for geoserver"
+		chown -R $TOMCAT_USER:$TOMCAT_USER $DEPLOY_DIR/neo4j/data/graph.db
+	fi
+
+	echo "Configuring geoserver $GEOSERVER_VERSION using geoserver-shell $GEOSERVER_SHELL_VERSION"
+	sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_ws.gs >> setup_geoserver_workspace.log 2>&1
+	sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_styles.gs >> setup_geoserver_styles.log 2>&1
+	cp $SHARED_IMG_DIR/* $DEPLOY_DIR/geoserver/data/styles >> setup_geoserver_styles.log 2>&1
+
+	if $AVAILABLE_NEO4J_SPATIAL; then
+		sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ds.gs >> setup_geoserver_neo4j.log 2>&1
+		sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_bz.gs >> setup_geoserver_neo4j.log 2>&1
+		sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_ibk.gs >> setup_geoserver_neo4j.log 2>&1
+		sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_sf.gs >> setup_geoserver_neo4j.log 2>&1
+		if ! $IS_LOCAL_TEST_DEPLOY; then
+#			sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_it.gs >> setup_geoserver_neo4j.log 2>&1
+#			sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_st.gs >> setup_geoserver_neo4j.log 2>&1
+			sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft.gs >> setup_geoserver_neo4j.log 2>&1
+		fi
+	fi
+	if $AVAILABLE_POSTGIS; then
+		# copy geoserver_setup_postgis_ds and replace username/password
+		cp $SHARED_CONF_DIR/geoserver_setup_postgis_ds.gs $WORKING_DIR/geoserver_setup_postgis_ds.gs
+		sed -i "s/@db_username@/$PG_DB_USER/" $WORKING_DIR/geoserver_setup_postgis_ds.gs
+		sed -i "s/@db_password@/$PG_DB_PASSWORD/" $WORKING_DIR/geoserver_setup_postgis_ds.gs
+
+		sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $WORKING_DIR/geoserver_setup_postgis_ds.gs >> setup_geoserver_postgis.log 2>&1
+		sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_bz.gs >> setup_geoserver_postgis.log 2>&1
+		sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_ibk.gs >> setup_geoserver_postgis.log 2>&1
+		sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_sf.gs >> setup_geoserver_postgis.log 2>&1
+		if ! $IS_LOCAL_TEST_DEPLOY; then
+#			sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_it.gs >> setup_geoserver_postgis.log 2>&1
+#			sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_st.gs >> setup_geoserver_postgis.log 2>&1
+			sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft.gs >> setup_geoserver_postgis.log 2>&1
+		fi
+	fi
+fi
+
+END=$(date +%s)
+TOTAL=$(( $END - $START ))
+
+echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
+echo " Datasets imported"
+printf 'Time to import the datasets: %dh:%dm:%ds\n' $(($TOTAL/3600)) $(($TOTAL%3600/60)) $(($TOTAL%60))
+echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
diff --git a/bootstrap.sh b/bootstrap/prepareEnvironment.sh
old mode 100644
new mode 100755
similarity index 70%
rename from bootstrap.sh
rename to bootstrap/prepareEnvironment.sh
index 17ae255..951a9f2
--- a/bootstrap.sh
+++ b/bootstrap/prepareEnvironment.sh
@@ -10,94 +10,46 @@
 #   - pgRouting
 #   - osmosis
 #   - osm2pgrouting
-# into a centos6 (32bit and 64bit) or centos7 (64bit only) environment
+# into a centos6 (32bit and 64bit) or centos7 (64bit only) environment.
 #
 # It can be used in the context of a Vagrantfile to configure a vagrant box and all
-# the installations can be configured using global variables (some packages are only
-# installed if their installed flag is set to "true")
-#
-# Some data (from the road network of innsbruck) is also downloaded (from osm) and
-# imported into the installed databases (neo4j and postgresql)
-# After various installations the installed services are started as well
+# the installations can be configured using the variables in the config.sh file.
+# After various installations are performed the installed services are started as well.
 ############################
 
-if [ -f "/var/vagrant_provision" ]; then
-	exit 0
-fi
-
 if [ "$EUID" -ne "0" ]; then
-	echo '- The bootstrap script must be run as root!'
+	echo '- This script must be run as root!'
 	exit 1
 fi
 
-############################
-# Variable definitions     #
-############################
-
-IMPORT_DATA_OSM=false
-IMPORT_DATA_OSM_CACHED=false
-IMPORT_DATA_SQL=true
-IMPORT_SCHEDULES=true
-INSTALL_GEOSERVER=false
-INSTALL_HTTPD=true
-INSTALL_ISOCHRONE_LOCAL=false # installs isochrone from vagrant start directory (eclipse project)
-INSTALL_ISOCHRONE_RELEASE=true # installs latest isochrone release from nexus repository
-INSTALL_ISOCHRONE_SNAPSHOT=true # installs latest isochrone snapshot from nexus repository
-INSTALL_ISOCHRONE_TOOLS=true # installs latest isochrone tools from nexus repository
-INSTALL_NEO4J=false
-INSTALL_NEO4J_SPATIAL=false
-INSTALL_PGROUTING=false
-INSTALL_POSTGIS=true
-INSTALL_POSTGRES=true
-INSTALL_POSTGRES_ADMIN=true
-INSTALL_PROJECT_PSIPROBE=true
+if [ -f "/var/vagrant_provision" ]; then
+	echo '- The box has already been provisioned'
+	exit 0
+fi
 
 ############################
-# Ext. argument handling   #
+# Variable definitions     #
 ############################
 
-IS_LOCAL_TEST_DEPLOY=false # will prevent install of projects if set to true
-PG_DB_NAME="isochrone"
-PG_DB_USER="@db_username@"
-PG_DB_PASSWORD="@db_password@"
-
-if [ ${PG_DB_USER:0:1} == "@" ]; then
-	PG_DB_USER=$1
+SCRIPT="$(readlink -f ${BASH_SOURCE[0]})"
+SCRIPT_DIR="$(dirname ${SCRIPT})"
+if [ ! -f "${SCRIPT_DIR}/config.sh" ]; then
+	# If config.properties is not besides the bash-script (most likely because vagrant uploaded it into the guest)
+	# we will try to find it in the shared folder
+	SCRIPT_DIR="/vagrant/bootstrap"
 fi
-if [ ${PG_DB_USER:0:1} == "@" ]; then
-	echo '- No (or invalid) database user supplied!'
-	exit 1
+if [ ! -f "${SCRIPT_DIR}/config.sh" ]; then
+	echo '- No variable declarations found (config.properties file not found)!'
+	exit 1;
 fi
+source "${SCRIPT_DIR}/config.sh"
 
-if [ ${PG_DB_PASSWORD:0:1} == "@" ]; then
-	PG_DB_PASSWORD=$2
-fi
-if [ ${PG_DB_PASSWORD:0:1} == "@" ]; then
-	echo '- No (or invalid) database password supplied!'
-	exit 1
-fi
+fn_arg2string PG_DB_PASSWORD "${1}" "${TOMCAT_PASSWORD}"
+fn_arg2boolean IS_LOCAL_TEST_DEPLOY "${2}" "${IS_LOCAL_TEST_DEPLOY}"
 
-if [ -n "$3" ]; then
-	if [ "$3" = "true" ]; then
-		IS_LOCAL_TEST_DEPLOY=true
-	fi
-fi
-
-############################
-# General configuration    #
-############################
-
-CACHE_DIR_LOCAL="/tmp/vagrant-cache"
-CACHE_DIR_REMOTE="http://dbis-informatik.uibk.ac.at/static/ma/niko/isochrone"
-DEPLOY_DIR="/opt"
-DOWNLOAD_DIR="$CACHE_DIR_LOCAL/wget"
-SHARED_CONF_DIR="/setup/conf"
-SHARED_IMG_DIR="/setup/img"
-WORKING_DIR="/var/log/vagrant_bootstrap"
-
-############################
-# Components configuration #
-############################
+######################################
+# Configuration (tool versions, ...) #
+######################################
 
 #Armadillo from epel is too new for postgis (version 4 instead of 3), so use hard-coded file here
 ARMADILLO_FILE="armadillo-3.800.2-1.el6.x86_64.rpm"
@@ -241,7 +193,6 @@ fi
 # Calculated configuration #
 ############################
 
-IMPORT_DATA=false
 INSTALL_JAVA=false
 INSTALL_MAVEN=false
 INSTALL_TOMCAT=false
@@ -253,9 +204,6 @@ if $IS_LOCAL_TEST_DEPLOY; then
 	INSTALL_ISOCHRONE_RELEASE=false
 	INSTALL_ISOCHRONE_SNAPSHOT=false
 fi
-if $IMPORT_DATA_OSM || $IMPORT_DATA_OSM_CACHED || $IMPORT_DATA_SQL; then
-	IMPORT_DATA=true
-fi
 if $INSTALL_GEOSERVER || $INSTALL_ISOCHRONE_LOCAL || $INSTALL_ISOCHRONE_RELEASE || $INSTALL_ISOCHRONE_SNAPSHOT || $INSTALL_PROJECT_PSIPROBE; then
 	INSTALL_TOMCAT=true
 fi
@@ -294,122 +242,10 @@ fi
 # Function definitions     #
 ############################
 
-fn_download()
-{
-	local FILE="$1"
-	local URL="$2"
-
-	if wget --no-check-certificate -q -O /dev/null "$URL"; then
-		wget --no-check-certificate -q -O "$FILE" "$URL"
-	fi
-}
-
-# "wget -N" does not work with "-O" option... so we use a workaround here
-fn_download_newer()
-{
-	local FILE="$1"
-	local URL="$2"
-
-	if [ ! -f "$FILE" ]; then
-		if wget --no-check-certificate -q -O /dev/null "$URL"; then
-			wget --no-check-certificate -q -O "$FILE" "$URL"
-		fi
-	fi
-}
-
-fn_import_data()
-{
-	local NAME="$1"
-	local OSM_FILE="$2"
-	local OSM_FILE_FILTERED="$3"
-	local BOUNDING="$4"
-	local SQL_EXPORT_FILE="$5"
-	local TABLE_PREFIX="$6"
-
-	local VALID_OSM=false
-	local VALID_SQL=false
-	if $IMPORT_DATA_SQL && $INSTALL_POSTGIS && $IMPORT_SCHEDULES; then
-		if [ -n "$SQL_EXPORT_FILE" ]; then
-			VALID_SQL=true
-		fi
-	fi
-	if ( $INSTALL_PGROUTING || $INSTALL_NEO4J_SPATIAL ) && ( $IMPORT_DATA_OSM_CACHED || $IMPORT_DATA_OSM ); then
-		# osm data does not need to be downloaded (since it would not be imported afterwards)
-		VALID_OSM=true
-	fi
-
-	echo "Importing data for region of $NAME"
-	if ! ( $VALID_SQL || $VALID_OSM ); then
-		echo "  - skipping import"
-		return 1
-	fi
-
-	if $VALID_SQL; then
-		echo "  - downloading sql export"
-		fn_download_newer $DOWNLOAD_DIR/$SQL_EXPORT_FILE $CACHE_DIR_REMOTE/$SQL_EXPORT_FILE
-		cp $DOWNLOAD_DIR/$SQL_EXPORT_FILE $DEPLOY_DIR/$SQL_EXPORT_FILE >> /dev/null 2>&1
-
-		echo "  - importing sql export into postgis database"
-		gunzip -c $DEPLOY_DIR/$SQL_EXPORT_FILE | PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost "$PG_DB_NAME" >> "$WORKING_DIR/import_schedule_$NAME.log" 2>&1
-
-		echo "  - getting table permissions"
-		tables=`PGPASSWORD="$PG_DB_PASSWORD" psql -qAt -U "$PG_DB_USER" -h localhost -c "SELECT tablename FROM pg_tables WHERE schemaname = 'public' AND tableowner = 'postgres';" "$PG_DB_NAME"`
-
-		echo "  - fixing table permissions"
-		for tbl in $tables ; do
-			PGPASSWORD="$PG_DB_PASSWORD" psql -qAt -U "$PG_DB_USER" -h localhost -c "ALTER TABLE $tbl OWNER TO $PG_DB_USER" "$PG_DB_NAME";
-		done
-	fi
-
-	if ! $VALID_OSM; then
-		return 0
-	fi
-
-	if $IMPORT_DATA_OSM_CACHED; then
-		echo "  - downloading cached OpenStreetMap file"
-		fn_download_newer $DOWNLOAD_DIR/$OSM_FILE_FILTERED $CACHE_DIR_REMOTE/$OSM_FILE_FILTERED
-		cp $DOWNLOAD_DIR/$OSM_FILE_FILTERED $DEPLOY_DIR/$OSM_FILE_FILTERED >> /dev/null 2>&1
-	fi
-
-	if [ ! -f $DEPLOY_DIR/$OSM_FILE_FILTERED ]; then
-		if $IMPORT_DATA_OSM; then
-			echo "  - downloading OpenStreetMap file (no cached file found)"
-			OSM_FILENAME=$DOWNLOAD_DIR/${OSM_FILE##*/}
-			fn_download_newer $OSM_FILENAME $OSM_DOWNLOAD_MIRROR/$OSM_FILE
-	
-			echo "  - filtering OpenStreetMap data"
-			if [[ "$BOUNDING" == *.poly ]]; then
-				$DEPLOY_DIR/osmosis/bin/osmosis --read-pbf file="$OSM_FILENAME" --bounding-polygon file="$BOUNDING" --way-key keyList="$OSM_KEYS" --used-node --write-xml file="$DEPLOY_DIR/$OSM_FILE_FILTERED" >> "initialize_osmData_$NAME.log" 2>&1
-			else
-				$DEPLOY_DIR/osmosis/bin/osmosis --read-pbf file="$OSM_FILENAME" --bounding-box $BOUNDING --way-key keyList="$OSM_KEYS" --used-node --write-xml file="$DEPLOY_DIR/$OSM_FILE_FILTERED" >> "initialize_osmData_$NAME.log" 2>&1
-			fi
-		else
-			echo "  - problems with downloading cached osm file... this will most likely lead cause errors"		
-		fi
-	fi
-
-	if $INSTALL_PGROUTING; then
-		echo "  - importing filtered OpenStreetMap data into pgRouting"
-		$DEPLOY_DIR/osm2pgrouting/build/osm2pgrouting -file "$DEPLOY_DIR/$OSM_FILE_FILTERED" -conf "$OSM2PGROUTING_MAPPING_CONF" -dbname $PG_DB_NAME -user $PG_DB_USER -passwd $PG_DB_PASSWORD -clean -prefixtables $TABLE_PREFIX >> "import_osm2pgrouting_$NAME.log" 2>&1
-
-		echo "  - creating pgRouting topology"
-		PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -c "SELECT pgr_createTopology('${TABLE_PREFIX}ways', $TOPOLOGY_TOLERANCE, 'the_geom', 'gid');" >> "$WORKING_DIR/setup_database_$NAME.log" 2>&1
-	fi
-
-	if $INSTALL_NEO4J_SPATIAL; then
-		echo "  - importing filtered OpenStreetMap data into neo4j-spatial"
-		cd $DEPLOY_DIR/neo4j-spatial
-		mvn exec:java -Dexec.mainClass=org.neo4j.gis.spatial.osm.OSMImporter -Dexec.args="$DEPLOY_DIR/neo4j/data/graph.db $DEPLOY_DIR/$OSM_FILE_FILTERED" >> $WORKING_DIR/import_osm2neo4j.log 2>&1
-		cd $WORKING_DIR
-	fi
-
-	return 0
-}
-
-fn_service_start()
-{
+fn_service_start() {
 	local SERVICE_NAME="$1"
 
+	echo "Starting service \"${SERVICE_NAME}\""
 	touch "service_start_$SERVICE_NAME.log" 2>&1
 	if [ "$DISTRI_TYPE" == "CentOS 6" ]; then
 		service $SERVICE_NAME start >> "service_start_$SERVICE_NAME.log" 2>&1
@@ -422,8 +258,7 @@ fn_service_start()
 	sleep 2
 }
 
-fn_service_stop()
-{
+fn_service_stop() {
 	local SERVICE_NAME="$1"
 
 	touch "service_stop_$SERVICE_NAME.log" 2>&1
@@ -438,13 +273,12 @@ fn_service_stop()
 	sleep 2
 }
 
-START=$(date +%s)
-
-echo ""
 echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
-echo " Performing basic system preparations:"
+echo " Performing basic system preparations ($(date +%H:%M:%S)):"
 echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
 
+START=$(date +%s)
+
 ############################
 # Basic preparations       #
 ############################
@@ -524,7 +358,7 @@ sed -i 's/enabled = 1/enabled = 0/' $REPO_RPMFORGE_CONFIG
 ############################
 
 echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
-echo " Bootstrapping the VM:"
+echo " Bootstrapping the VM ($(date +%H:%M:%S)):"
 echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
 echo "Operating system $DISTRI_NAME"
 echo "  - osType: $DISTRI_TYPE"
@@ -562,7 +396,7 @@ if $INSTALL_ISOCHRONE_SNAPSHOT; then echo "Importing project \"isochrone (testin
 if $INSTALL_ISOCHTONE_TOOLS; then echo "Importing project \"isochrone-tools\""; fi
 if $INSTALL_PROJECT_PSIPROBE; then echo "Importing project \"psi-probe\""; fi
 echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
-echo " Performing installations:"
+echo " Performing installations ($(date +%H:%M:%S)):"
 echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
 
 echo "Installing cmake"
@@ -839,8 +673,8 @@ if ( $IMPORT_DATA_OSM || $IMPORT_DATA_OSM_CACHED ) && $INSTALL_PGROUTING; then
 fi
 
 echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
-echo " Installations performed!"
-echo " Preparing services:"
+echo " Installations performed"
+echo " Preparing services ($(date +%H:%M:%S)):"
 echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
 
 if $INSTALL_POSTGRES; then
@@ -853,7 +687,7 @@ if $INSTALL_POSTGRES; then
 	fi
 	sleep 2
 
-	echo "Configuring postgresql-server"
+	echo "Configuring postgresql-server (permissions, logging, ...)"
 	mkdir -p /var/log/postgresql
 	chown postgres:postgres -R /var/log/postgresql
 
@@ -886,7 +720,7 @@ if $INSTALL_TOMCAT; then
 	chown -R $TOMCAT_USER:$TOMCAT_USER $DEPLOY_DIR/$TOMCAT_NAME >> install_tomcat.log 2>&1
 
 	cp $SHARED_CONF_DIR/tomcat-users.xml $DEPLOY_DIR/$TOMCAT_NAME/conf/tomcat-users.xml
-	sed -i "s/password=\"admin\"/password=\"$PG_DB_PASSWORD\"/" $DEPLOY_DIR/$TOMCAT_NAME/conf/tomcat-users.xml
+	sed -i "s/password=\"admin\"/password=\"$TOMCAT_PASSWORD\"/" $DEPLOY_DIR/$TOMCAT_NAME/conf/tomcat-users.xml
 
 	echo "Configuring tomcat default web.xml (enabling CORS filer)"
 	cp -f $SHARED_CONF_DIR/tomcat_web.xml $DEPLOY_DIR/$TOMCAT_NAME/conf/web.xml
@@ -915,8 +749,8 @@ if $INSTALL_POSTGIS && $INSTALL_GEOSERVER; then
 fi
 
 echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
-echo " Services prepared!"
-echo " Starting services:"
+echo " Services prepared"
+echo " Starting services ($(date +%H:%M:%S)):"
 echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
 
 if $INSTALL_HTTPD; then
@@ -932,91 +766,8 @@ if $INSTALL_TOMCAT; then
 	fn_service_start "$TOMCAT_NAME"
 fi
 
-if $INSTALL_POSTGRES; then
-	echo "Creating postgresql database $PG_DB_NAME"
-	sudo -u "postgres" psql -d template1 -c "CREATE DATABASE \"$PG_DB_NAME\";" >> $WORKING_DIR/setup_database.log 2>&1
-	sudo -u "postgres" psql -d "$PG_DB_NAME" -c "CREATE USER \"$PG_DB_USER\" WITH PASSWORD '$PG_DB_PASSWORD';" >> $WORKING_DIR/setup_database.log 2>&1
-	sudo -u "postgres" psql -d "$PG_DB_NAME" -c "ALTER DATABASE \"$PG_DB_NAME\" OWNER TO \"$PG_DB_USER\";" >> $WORKING_DIR/setup_database.log 2>&1
-	sudo -u "postgres" psql -d "$PG_DB_NAME" -c "GRANT ALL PRIVILEGES ON DATABASE \"$PG_DB_NAME\" TO \"$PG_DB_USER\";" >> $WORKING_DIR/setup_database.log 2>&1
-	sudo -u "postgres" psql -d "$PG_DB_NAME" -c "ALTER SCHEMA public OWNER TO \"$PG_DB_USER\";" >> $WORKING_DIR/setup_database.log 2>&1
-	sudo -u "postgres" psql -d "$PG_DB_NAME" -c "ALTER ROLE \"$PG_DB_USER\" SUPERUSER;" >> $WORKING_DIR/setup_database.log 2>&1
-fi
-
-if $INSTALL_POSTGIS; then
-	PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -c "CREATE EXTENSION postgis;" >> $WORKING_DIR/setup_database.log 2>&1
-	PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -f $SHARED_CONF_DIR/pg_procedures.sql >> $WORKING_DIR/setup_database.log 2>&1
-	PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -f $SHARED_CONF_DIR/srid_82344_insert.sql >> $WORKING_DIR/setup_database.log 2>&1
-fi
-
-if $INSTALL_PGROUTING; then
-	PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -c "CREATE EXTENSION pgRouting;" >> $WORKING_DIR/setup_database.log 2>&1
-fi
-
 echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
-echo " Services started!"
-if $IMPORT_DATA; then
-	echo " Importing data:"
-	echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
-
-	# Import real world datasets
-	fn_import_data "Bozen" "$OSM_FILE_ITALY" "$OSM_FILE_BZ_FILTERED" "$OSM_BBOX_BZ" "bz_export.sql.gz" "$TABLE_PREFIX_BZ"
-	fn_import_data "Innsbruck" "$OSM_FILE_AUSTRIA" "$OSM_FILE_IBK_FILTERED" "$OSM_BBOX_IBK" "" "$TABLE_PREFIX_IBK"
-	fn_import_data "San Francisco" "$OSM_FILE_CALIFORNIA" "$OSM_FILE_SF_FILTERED" "$OSM_BBOX_SF" "sf_export.sql.gz" $TABLE_PREFIX_SF
-#	if ! $IS_LOCAL_TEST_DEPLOY; then
-#		fn_import_data "Italy" "$OSM_FILE_ITALY" "$OSM_FILE_IT_FILTERED" "$OSM_BBOX_IT" "it_export.sql.gz" $TABLE_PREFIX_IT
-#		fn_import_data "Alto Adige" "$OSM_FILE_ITALY" "$OSM_FILE_ST_FILTERED" "$OSM_BBOX_ST" "st_export.sql.gz" $TABLE_PREFIX_ST
-#	fi
-
-	# Generate synthetic data
-	if $INSTALL_POSTGIS && $INSTALL_ISOCHRONE_TOOLS; then
-		java -cp $DOWNLOAD_DIR/isochrone-tools.jar at.uibk.dbis.isochrone.generator.GridNetworkGenerator -d 100 -l 60 > "$WORKING_DIR/generate_gridNetwork.log" 2>&1
-		java -cp $DOWNLOAD_DIR/isochrone-tools.jar at.uibk.dbis.isochrone.generator.SpiderNetworkGenerator -d 6 -lvl 1000 -l 60 > "$WORKING_DIR/generate_spiderNetwork.log" 2>&1
-	fi
-
-	if $INSTALL_GEOSERVER; then
-		if $INSTALL_NEO4J_SPATIAL; then
-			echo "Configuring neo4j data permissions for geoserver"
-			chown -R $TOMCAT_USER:$TOMCAT_USER $DEPLOY_DIR/neo4j/data/graph.db
-		fi
-
-		echo "Configuring geoserver $GEOSERVER_VERSION using geoserver-shell $GEOSERVER_SHELL_VERSION"
-		sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_ws.gs >> setup_geoserver_workspace.log 2>&1
-		sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_styles.gs >> setup_geoserver_styles.log 2>&1
-		cp $SHARED_IMG_DIR/* $DEPLOY_DIR/geoserver/data/styles >> setup_geoserver_styles.log 2>&1
-
-		if $INSTALL_NEO4J_SPATIAL; then
-			sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ds.gs >> setup_geoserver_neo4j.log 2>&1
-			sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_bz.gs >> setup_geoserver_neo4j.log 2>&1
-			sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_ibk.gs >> setup_geoserver_neo4j.log 2>&1
-			sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_sf.gs >> setup_geoserver_neo4j.log 2>&1
-			if ! $IS_LOCAL_TEST_DEPLOY; then
-#				sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_it.gs >> setup_geoserver_neo4j.log 2>&1
-#				sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_st.gs >> setup_geoserver_neo4j.log 2>&1
-				sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft.gs >> setup_geoserver_neo4j.log 2>&1
-			fi
-		fi
-		if $INSTALL_POSTGIS; then
-			# copy geoserver_setup_postgis_ds and replace username/password
-			cp $SHARED_CONF_DIR/geoserver_setup_postgis_ds.gs $WORKING_DIR/geoserver_setup_postgis_ds.gs
-			sed -i "s/@db_username@/$PG_DB_USER/" $WORKING_DIR/geoserver_setup_postgis_ds.gs
-			sed -i "s/@db_password@/$PG_DB_PASSWORD/" $WORKING_DIR/geoserver_setup_postgis_ds.gs
-
-			sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $WORKING_DIR/geoserver_setup_postgis_ds.gs >> setup_geoserver_postgis.log 2>&1
-			sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_bz.gs >> setup_geoserver_postgis.log 2>&1
-			sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_ibk.gs >> setup_geoserver_postgis.log 2>&1
-			sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_sf.gs >> setup_geoserver_postgis.log 2>&1
-			if ! $IS_LOCAL_TEST_DEPLOY; then
-#				sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_it.gs >> setup_geoserver_postgis.log 2>&1
-#				sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_st.gs >> setup_geoserver_postgis.log 2>&1
-				sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft.gs >> setup_geoserver_postgis.log 2>&1
-			fi
-		fi
-	fi
-
-	echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
-	echo "Data imported!"
-	echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
-fi
+echo " Services started"
 
 # Prevent second provision (done by check at the beginning of this file)
 touch /var/vagrant_provision
@@ -1024,7 +775,5 @@ touch /var/vagrant_provision
 END=$(date +%s)
 TOTAL=$(( $END - $START ))
 
-echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
-echo " All preparations done... the system can now be used"
-echo " Provisioning time: $TOTAL seconds"
+printf 'Time to prepare the environment: %dh:%dm:%ds\n' $(($TOTAL/3600)) $(($TOTAL%3600/60)) $(($TOTAL%60))
 echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
-- 
GitLab