#!/bin/sh
# chkconfig: 2345 95 05
# description: Controls an Apache Solr process.
#
# TODO: Describe this file.
#
# @author Jeff Geerling, 2015

. /etc/rc.d/init.d/functions

SOLR_DIR="{{ solr_install_path }}/example"
JAVA_OPTIONS="-Dsolr.solr.home={{ solr_home }} -Djetty.host={{ solr_host }} -Djetty.port={{ solr_port }} -Xms{{ solr_xms }} -Xmx{{ solr_xmx }} -DSTOP.PORT=8079 -DSTOP.KEY=secret"
START_COMMAND="java -jar $JAVA_OPTIONS start.jar"
STOP_COMMAND="java -jar $JAVA_OPTIONS $SOLR_DIR/start.jar --stop"
LOG_FILE="{{ solr_log_file_path }}"

start () {
    echo -n "Starting solr... "

    if ps aux | grep "[s]olr.solr.home" > /dev/null
    then
        echo -n "already started... "
    else
        cd "$SOLR_DIR" && daemon --user="{{ solr_user }}" $START_COMMAND > $LOG_FILE &
    fi

    RETVAL=$?
    if [ $RETVAL = 0 ]
    then
        echo "done."
    else
        echo "failed. See error code for more information."
    fi
    return $RETVAL
}

stop () {
    echo -n "Stopping solr... "

    if ps aux | grep "[s]olr.solr.home" > /dev/null
    then
        $STOP_COMMAND
    else
        echo -n "already stopped... "
    fi

    RETVAL=$?
    if [ $RETVAL = 0 ]
    then
        echo "done."
    else
        echo "failed. See error code for more information."
    fi
    return $RETVAL
}

restart () {
    $0 stop
    sleep 3
    $0 start
}

check_status () {
    if ps aux | grep "[s]olr.solr.home" > /dev/null
    then
        printf "Solr is running.\n"
    else
        printf "Solr is stopped.\n"
    fi
}

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

exit $RETVAL