#!/bin/bash
#
### BEGIN INIT INFO
# Provides:          obm-tomcat
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: OBM Tomcat server
# Description:       Debian init script for the OBM Tomcat server
### END INIT INFO

set -e

PATH=/sbin:/bin:/usr/sbin:/usr/bin
NAME=obm-tomcat
PIDFILE="/var/run/obm_tomcat.pid"
TOMCAT_PATH=/usr/share/tomcat
START_CMD=${TOMCAT_PATH}/bin/catalina.sh

if [ `id -u` -ne 0 ]; then
        echo "You need root privileges to run this script"
        exit 1
fi

# Make sure obm-tomcat is started with system locale
if [ -r /etc/default/locale ]; then
        . /etc/default/locale
        export LANG
fi

. /lib/lsb/init-functions

if [ -r /etc/default/rcS ]; then
        . /etc/default/rcS
fi

if [ -z "$JAVA_HOME" ]; then
	JAVA_HOME="/usr/lib/jvm/java-7-openjdk-"`dpkg --print-architecture`
fi
if [ -z "$SHUTDOWN_TIMEOUT" ]; then
	SHUTDOWN_TIMEOUT=10
fi

JRE_HOME=${JAVA_HOME}
export JRE_HOME
export JAVA_HOME

tomcat_running() {
    start-stop-daemon --quiet --test --start --startas java --pidfile ${PIDFILE} > /dev/null
    if [ $? -ne 0 ]; then
        return 0
    fi
    return 1
}

start_tomcat() {
    tomcat_running && {
        log_warning_msg "OBM Tomcat already running."
        ret=0
        return $ret
    }

    ${START_CMD} start
}

stop_tomcat() {
    tomcat_running || {
        log_warning_msg "OBM Tomcat not running."
        ret=0
        return $ret
    }

    start-stop-daemon --stop --quiet --oknodo --pidfile ${PIDFILE}
    log_progress_msg "Waiting for OBM Tomcat shutdown."
    timeout=${SHUTDOWN_TIMEOUT}
    while tomcat_running ; do
        sleep 1
        log_progress_msg "."
	timeout=$((${timeout}-1))
        if [ ${timeout} -eq 0 ]; then
            log_progress_msg " (killing) "
	    start-stop-daemon --stop --signal 15 --quiet --oknodo --pidfile ${PIDFILE}
        fi
    done
    rm -f ${PIDFILE}
    log_end_msg 0
}

status() {
	if tomcat_running; then
		log_success_msg "Tomcat is running"
                ret=0
                return $ret
	else
		log_success_msg "Tomcat is stopped"
                ret=3
                return $ret
	fi
}

case "$1" in
    start)
        start_tomcat
        ;;
    force-reload)
        stop_tomcat
        start_tomcat
        ;;
    stop)
        stop_tomcat
        ;;
    status)
	status
	;;
    restart)
        stop_tomcat
        start_tomcat
        ;;
    *)
	log_success_msg "Usage: $0 {start|stop|status|restart|force-reload}"
esac

exit $ret
