#!/usr/bin/env sh

# This is a modified version of wps_scripts.bat bundled in NoiseModelling 4.0.0
# by Junta Tagusari

##############################################################################
##
##  wps_scripts start up script for UN*X
##
##############################################################################

# Set to APP_HOME
APP_HOME = $NOISEMODELLING_HOME

APP_NAME="wps_scripts"

# Add default JVM options here. You can also use JAVA_OPTS and WPS_SCRIPTS_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""

# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"

warn () {
    echo "$*"
}

die () {
    echo
    echo "$*"
    echo
    exit 1
}

# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
  CYGWIN* )
    cygwin=true
    ;;
  Darwin* )
    darwin=true
    ;;
  MINGW* )
    msys=true
    ;;
  NONSTOP* )
    nonstop=true
    ;;
esac

CLASSPATH=$APP_HOME/lib/wps_scripts.jar:$APP_HOME/lib/groovy-cli-commons-2.5.5.jar:$APP_HOME/lib/commons-cli-1.4.jar:$APP_HOME/lib/gt-jdbc-21.1.jar:$APP_HOME/lib/gs-script-groovy-2.15.1.jar:$APP_HOME/lib/postgresql-9.4-1201-jdbc41.jar:$APP_HOME/lib/all-0.29.jar:$APP_HOME/lib/gs-script-core-2.15.1.jar:$APP_HOME/lib/gs-wps-core-2.15.1.jar:$APP_HOME/lib/net.opengis.wps-21.1.jar:$APP_HOME/lib/net.opengis.ows-21.1.jar:$APP_HOME/lib/org.w3.xlink-21.1.jar:$APP_HOME/lib/org.eclipse.emf.ecore.xmi-2.15.0.jar:$APP_HOME/lib/org.eclipse.emf.ecore-2.15.0.jar:$APP_HOME/lib/h2gis-2.1.0-SNAPSHOT.jar:$APP_HOME/lib/noisemodelling-jdbc-4.0.2.jar:$APP_HOME/lib/noisemodelling-propagation-4.0.2.jar:$APP_HOME/lib/noisemodelling-pathfinder-4.0.2.jar:$APP_HOME/lib/gt-process-geometry-21.1.jar:$APP_HOME/lib/gt-process-21.1.jar:$APP_HOME/lib/gs-platform-2.15.1.jar:$APP_HOME/lib/gt-arcgrid-21.1.jar:$APP_HOME/lib/gt-geotiff-21.1.jar:$APP_HOME/lib/gt-geojson-21.1.jar:$APP_HOME/lib/gt-grid-21.1.jar:$APP_HOME/lib/gt-csv-21.1.jar:$APP_HOME/lib/gt-coverage-21.1.jar:$APP_HOME/lib/gt-main-21.1.jar:$APP_HOME/lib/h2gis-utilities-2.2.0-SNAPSHOT.jar:$APP_HOME/lib/jts-core-1.19.0.jar:$APP_HOME/lib/noisemodelling-emission-4.0.2.jar:$APP_HOME/lib/org.osgi.service.jdbc-1.0.0.jar:$APP_HOME/lib/osmosis-pbf-0.48.3.jar:$APP_HOME/lib/osmosis-xml-0.48.3.jar:$APP_HOME/lib/osmosis-core-0.48.3.jar:$APP_HOME/lib/matsim-11.0.jar:$APP_HOME/lib/opencsv-4.0.jar:$APP_HOME/lib/slf4j-simple-1.7.32.jar:$APP_HOME/lib/commons-dbcp-1.4.jar:$APP_HOME/lib/json-lib-2.4-jdk15.jar:$APP_HOME/lib/commons-beanutils-1.9.3.jar:$APP_HOME/lib/commons-collections-3.2.2.jar:$APP_HOME/lib/groovy-jsr223-2.5.5.jar:$APP_HOME/lib/groovy-ant-2.5.5.jar:$APP_HOME/lib/groovy-groovydoc-2.5.5.jar:$APP_HOME/lib/gt-epsg-hsql-21.1.jar:$APP_HOME/lib/gt-referencing-21.1.jar:$APP_HOME/lib/gt-metadata-21.1.jar:$APP_HOME/lib/spring-webmvc-5.1.1.RELEASE.jar:$APP_HOME/lib/spring-context-5.1.1.RELEASE.jar:$APP_HOME/lib/spring-jdbc-5.1.0.RELEASE.jar:$APP_HOME/lib/spring-aop-5.1.1.RELEASE.jar:$APP_HOME/lib/spring-web-5.1.1.RELEASE.jar:$APP_HOME/lib/spring-tx-5.1.0.RELEASE.jar:$APP_HOME/lib/spring-beans-5.1.1.RELEASE.jar:$APP_HOME/lib/spring-expression-5.1.1.RELEASE.jar:$APP_HOME/lib/spring-core-5.1.1.RELEASE.jar:$APP_HOME/lib/groovy-groovysh-2.5.5.jar:$APP_HOME/lib/groovy-console-2.5.5.jar:$APP_HOME/lib/groovy-docgenerator-2.5.5.jar:$APP_HOME/lib/groovy-cli-picocli-2.5.5.jar:$APP_HOME/lib/groovy-datetime-2.5.5.jar:$APP_HOME/lib/groovy-jmx-2.5.5.jar:$APP_HOME/lib/groovy-json-2.5.5.jar:$APP_HOME/lib/groovy-macro-2.5.5.jar:$APP_HOME/lib/groovy-nio-2.5.5.jar:$APP_HOME/lib/groovy-servlet-2.5.5.jar:$APP_HOME/lib/groovy-sql-2.5.5.jar:$APP_HOME/lib/groovy-swing-2.5.5.jar:$APP_HOME/lib/groovy-templates-2.5.5.jar:$APP_HOME/lib/groovy-test-2.5.5.jar:$APP_HOME/lib/groovy-test-junit5-2.5.5.jar:$APP_HOME/lib/groovy-testng-2.5.5.jar:$APP_HOME/lib/groovy-xml-2.5.5.jar:$APP_HOME/lib/groovy-2.5.5.jar:$APP_HOME/lib/equation-0.29.jar:$APP_HOME/lib/simple-0.29.jar:$APP_HOME/lib/dense64-0.29.jar:$APP_HOME/lib/denseC64-0.29.jar:$APP_HOME/lib/core-0.29.jar:$APP_HOME/lib/cts-1.6.0.jar:$APP_HOME/lib/commons-1.2.0.jar:$APP_HOME/lib/commons-compress-1.21.jar:$APP_HOME/lib/h2gis-api-2.2.0-SNAPSHOT.jar:$APP_HOME/lib/h2-2.1.214.jar:$APP_HOME/lib/jackson-databind-2.13.2.jar:$APP_HOME/lib/jackson-annotations-2.13.2.jar:$APP_HOME/lib/jackson-core-2.13.2.jar:$APP_HOME/lib/poly2tri-0.4.0.jar:$APP_HOME/lib/poly2tri-core-0.1.2.jar:$APP_HOME/lib/commons-math3-3.6.1.jar:$APP_HOME/lib/slf4j-api-1.7.36.jar:$APP_HOME/lib/TinfourCore-2.1.7.jar:$APP_HOME/lib/junit-4.13.1.jar:$APP_HOME/lib/jpf-1.5.jar:$APP_HOME/lib/woodstox-core-5.1.0.jar:$APP_HOME/lib/stax2-api-4.1.jar:$APP_HOME/lib/xercesImpl-2.12.0.jar:$APP_HOME/lib/osmosis-osm-binary-0.48.3.jar:$APP_HOME/lib/protobuf-java-3.12.2.jar:$APP_HOME/lib/commons-codec-1.11.jar:$APP_HOME/lib/log4j-1.2.15.jar:$APP_HOME/lib/jfreechart-1.0.19.jar:$APP_HOME/lib/jcommon-1.0.23.jar:$APP_HOME/lib/guice-multibindings-4.1.0.jar:$APP_HOME/lib/guice-4.1.0.jar:$APP_HOME/lib/trove4j-3.0.3.jar:$APP_HOME/lib/kml-v_2_2_0-2.2.0.jar:$APP_HOME/lib/lz4-1.3.0.jar:$APP_HOME/lib/commons-text-1.6.jar:$APP_HOME/lib/commons-lang3-3.8.1.jar:$APP_HOME/lib/jdom2-2.0.6.jar:$APP_HOME/lib/gt-opengis-21.1.jar:$APP_HOME/lib/commons-pool-1.5.4.jar:$APP_HOME/lib/jt-zonal-1.1.9.jar:$APP_HOME/lib/jt-stats-1.1.9.jar:$APP_HOME/lib/guava-27.0-jre.jar:$APP_HOME/lib/ant-junit-1.9.13.jar:$APP_HOME/lib/ant-1.9.13.jar:$APP_HOME/lib/ant-launcher-1.9.13.jar:$APP_HOME/lib/ant-antlr-1.9.13.jar:$APP_HOME/lib/ezmorph-1.0.6.jar:$APP_HOME/lib/commons-lang-2.5.jar:$APP_HOME/lib/commons-logging-1.2.jar:$APP_HOME/lib/jt-zonalstats-1.5.0.jar:$APP_HOME/lib/jt-utils-1.5.0.jar:$APP_HOME/lib/commons-io-2.11.0.jar:$APP_HOME/lib/spring-jcl-5.1.1.RELEASE.jar:$APP_HOME/lib/picocli-3.7.0.jar:$APP_HOME/lib/qdox-1.12.1.jar:$APP_HOME/lib/jline-2.14.6.jar:$APP_HOME/lib/junit-platform-launcher-1.3.2.jar:$APP_HOME/lib/junit-jupiter-engine-5.3.2.jar:$APP_HOME/lib/testng-6.13.1.jar:$APP_HOME/lib/hamcrest-core-1.3.jar:$APP_HOME/lib/xml-apis-1.4.01.jar:$APP_HOME/lib/javax.inject-1.jar:$APP_HOME/lib/aopalliance-1.0.jar:$APP_HOME/lib/atom-v_1_0-1.1.0.jar:$APP_HOME/lib/jaxb2-basics-runtime-0.9.4.jar:$APP_HOME/lib/ejml-ddense-0.34.jar:$APP_HOME/lib/jgridshift-1.0.jar:$APP_HOME/lib/GeographicLib-Java-1.49.jar:$APP_HOME/lib/failureaccess-1.0.jar:$APP_HOME/lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:$APP_HOME/lib/jsr305-3.0.2.jar:$APP_HOME/lib/checker-qual-2.5.2.jar:$APP_HOME/lib/error_prone_annotations-2.2.0.jar:$APP_HOME/lib/j2objc-annotations-1.1.jar:$APP_HOME/lib/animal-sniffer-annotations-1.17.jar:$APP_HOME/lib/systems-common-java8-0.7.2.jar:$APP_HOME/lib/org.eclipse.emf.common-2.15.0.jar:$APP_HOME/lib/imageio-ext-arcgrid-1.2.1.jar:$APP_HOME/lib/imageio-ext-tiff-1.2.1.jar:$APP_HOME/lib/json-simple-1.1.jar:$APP_HOME/lib/javacsv-2.0.jar:$APP_HOME/lib/junit-platform-engine-1.3.2.jar:$APP_HOME/lib/junit-jupiter-api-5.3.2.jar:$APP_HOME/lib/junit-platform-commons-1.3.2.jar:$APP_HOME/lib/apiguardian-api-1.0.0.jar:$APP_HOME/lib/jcommander-1.72.jar:$APP_HOME/lib/ejml-core-0.34.jar:$APP_HOME/lib/si-units-java8-0.7.1.jar:$APP_HOME/lib/uom-se-1.0.8.jar:$APP_HOME/lib/si-quantity-0.7.1.jar:$APP_HOME/lib/jt-affine-1.1.9.jar:$APP_HOME/lib/jt-algebra-1.1.9.jar:$APP_HOME/lib/jt-bandmerge-1.1.9.jar:$APP_HOME/lib/jt-bandselect-1.1.9.jar:$APP_HOME/lib/jt-bandcombine-1.1.9.jar:$APP_HOME/lib/jt-warp-1.1.9.jar:$APP_HOME/lib/jt-format-1.1.9.jar:$APP_HOME/lib/jt-border-1.1.9.jar:$APP_HOME/lib/jt-buffer-1.1.9.jar:$APP_HOME/lib/jt-crop-1.1.9.jar:$APP_HOME/lib/jt-mosaic-1.1.9.jar:$APP_HOME/lib/jt-lookup-1.1.9.jar:$APP_HOME/lib/jt-rescale-1.1.9.jar:$APP_HOME/lib/jt-scale-1.1.9.jar:$APP_HOME/lib/jt-scale2-1.1.9.jar:$APP_HOME/lib/jt-nullop-1.1.9.jar:$APP_HOME/lib/jt-translate-1.1.9.jar:$APP_HOME/lib/jt-binarize-1.1.9.jar:$APP_HOME/lib/jt-colorconvert-1.1.9.jar:$APP_HOME/lib/jt-errordiffusion-1.1.9.jar:$APP_HOME/lib/jt-orderdither-1.1.9.jar:$APP_HOME/lib/jt-colorindexer-1.1.9.jar:$APP_HOME/lib/jt-imagefunction-1.1.9.jar:$APP_HOME/lib/jt-classifier-1.1.9.jar:$APP_HOME/lib/jt-piecewise-1.1.9.jar:$APP_HOME/lib/jt-rlookup-1.1.9.jar:$APP_HOME/lib/jt-vectorbin-1.1.9.jar:$APP_HOME/lib/jt-shadedrelief-1.1.9.jar:$APP_HOME/lib/jt-utilities-1.1.9.jar:$APP_HOME/lib/jt-iterators-1.1.9.jar:$APP_HOME/lib/imageio-ext-geocore-1.2.1.jar:$APP_HOME/lib/imageio-ext-streams-1.2.1.jar:$APP_HOME/lib/imageio-ext-utilities-1.2.1.jar:$APP_HOME/lib/hsqldb-2.4.1.jar:$APP_HOME/lib/opentest4j-1.1.1.jar:$APP_HOME/lib/uom-lib-common-1.0.2.jar:$APP_HOME/lib/unit-api-1.0.jar:$APP_HOME/lib/bigint-0.7.1.jar:$APP_HOME/lib/jaxb-runtime-2.4.0-b180830.0438.jar:$APP_HOME/lib/jaxb-api-2.4.0-b180830.0359.jar:$APP_HOME/lib/javax.activation-api-1.2.0.jar:$APP_HOME/lib/txw2-2.4.0-b180830.0438.jar:$APP_HOME/lib/istack-commons-runtime-3.0.7.jar:$APP_HOME/lib/stax-ex-1.8.jar:$APP_HOME/lib/FastInfoset-1.2.15.jar

# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_FOR_NOISEMODELLING" ] ; then
    if [ -x "$JAVA_FOR_NOISEMODELLING/jre/sh/java" ] ; then
        # IBM's JDK on AIX uses strange locations for the executables
        JAVACMD="$JAVA_FOR_NOISEMODELLING/jre/sh/java"
    else
        JAVACMD="$JAVA_FOR_NOISEMODELLING/bin/java"
    fi
    if [ ! -x "$JAVACMD" ] ; then
        die "ERROR: JAVA_FOR_NOISEMODELLING is set to an invalid directory: $JAVA_FOR_NOISEMODELLING

Please set the JAVA_FOR_NOISEMODELLING variable in your environment to match the
location of your Java installation."
    fi
else
    JAVACMD="java"
    which java >/dev/null 2>&1 || die "ERROR: JAVA_FOR_NOISEMODELLING is not set and no 'java' command could be found in your PATH.

Please set the JAVA_FOR_NOISEMODELLING variable in your environment to match the
location of your Java installation."
fi

# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
    MAX_FD_LIMIT=`ulimit -H -n`
    if [ $? -eq 0 ] ; then
        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
            MAX_FD="$MAX_FD_LIMIT"
        fi
        ulimit -n $MAX_FD
        if [ $? -ne 0 ] ; then
            warn "Could not set maximum file descriptor limit: $MAX_FD"
        fi
    else
        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
    fi
