#!/bin/sh
#
# {name} script
# JPackage Project <http://www.jpackage.org/>

# Source functions library
. /usr/share/java-utils/java-functions

# Source system prefs
if [ -f /etc/java/zanata-client.conf ] ; then
  . /etc/java/zanata-client.conf
fi

# Source user prefs
if [ -f $HOME/.zanata-clientrc ] ; then
  . $HOME/.zanata-clientrc
fi

EXIT_FATAL_MISSING_DEPENDENCY=4

declare -a JreVerArray
IFS="._" read -r -a JreVerMinArray <<< "1.8.0"

function check_java_home(){
    local javaHome=$1
    local javaCmd

    if [ -x $javaHome/bin/java ];then
        javaCmd=$javaHome/bin/java
    elif [ -x $javaHome/jre/bin/java ];then
        javaCmd=$javaHome/jre/bin/java
    else
        ## No executable in javaHome
        return 1
    fi

    jreVer=$($javaCmd -version |& sed -n -e '/version/ s/.*"\(.*\)"/\1/ p')
    IFS="._"  read -r -a JreVerArray <<< "$jreVer"

    for (( i=0; i< ${#JreVerMinArray[@]}; i++)) ;do
        if [ ${JreVerArray[$i]} -gt ${JreVerMinArray[$i]} ];then
            ## Version is newer
            return 0
        elif [ ${JreVerArray[$i]} -lt ${JreVerMinArray[$i]} ];then
            ## Version is older
            return 1
        fi
    done
    ## version is equal
    return 0
}

JAVA_HOME_ORIG="$JAVA_HOME"
JAVA_HOME=
for JavaHome in "$JAVA_HOME_ORIG" /etc/alternatives/jre_1.8.0; do
    if check_java_home "$JavaHome" ; then
    JAVA_HOME=$JavaHome
    fi
done

if [ -z "$JAVA_HOME" ];then
    echo "JRE 1.8.0 is not found. Please install it or specify JAVA_HOME" > /dev/stderr
    exit $EXIT_FATAL_MISSING_DEPENDENCY
fi

# Configuration
MAIN_CLASS=org.zanata.client.ZanataClient
BASE_JARS="zanata-client slf4j/log4j12 opencsv"
CLASSPATH=/usr/share/java/apache-commons-lang3.jar:/usr/share/java/maven/maven-artifact.jar:/usr/share/java/findbugs-annotations.jar:/usr/share/java/classmate.jar:/usr/share/java/jersey1/jersey-core-1.19.jar:/usr/share/java/log4j-1.2.17.jar:/usr/share/java/xerces-j2.jar:/usr/share/java/xalan-j2.jar:/usr/share/java/xalan-j2-serializer.jar:/usr/share/java/slf4j/slf4j-api.jar:/usr/share/java/jaxb-api.jar:/usr/share/java/apache-commons-lang.jar:/usr/share/java/zanata-api/zanata-common-api.jar:/usr/share/java/xml-commons-apis.jar:/usr/share/java/slf4j/jcl-over-slf4j.jar:/usr/share/java/antlr.jar:/usr/share/java/jersey1/jersey-client-1.19.jar:/usr/share/java/enunciate/enunciate-core-annotations.jar:/usr/share/java/bea-stax-api.jar:/usr/share/java/zanata-common/zanata-adapter-po.jar:/usr/share/java/commons-codec.jar:/usr/share/java/zanata-common/zanata-common-util.jar:/usr/share/java/jsr-311.jar:/usr/share/java/jsr-305.jar:/usr/share/java/xom/xom.jar:/usr/share/java/commons-io.jar:/usr/share/java/apache-commons-beanutils.jar:/usr/share/java/jackson/jackson-mapper-asl.jar:/usr/share/java/bean-validation-api.jar:/usr/share/java/mimepull/mimepull.jar:/usr/share/java/apache-commons-collections.jar:/usr/share/java/jackson/jackson-jaxrs.jar:/usr/share/java/jgettext/jgettext.jar:/usr/share/java/guava.jar:/usr/share/java/jboss-logging/jboss-logging.jar:/usr/share/java/jersey1/jersey-multipart-1.19.jar:/usr/share/java/jackson/jackson-xc.jar:/usr/share/java/jackson/jackson-core-asl.jar:/usr/share/java/jaxen.jar:/usr/share/java/hibernate-validator/hibernate-validator.jar:/usr/share/java/plexus/utils.jar:/usr/share/java/slf4j/slf4j-log4j12.jar:/usr/share/java/apache-commons-lang3.jar:/usr/share/java/maven/maven-artifact.jar:/usr/share/java/args4j/args4j.jar:/usr/share/java/log4j-1.2.17.jar:/usr/share/java/xalan-j2.jar:/usr/share/java/xalan-j2-serializer.jar:/usr/share/java/slf4j/slf4j-api.jar:/usr/share/java/jaxb-api.jar:/usr/share/java/zanata-common/zanata-adapter-xliff.jar:/usr/share/java/zanata-api/zanata-common-api.jar:/usr/share/java/slf4j/jcl-over-slf4j.jar:/usr/share/java/antlr.jar:/usr/share/java/jersey1/jersey-client-1.19.jar:/usr/share/java/enunciate/enunciate-core-annotations.jar:/usr/share/java/zanata-common/zanata-common-util.jar:/usr/share/java/ant/ant.jar:/usr/share/java/commons-io.jar:/usr/share/java/apache-commons-beanutils.jar:/usr/share/java/jackson/jackson-mapper-asl.jar:/usr/lib/java/jansi-native/jansi-native.jar:/usr/share/java/mimepull/mimepull.jar:/usr/share/java/jackson/jackson-jaxrs.jar:/usr/share/java/ant/ant-launcher.jar:/usr/share/java/guava.jar:/usr/share/java/jboss-logging/jboss-logging.jar:/usr/share/java/jackson/jackson-core-asl.jar:/usr/share/java/findbugs-annotations.jar:/usr/share/java/classmate.jar:/usr/share/java/jersey1/jersey-core-1.19.jar:/usr/lib/java/hawtjni/hawtjni-runtime.jar:/usr/share/java/xerces-j2.jar:/usr/share/java/commons-configuration.jar:/usr/share/java/jsr-311.jar:/usr/share/java/opencsv.jar:/usr/share/java/apache-commons-lang.jar:/usr/share/java/glassfish-jaxb/txw2.jar:/usr/share/java/xml-commons-apis.jar:/usr/share/java/zanata-common/zanata-adapter-glossary.jar:/usr/share/java/bea-stax-api.jar:/builddir/build/BUILD/zanata-client-client-3.9.1/zanata-rest-client/target/zanata-rest-client-3.9.1.jar:/usr/share/java/zanata-common/zanata-adapter-po.jar:/usr/share/java/commons-codec.jar:/usr/share/java/jsr-305.jar:/usr/share/java/commons-exec.jar:/usr/share/java/joda-time.jar:/usr/share/java/xom/xom.jar:/usr/share/java/zanata-common/zanata-adapter-properties.jar:/usr/share/java/jansi/jansi.jar:/usr/share/java/bean-validation-api.jar:/usr/share/java/apache-commons-collections.jar:/usr/share/java/jgettext/jgettext.jar:/usr/share/java/findbugs-annotations.jar:/usr/share/java/jersey1/jersey-multipart-1.19.jar:/usr/share/java/jackson/jackson-xc.jar:/usr/share/java/openprops/openprops.jar:/usr/share/java/jaxen.jar:/usr/share/java/hibernate-validator/hibernate-validator.jar:/usr/share/java/plexus/utils.jar:/usr/share/java/apache-commons-lang3.jar:/usr/share/java/args4j/args4j.jar:/usr/share/java/maven/maven-artifact.jar:/usr/share/java/log4j-1.2.17.jar:/usr/share/java/xalan-j2.jar:/usr/share/java/xalan-j2-serializer.jar:/usr/share/java/slf4j/slf4j-api.jar:/usr/share/java/jaxb-api.jar:/usr/share/java/zanata-common/zanata-adapter-xliff.jar:/usr/share/java/zanata-api/zanata-common-api.jar:/usr/share/java/slf4j/jcl-over-slf4j.jar:/usr/share/java/antlr.jar:/usr/share/java/jersey1/jersey-client-1.19.jar:/usr/share/java/enunciate/enunciate-core-annotations.jar:/usr/share/java/zanata-common/zanata-common-util.jar:/usr/share/java/ant/ant.jar:/usr/share/java/commons-io.jar:/usr/share/java/apache-commons-beanutils.jar:/usr/share/java/jackson/jackson-mapper-asl.jar:/usr/lib/java/jansi-native/jansi-native.jar:/usr/share/java/mimepull/mimepull.jar:/usr/share/java/jackson/jackson-jaxrs.jar:/usr/share/java/ant/ant-launcher.jar:/usr/share/java/guava.jar:/usr/share/java/jboss-logging/jboss-logging.jar:/usr/share/java/jackson/jackson-core-asl.jar:/usr/share/java/findbugs-annotations.jar:/usr/share/java/classmate.jar:/usr/share/java/jersey1/jersey-core-1.19.jar:/usr/lib/java/hawtjni/hawtjni-runtime.jar:/usr/share/java/xerces-j2.jar:/usr/share/java/commons-configuration.jar:/usr/share/java/jsr-311.jar:/usr/share/java/opencsv.jar:/usr/share/java/apache-commons-lang.jar:/usr/share/java/glassfish-jaxb/txw2.jar:/usr/share/java/zanata-common/zanata-adapter-glossary.jar:/usr/share/java/xml-commons-apis.jar:/usr/share/java/bea-stax-api.jar:/builddir/build/BUILD/zanata-client-client-3.9.1/zanata-rest-client/target/zanata-rest-client-3.9.1.jar:/usr/share/java/zanata-common/zanata-adapter-po.jar:/usr/share/java/commons-codec.jar:/usr/share/java/jsr-305.jar:/usr/share/java/commons-exec.jar:/usr/share/java/joda-time.jar:/usr/share/java/xom/xom.jar:/usr/share/java/zanata-common/zanata-adapter-properties.jar:/usr/share/java/jansi/jansi.jar:/usr/share/java/bean-validation-api.jar:/usr/share/java/apache-commons-collections.jar:/usr/share/java/jgettext/jgettext.jar:/usr/share/java/findbugs-annotations.jar:/builddir/build/BUILD/zanata-client-client-3.9.1/zanata-client-commands/target/zanata-client-commands-3.9.1.jar:/usr/share/java/jersey1/jersey-multipart-1.19.jar:/usr/share/java/jackson/jackson-xc.jar:/usr/share/java/openprops/openprops.jar:/usr/share/java/jaxen.jar:/usr/share/java/hibernate-validator/hibernate-validator.jar:/usr/share/java/plexus/utils.jar

# Set parameters
set_jvm
# we have built CLASSPATH above
set_classpath $BASE_JARS

# Let's start
run "$@"
