#!/bin/sh
#
# chkconfig: 3 80 20
# description: wait for tomcat server to initialize
# author: khutchison
# version: 2.1.2.RELEASE
# build date: 20110211161710
#
### BEGIN INIT INFO
# Provides: hzn-dots
# Required-Start: horizon-workspace
# Required-Stop:  
# Default-Start:  3 5
# Default-Stop:   0 1 2 4 6
# Description:    Wait for tomcat server to come up
### END INIT INFO

# Source function library.

. /usr/local/horizon/scripts/hzn-bin.inc

function look_up(){
        tail +$(grep -n "INFO: Initialization processed in" "$LOG_FILE" | tail -1 |  awk\
                -F: '{print $1}') "$LOG_FILE" | tail -1 | grep -n "INFO: Server startup in" > /dev/null
        return "$?"
}

function do_dots() {
    local AS_TIMEOUT=360
    local AS_INTERVAL=1
    local AS_INITIALIZED=0
    local TIMEOUT_WHEN=$(($(date "+%s") + ${AS_TIMEOUT}))

    # get service (aka app manager) host
    local service_host=$(hostname -f)
    local LOG_FILE="$(service horizon-workspace status | awk '/Tomcat Base/ {print $3}')/logs/catalina.log"
    look_up "$LOG_FILE"
    if test "$?" -ne 0 ; then
        echo "Waiting for Application Server to start..."
        while( test $(date "+%s") -le ${TIMEOUT_WHEN} ); do
            look_up "$LOG_FILE"
            if test "$?" -ne 0 ; then
                echo -n .
                sleep ${AS_INTERVAL}
            else
                AS_INITIALIZED=1
                echo
                break
            fi
        done
    else
        AS_INITIALIZED=2
    fi

    if test ${AS_INITIALIZED} -eq 0; then
        echo
        echo "Application Server startup timed out."
        exit 1
    elif test ${AS_INITIALIZED} -eq 1; then
        echo "Application Server startup complete."
    else
        echo "Application Server already running."
    fi
}

start() {
    do_dots
}

case "$1" in
 start)
        start
        ;;
 stop)
        ;;
 restart)
        ;;
 status)
        ;;
 *)
        echo $"Usage: $0 {start|stop|restart|status}"
        exit 1
        ;;
esac

exit $RETVAL