fi

# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi

# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
    JAVACMD=`cygpath --unix "$JAVACMD"`

    # We build the pattern for arguments to be converted via cygpath
    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
    SEP=""
    for dir in $ROOTDIRSRAW ; do
        ROOTDIRS="$ROOTDIRS$SEP$dir"
        SEP="|"
    done
    OURCYGPATTERN="(^($ROOTDIRS))"
    # Add a user-defined pattern to the cygpath arguments
    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
    fi
    # Now convert the arguments - kludge to limit ourselves to /bin/sh
    i=0
    for arg in "$@" ; do
        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option

        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
        else
            eval `echo args$i`="\"$arg\""
        fi
        i=`expr $i + 1`
    done
    case $i in
        0) set -- ;;
        1) set -- "$args0" ;;
        2) set -- "$args0" "$args1" ;;
        3) set -- "$args0" "$args1" "$args2" ;;
        4) set -- "$args0" "$args1" "$args2" "$args3" ;;
        5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
        6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
        7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
        8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
        9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
    esac
fi

# Escape application args
save () {
    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
    echo " "
}
APP_ARGS=`save "$@"`

# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $WPS_SCRIPTS_OPTS -classpath "\"$CLASSPATH\"" org.noisemodelling.runner.Main "$APP_ARGS"

exec "$JAVACMD" "$@"
