#!/bin/sh
# $NetBSD: epsg-load,v 1.4 2007/08/14 17:19:20 joerg Exp $

# epsg - import EPSG data into a relational database

# Copyright (c) 2006,2007 Brook Milligan <brook@nmsu.edu>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above
#    copyright notice, this list of conditions and the following
#    disclaimer in the documentation and/or other materials provided
#    with the distribution.
# 3. The name of the author may not be used to endorse or promote
#    products derived from this software without specific prior
#    written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

set -e	# exit on error

HOST=
PORT=
DB=epsg
USERNAME=$USER

HELP=0
USE_PGSQL=0
USE_MYSQL=0

VERS=8_1
SRCDIR=/usr/pkg/share/epsg

PSQL=/usr/pkg/bin/psql
MYSQL=/usr/pkg/bin/mysql

if [ $# = 0 ]; then
    HELP=1
fi

while [ $# -gt 0 ]; do
    case $1 in
    --help) HELP=1;;
    --dbname) DB=$2; shift;;
    --host) HOST=$2; shift;;
    --mysql) USE_MYSQL=1;;
    --port) PORT=$2; shift;;
    --pgsql) USE_PGSQL=1;;
    --srcdir) SRCDIR=$2; shift;;
    --username) USERNAME=$2; shift;;
    *) HELP=1; echo "epsg: unrecognized option: $1";;
    esac
    shift;
done

if [ $HELP -eq 1 ]; then
    echo "epsg -- load the EPSG dataset into a database"
    echo "usage: epsg [options]"
    echo "options:"
    echo "  --help             [ print a help message             ]"
    echo "  --pgsql            [ connect to a PostgreSQL database ]"
    echo "  --mysql            [ connect to a mySQL database      ]"
    echo "  --host hostname    [ connect to a specific host       ]"
    echo "  --port port        [ connect to a specific port       ]"
    echo "  --dbname database  [ connect to a specific database   ]"
    echo "  --username user    [ connect as user                  ]"
    exit 1
fi

echo "epsg - importing EPSG data ..."
if [ "$HOST" != "" ]; then
    echo "  host:     $HOST"
    PSQL_FLAGS="$PSQL_FLAGS --host $HOST"
    MYSQL_FLAGS="$MYSQL_FLAGS --host=$HOST"
fi
if [ "$PORT" != "" ]; then
    echo "  port:     $PORT"
    PSQL_FLAGS="$PSQL_FLAGS --port $PORT"
    MYSQL_FLAGS="$MYSQL_FLAGS --port=$PORT"
fi
if [ "$DB" != "" ]; then
    echo "  database: $DB"
    PSQL_FLAGS="$PSQL_FLAGS --dbname $DB"
    MYSQL_FLAGS="$MYSQL_FLAGS --database=$DB"
fi
if [ "$USERNAME" != "" ]; then
    echo "  username: $USERNAME"
    PSQL_FLAGS="$PSQL_FLAGS --username $USERNAME"
    MYSQL_FLAGS="$MYSQL_FLAGS --user=$USERNAME"
fi

if [ $USE_PGSQL -eq 1 ]; then
    echo "importing into a PostgreSQL database ..."
    $PSQL -f $SRCDIR/EPSG_v$VERS.mdb_Tables_PostgreSQL.sql $PSQL_FLAGS
    $PSQL -f $SRCDIR/EPSG_v$VERS.mdb_Data_PostgreSQL.sql $PSQL_FLAGS
    $PSQL -f $SRCDIR/EPSG_v$VERS.mdb_FKeys_PostgreSQL.sql $PSQL_FLAGS
fi

if [ $USE_MYSQL -eq 1 ]; then
    echo "importing into a mySQL database ..."
    $MYSQL $MYSQL_FLAGS < $SRCDIR/EPSG_v$VERS.mdb_Tables_MySQL.sql
    $MYSQL $MYSQL_FLAGS < $SRCDIR/EPSG_v$VERS.mdb_Data_MySQL.sql
    $MYSQL $MYSQL_FLAGS < $SRCDIR/EPSG_v$VERS.mdb_FKeys_MySQL.sql
fi
