#!/bin/sh

# chkconfig: 345 95 5
# description: start/stop openidm

### BEGIN INIT INFO
# Provides:          openidm
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start OpenIDM at boot time
# Description:       Manage OpenIDM Service.
### END INIT INFO


# clean up left over pid files if necessary
cleanupPidFile() {
  if [ -f $OPENIDM_PID_FILE ]; then
    rm -f "$OPENIDM_PID_FILE"
  fi
  trap - EXIT
  exit
}

JAVA_BIN=/usr/bin/java
OPENIDM_HOME=/opt/openidm
OPENIDM_USER=root
OPENIDM_PID_FILE=$OPENIDM_HOME/.openidm.pid
OPENIDM_OPTS=""
OPENIDM_PROJECT_DIR=/opt/openidm/vncforgerockconnector/

# Only set OPENIDM_OPTS if not already set
[ -z "" ] && OPENIDM_OPTS="-Xmx1024m -Xms1024m -Dfile.encoding=UTF-8"

cd ${OPENIDM_HOME}

# Set JDK Logger config file if it is present and an override has not been issued
if [ -z "$LOGGING_CONFIG" ]; then
  if [ -r "$OPENIDM_PROJECT_DIR"/conf/logging.properties ]; then
    LOGGING_CONFIG="-Djava.util.logging.config.file=$OPENIDM_PROJECT_DIR/conf/logging.properties"
  else
    LOGGING_CONFIG="-Dnop"
  fi
fi

CLASSPATH="$OPENIDM_HOME"/bin/*


START_CMD="nohup $JAVA_BIN $LOGGING_CONFIG $JAVA_OPTS $OPENIDM_OPTS \
		-Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS \
		-classpath \"$CLASSPATH\" \
		-Djava.awt.headless=true \
                -Dopenidm.system.server.root=$OPENIDM_HOME \
		org.forgerock.commons.launcher.Main -c bin/launcher.json -p $OPENIDM_PROJECT_DIR > logs/server.out 2>&1 &"

case "${1}" in
start)
	su $OPENIDM_USER -c "$START_CMD eval echo \$\! > $OPENIDM_PID_FILE"
  	exit ${?}
  ;;
stop)
	./shutdown.sh > /dev/null
	exit ${?}
  ;;
restart)
	./shutdown.sh > /dev/null
	su $OPENIDM_USER -c "$START_CMD eval echo \$\! > $OPENIDM_PID_FILE"
  	exit ${?}
  ;;
*)
  echo "Usage: openidm { start | stop | restart }"
  exit 1
  ;;
esac
