#!/bin/sh

# get base directory
if test -h "$0"; then
  BASE_DIRECTORY=`dirname `readlink $0``
else
  BASE_DIRECTORY=`dirname $0`
fi
if test "$BASE_DIRECTORY" = ""; then
  BASE_DIRECTORY="."
fi

# detect host-platform (get first part in full-name if given)
case `uname` in
  Linux*)
    HOST_PLATFORM="linux"
    ;;
  SunOS* | Solaris*)
    HOST_PLATFORM="solaris"
    ;;
  Darwin)
    HOST_PLATFORM="macos"
    ;;
  *)
    echo >&2 "ERROR: Cannot detect host system: '`uname`'!"
    exit 1
    ;;
esac

# check for java
JAVA="java"
type $JAVA 1>/dev/null 2>/dev/null
if test $? -ne 0; then
  echo >&2 "ERROR: $JAVA command not found. Try to install package JRE."
  exit 1
fi
$JAVA -version 1>/dev/null 2>/dev/null
if test $? -ne 0; then
  echo >&2 "ERROR: cannot not run $JAVA command - VM failure?"
  exit 1
fi

# java flags, JAR
case $HOST_PLATFORM in
  linux)
    JAVA_FLAGS="-Xmx128m -enableassertions"

    if test ! -f "$BASE_DIRECTORY/barcontrol-linux.jar"; then
      echo >&2 "ERROR: JAR file '$BASE_DIRECTORY/barcontrol-linux.jar' not found!"
      exit 1
    fi
    if test ! -f "$BASE_DIRECTORY/barcontrol-linux_64.jar"; then
      echo >&2 "ERROR: JAR file '$BASE_DIRECTORY/barcontrol-linux_64.jar' not found!"
      exit 1
    fi

    $JAVA $JAVA_FLAGS -cp "$BASE_DIRECTORY/barcontrol-linux.jar" DataModel
    rc=$?
    if   test $rc -eq 32; then
      BARCONTROL_JAR="$BASE_DIRECTORY/barcontrol-linux.jar"
    elif test $rc -eq 64; then
      BARCONTROL_JAR="$BASE_DIRECTORY/barcontrol-linux_64.jar"
    else
      echo >&2 "ERROR: cannot detect data model (32/64 bit) - VM failure?"
      exit 1
    fi
    ;;
  solaris)
    JAVA_FLAGS="-Xmx128m -enableassertions"

    BARCONTROL_JAR="$BASE_DIRECTORY/barcontrol-solaris.jar"
    ;;
  macos)
    JAVA_FLAGS="-Xmx128m -enableassertions -XstartOnFirstThread"

    if test ! -f "$BASE_DIRECTORY/barcontrol-macosx.jar"; then
      echo >&2 "ERROR: JAR file '$BASE_DIRECTORY/barcontrol-macosx.jar' not found!"
      exit 1
    fi
    if test ! -f "$BASE_DIRECTORY/barcontrol-macosx_64.jar"; then
      echo >&2 "ERROR: JAR file '$BASE_DIRECTORY/barcontrol-macosx_64.jar' not found!"
      exit 1
    fi

    $JAVA $JAVA_FLAGS -cp $BASE_DIRECTORY/barcontrol-macosx.jar DataModel
    rc=$?
    if   test $rc -eq 32; then
      BARCONTROL_JAR="$BASE_DIRECTORY/barcontrol-macosx.jar"
    elif test $rc -eq 64; then
      BARCONTROL_JAR="$BASE_DIRECTORY/barcontrol-macosx_64.jar"
    else
      echo >&2 "ERROR: cannot detect data model (32/64 bit) - VM failure?"
      exit 1
    fi
    ;;
esac

# check X11 server connection
xset -h 1>/dev/null 2>/dev/null
rc=$?
if test $rc -eq 0; then
  xset -q 1>/dev/null 2>/dev/null
  rc=$?
  if test $rc -ne 0; then
    echo >&2 "ERROR: cannot connect to X11 server. Please check DISPLAY variable and permissions to connect to X11 server."
    exit 1
  fi
fi

# run main
# Note: do not use GTK3. Buggy with SWT 4.4
SWT_GTK3=0 $JAVA $JAVA_FLAGS -jar "$BARCONTROL_JAR" "$@"
rc=$?

exit $rc
