#!/bin/sh

PRG=$0
#progname=`basename $0`

# Resolve symlinks. See 4152645.
while [ -L "$PRG" ]; do
    ls=`/bin/ls -ld "$PRG"`
    link=`/usr/bin/expr "$ls" : '.*-> \(.*\)$'`
    if /usr/bin/expr "$link" : '/' > /dev/null; then
	PRG="$link"
    else
	PRG="`/usr/bin/dirname $PRG`/$link"
    fi
done

#unset JAVA_HOME
unset CLASSPATH

# Get the full name of the directory where the Handle.net software is installed
HDLHOME=`dirname "$PRG"`
HDLHOME="${HDLHOME}/../"
#echo "HDLHOME is $HDLHOME"

# Load all of the .jar files in the lib directory into the classpath
CP=""
for jarfile in ${HDLHOME}lib/*.jar ; do
  CP=${CP}:${jarfile}
done
for jarfile in ${HDLHOME}lib/*/*.jar ; do
  CP=${CP}:${jarfile}
done

COMMAND=$1
# Remove command from args to be passed on
shift

# Run appropriate command
case $COMMAND in
    server)
      # this is the server startup; memory configuration can be edited here
      exec java -Xmx200M -server -cp "${CP}" net.handle.server.Main "$@"
      ;;
    setup-server)
      exec java -cp "${CP}" net.handle.server.SimpleSetup "$@"
      ;;
    java)
      exec java -cp "${CP}" "$@"
      ;;
    admintool)
      exec java -cp "${CP}" net.handle.apps.admintool.controller.Main "$@"
      ;;
    oldadmintool)
      exec java -cp "${CP}" net.handle.apps.gui.hadmin.HandleTool "$@"
      ;;
    keyutil)
      exec java -cp "${CP}" net.handle.apps.tools.KeyUtil "$@"
      ;;
    keygen)
      exec java -cp "${CP}" net.handle.apps.tools.KeyGenerator "$@"
      ;;
    qresolverGUI)
      exec java -cp "${CP}" net.handle.apps.gui.resolver.Main "$@"
      ;;
    qresolver)
      exec java -cp "${CP}" net.handle.apps.simple.HDLTrace "$@"
      ;;
    getrootinfo)
      exec java -cp "${CP}" net.handle.apps.tools.GetRootInfo "$@"
      ;;
    getsiteinfo)
      exec java -cp "${CP}" net.handle.apps.tools.GetSiteInfo "$@"
      ;;
    genericbatch)
      exec java -cp "${CP}" net.handle.apps.batch.GenericBatch "$@"
      ;;
    create)
      exec java -cp "${CP}" net.handle.apps.simple.HDLCreate "$@"
      ;;
    delete)
      exec java -cp "${CP}" net.handle.apps.simple.HDLDelete "$@"
      ;;
    list)
      exec java -cp "${CP}" net.handle.apps.simple.HDLList "$@"
      ;;
    trace)
      exec java -cp "${CP}" net.handle.apps.simple.HDLTrace "$@"
      ;;
    home-na)
      exec java -cp "${CP}" net.handle.apps.simple.HomeNA "$@"
      ;;
    convert-siteinfo)
      exec java -cp "${CP}" net.handle.apps.simple.SiteInfoConverter "$@"
      ;;
    convert-values)
      exec java -cp "${CP}" net.handle.apps.simple.HandleValuesConverter "$@"
      ;;
    convert-localinfo)
      exec java -cp "${CP}" net.handle.apps.simple.LocalInfoConverter "$@"
      ;;
    convert-key)
      exec java -cp "${CP}" net.handle.apps.simple.KeyConverter "$@"
      ;;
    dumpfromprimary)
      exec java -cp "${CP}" net.handle.server.replication.DumpHandles "$@"
      ;;
    jython)
      exec java -cp "${CP}" net.handle.apps.tools.RunJython "$@"
      ;;
    dbtool)
      exec java -cp "${CP}" net.handle.apps.db_tool.DBTool "$@"
      ;;
    dblist)
      exec java -cp "${CP}" net.handle.apps.db_tool.DBList "$@"
      ;;
    bdbje-util)
      exec java -cp "${CP}" net.handle.server.bdbje.BDBJEHandleStorage "$@"
      ;;
    dbremove)
      exec java -cp "${CP}" net.handle.apps.db_tool.DBRemove "$@"
      ;;
    dbresolve)
      exec java -cp "${CP}" net.handle.apps.db_tool.DBResolve "$@"
      ;;
    testtool)
      exec java -cp "${CP}" net.handle.apps.test.Test "$@"
      ;;
    docheckpoint)
      exec java -cp "${CP}" net.handle.apps.tools.DoCheckpoint "$@"
      ;;
    splitserver)
      exec java -cp "${CP}" net.handle.apps.tools.SplitServer "$@"
      ;;
    splitrecoverylog)
      exec java -cp "${CP}" net.handle.apps.tools.SplitRecoveryLog "$@"
      ;;
    recoverjdb)
      exec java -cp "${CP}" net.handle.apps.tools.RecoverJDB "$@"
      ;;
    recoverbdbje)
      exec java -cp "${CP}" net.handle.apps.tools.RecoverBDBJE "$@"
      ;;
    server-perf-test)
      exec java -cp "${CP}" net.handle.hdllib.Tester "$@"
      ;;
    migrate-storage-to-bdbje)
      exec java -cp "${CP}" net.handle.apps.tools.CurrentStorageToBdbjeMigrator "$@"
      ;;
    *)
      echo "Unknown Handle.Net server command: ${COMMAND}"
      ;;
esac
