#!/bin/bash
#
#  Main startup script for launching SDTServer from SLM
#
# Create restart script
echo "$0 $@"
echo "$0 $@ -srvarg=/SDTExecutionService/resume=true" > restart_slc
chmod 777 restart_slc

# Get base directory
ROOTDIR=`dirname "$0"`
if [ "X$ROOTDIR" = "X." -o -z "$ROOTDIR" ] ; then
  ROOTDIR=`pwd`
fi
ROOTDIR=`dirname "$ROOTDIR"`

cd ${ROOTDIR}

# Check if the first parameter is sapjvm="<path>"

SAPJVM_PARAM=$1
SAPJVM=${SAPJVM_PARAM:0:6}
JVMPATH=${SAPJVM_PARAM:7}
JVMPATH=${JVMPATH//\"/}

if [ "$SAPJVM" = "sapjvm" ] ; then
  JAVA_HOME=$JVMPATH
else
  echo "WARNING: No sapjvm path in command, try to use JAVA_HOME."
fi

# Check if the second parameter is debug="true"

if [ $2 = "debug=true" ] ; then
  DEBUG="true"
  echo "Starting SL controller in debug mode."
else
  DEBUG="false"
  echo "Starting SL controller in normal mode."
fi
# Determine java executable
if [ -n "$JAVA_HOME" ] ; then
  java_cmd=$JAVA_HOME/bin/java
  echo "Using JDK $JAVA_HOME."
else
  echo "WARNING Environment variable JAVA_HOME not set, trying to launch java from current PATH"
  java_cmd=java
fi

# Set extra parameter for maximum heap size:
java_cmd="$java_cmd -Xmx256m"

# Set extra parameter for generating heap dump on memory error:
# This option is not supported by all JVM versions
# Uncomment only if needed and the JVM used supports the -XX:+HeapDumpOnOutOfMemoryError option 
# java_cmd="$java_cmd -XX:+HeapDumpOnOutOfMemoryError"

#  Set classpath and check for special options

SDTSERVER_CLASSPATH=""

for i in compatibility slctrl
do
	SDTSERVER_CLASSPATH="$SDTSERVER_CLASSPATH""$ROOTDIR"/lib/sdt_"$i".jar:
done
SDTSERVER_CLASSPATH="$SDTSERVER_CLASSPATH""$ROOTDIR"/lib/sdt_mxp.jar:

SRVARG="-srvarg=/SDTExecutionService/restart"

ROOTDIR_OPT="rootdir=$ROOTDIR"
RESTART_OPT="${SRVARG}=false"

#delete old jar sdt_server.jar
if [ -f "$ROOTDIR"/lib/sdt_server.jar ]; then
    rm -f "$ROOTDIR"/lib/sdt_server.jar
fi

while :
do
    if [ "$DEBUG" = "false" ] ; then
    $java_cmd -ea -cp "$SDTSERVER_CLASSPATH" $SERVER_JAVA_OPTS SDTServer $ROOTDIR_OPT $RESTART_OPT "$@"
    else
    $java_cmd -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -ea -cp "$SDTSERVER_CLASSPATH" $SERVER_JAVA_OPTS SDTServer $ROOTDIR_OPT $RESTART_OPT "$@"
    fi
    RETCODE=$?
    if [ $RETCODE -ne 42 ]; then
	exit $RETCODE
    fi
    mv ./lib ./lib_old
    mv ./exe/slmLaunchSDTServer2 ./exe/slmLaunchSDTServer2_old
    SAPCAR -xvf LUP.SAR
    RETCODE=$?
    if [ $RETCODE -ne 0 ]; then
	echo "ERROR: SDTServer self patch failed with rc=$RETCODE"
	exit
    fi
    rm -rf ./lib_old
    chmod 755 ./exe/*
    RESTART_OPT="${SRVARG}=true"
done