#!/bin/bash

### osx sux, has no proper readlink.
check_darwin() {
  WABBIT_BIN=$( perl -e 'use Cwd "abs_path";print abs_path(shift)' $0 )
  WABBIT_BIN=$( dirname $WABBIT_BIN )
  WABBIT_HOME=$( dirname $WABBIT_BIN )
}
check_linux() {
  WABBIT_BIN=$(dirname $(readlink -f $0))/../
  WABBIT_HOME=$(readlink -f $WABBIT_BIN)
  WABBIT_BIN=$WABBIT_HOME/bin
}

OSTYPE=`uname -s`
CWD=`pwd`

if [ "$OSTYPE" = "Darwin" ]; then
  check_darwin
else
  check_linux
fi

if [ "$JAVA_HOME" = "" ] ; then
  echo "Attempt to reference standard java location on system: /usr/bin."
  #echo "Please set JAVA_HOME"
  #exit -1
  JAVA_HOME=/usr
fi

LIBDIR=$WABBIT_HOME/lib/h2*.jar
JAVA_CMD=$JAVA_HOME/bin/java

##VMXRGS=" -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:MaxPermSize=256m"
VMXRGS=" -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC"
MAINCZ=org.h2.tools.Console
#48G
#VMARGS="-Xms8192m -Xmx49152m"
#36G
#VMARGS="-Xms8192m -Xmx36864m"
#32G
#VMARGS="-Xms8192m -Xmx32768m"
VMARGS="-Xms512m -Xmx7096m $VMXRGS"

show_proc() {
  pid=$( ps -ef | grep org.h2.tools.Console | grep -v grep | awk '{print $2}' )
  if [ -n "$pid" ]; then
    echo "H2DB Server is running with process-id: ${pid}."
  else
    echo "H2DB Server is not running."
  fi
}

stop_proc() {
  pid=$( ps -ef | grep org.h2.tools.Console | grep -v grep | awk '{print $2}' )
  if [ -n "$pid" ]; then
    kill $pid
  fi
}

if [ $# -eq 1 -a "$1" = "stop" ]; then
  echo "stopping h2db..."
  stop_proc
  exit $?
fi

if [ $# -eq 1 -a "$1" = "status" ]; then
  show_proc
  exit 0
fi

cd $WABBIT_BIN
nohup $JAVA_CMD $VMARGS -cp $LIBDIR $MAINCZ -tcp -tcpAllowOthers 2>& 1 > /tmp/nohup.out &
cd $CWD
exit 0


