#!/bin/sh

if [ $# -lt 2 ]
then
    echo "Usage <command> <path> [options]"
    exit 1
fi

class_for_command() # in $1 command name, out $2 class
{
    case $1 in
	Chgrp|chgrp)
	    class=Chgrp
	    ;;

	Chmod|chmod)
	    class=Chmod
	    ;;

	Chown|chown)
	    class=Chown
	    ;;

	Ls|ls)
	    class=Ls
	    ;;

	Lstag|lstag)
	    class=Lstag
	    ;;

	Mkdir|mkdir)
	    class=Mkdir
	    ;;

	Readtag|readtag)
	    class=Readtag
	    ;;

	Writetag|writetag)
	    class=Writetag
	    ;;

        Setfacl|setfacl)
            class=Setfacl
            ;;

        Getfacl|getfacl)
            class=Getfacl
            ;;

	Writedata|writedata)
	    class=Writedata
	    ;;

        Checksum|checksum)
            class=Checksum
            ;;

	*)
	    echo "Unknown command $1.  Available commands are:"
            echo "    chgrp chmod chown ls lstag mkdir readtag writetag writedata"
            echo "    setfacl getfacl checksum"
            exit 1
	    ;;
    esac

    cmd=$2=org.dcache.chimera.cli.$class
    eval $cmd
}

class_for_command "$1" class
shift


[ -f /etc/default/dcache ] && . /etc/default/dcache       
[ -f /etc/dcache.env ] && . /etc/dcache.env               

if [ -z "$DCACHE_HOME" ]; then                            
DCACHE_HOME="/usr/share/dcache"                         
fi                                                        
if [ ! -d "$DCACHE_HOME" ]; then                          
echo "$DCACHE_HOME is not a directory"                  
exit 2                                                  
fi                                                        

DCACHE_CLASSPATH=${DCACHE_HOME}/classes/*                 
DCACHE_DEFAULTS=${DCACHE_HOME}/defaults                   
. ${DCACHE_HOME}/lib/loadConfig.sh

lib="$(getProperty dcache.paths.share.lib)"
. ${lib}/utils.sh
. ${lib}/services.sh

dbpass=$(getProperty chimera.db.password)

CLASSPATH="$(printClassPath)" \
    ${JAVA} $(getProperty dcache.java.options) \
    -Dlog=${DCACHE_LOG:-warn} \
    ${class}  $(getProperty chimera.db.driver) \
    $(getProperty chimera.db.url) \
    $(getProperty chimera.db.dialect) \
    $(getProperty chimera.db.user) \
    ${dbpass:-""} \
    "$@"
