#!/bin/sh -

# This script will start Artemis on a UNIX system.  This script should
# be left in the same directory as the rest of the Artemis
# distribution, so that the java class files can be found.  If
# necessary a symbolic link can be made to this script from
# /usr/local/bin/ or elsewhere. 

# resolve links - $0 may be a link
PRG=$0
progname=`basename $0`

#PSU_PROD_JAVA_VERSION=1.4.2
#. $PSU_CONFIG_DIR/shell/java_environment.sh

while [ -h "$PRG" ] ; do
  ls=`ls -ld "$PRG"`
  link=`expr "$ls" : '.*-> \(.*\)$'`
  if expr "$link" : '.*/.*' > /dev/null; then
    PRG="$link"
  else
    PRG="`dirname $PRG`/$link"
  fi
done

ARTEMIS_HOME=`dirname "$PRG"`/.
LIBDIR=/nfs/pathsoft/prod/javalibs

CLASSPATH=$ARTEMIS_HOME:$ARTEMIS_HOME/lib/biojava.jar:$ARTEMIS_HOME/lib/jemAlign.jar:$ARTEMIS_HOME/lib/jakarta-regexp-1.2.jar:$ARTEMIS_HOME/lib/macos.jar:$ARTEMIS_HOME/lib/postgresql-8.4-701.jdbc3.jar:$CLASSPATH

# batik jars
CLASSPATH=$CLASSPATH:$ARTEMIS_HOME/lib/batik/batik-awt-util.jar:$ARTEMIS_HOME/lib/batik/batik-dom.jar:$ARTEMIS_HOME/lib/batik/batik-ext.jar:$ARTEMIS_HOME/lib/batik/batik-svggen.jar:$ARTEMIS_HOME/lib/batik/batik-util.jar:$ARTEMIS_HOME/lib/batik/batik-xml.jar:$ARTEMIS_HOME/lib/batik/batik-codec.jar

# j2ssh jars
CLASSPATH=$CLASSPATH:$ARTEMIS_HOME/lib/j2ssh/commons-logging.jar:$ARTEMIS_HOME/lib/j2ssh/j2ssh-core.jar:$ARTEMIS_HOME/lib/j2ssh/

# iBatis jars
CLASSPATH=$CLASSPATH:$ARTEMIS_HOME/lib/ibatis/ibatis-2.3.4.726.jar:$ARTEMIS_HOME/lib/ibatis/:$ARTEMIS_HOME/lib/ibatis/log4j-1.2.14.jar:$ARTEMIS_HOME/lib/ibatis/cglib-nodep-2.2.jar
export CLASSPATH

# picard jars
CLASSPATH=$ARTEMIS_HOME/lib/picard/sam.jar:$ARTEMIS_HOME/lib/picard/picard.jar:$ARTEMIS_HOME/lib/commons-net-2.2.jar:$CLASSPATH
export CLASSPATH


ARTEMIS_PROPERTIES="-Dartemis.environment=UNIX"

# Allow URLs to work from behind firewalls
if [ "$http_proxy" = "" ]
then
  http_proxy=$HTTP_PROXY
fi

if [ "$http_proxy" = "" ]
then
  http_proxy=$HTTP_proxy
fi

if [ "$http_proxy" != "" ]
then
  ARTEMIS_PROPERTIES="$ARTEMIS_PROPERTIES -DproxySet=true "`echo $http_proxy | sed 's/http:\/\/\(.*\):\(.*\)/ -Dhttp.proxyHost=\1 -Dhttp.proxyPort=\2/'`
fi


# "-mx500m" sets the maximum amount of memory that Artemis can use.  This may
# need to be increased when dealing with large files
MEM="-mx500m -ms20m"

if [ "$JVM_FLAGS" = "" ]
then
    FLAGS="$MEM -noverify"
else
    FLAGS="$MEM -noverify $JVM_FLAGS"
fi


QUIET=no
DEBUG=no

if [ $# = 0 ]
then
    :
else
    if [ "$1" = "-h" -o "$1" = "--help" -o "$1" = "-help" ]
    then
        cat <<EOF

SYNOPSIS
        Artemis: Genome Browser and Annotation Tool
USAGE
        $0 [options] <SEQUENCE_FILE> [+FEATURE_FILE ...]
OPTIONS
        SEQUENCE_FILE                  An EMBL, GenBank, FASTA, or GFF3 file
        FEATURE_FILE                   An Artemis TAB file, or GFF file

        -options FILE                  Read a text file of options from FILE
        -debug                         Run using the debugging JVM instead
        -fast | -fast64                Use the FastVM (hp Tru64 UNIX) with 32/64 bit pointers

        -Dblack_belt_mode=?            Keep warning messages to a minimum [true,false]
        -Doffset=XXX                   Open viewer at base position XXX [integer >= 1]
        -Duserplot=FILE[,FILE2]        Open one or more userplots
        -Dloguserplot=FILE[,FILE2]     Open one or more userplots, take log(data)
        -Dbam=FILE[,FILE2,...]         Open one or more BAM, VCF or BCF files
        -DbamClone=n                   Open all BAMs in multiple (n > 1) panels
        -Dbam[1,2,..]=FILE[,FILE2,..]  Open BAMs in separate panels
        -Dshow_snps                    Show SNP marks in BamView
        -Dshow_snp_plot                Open SNP plot in BamView
        -Dshow_cov_plot                Open coverage plot in BamView
        -Dshow_forward_lines=?         Hide/show forward frame lines [true,false]
        -Dshow_reverse_lines=?         Hide/show reverse frame lines [true,false]
        -Dchado="h:p/d?u"              Get Artemis to open this CHADO database
        -Dread_only                    Open CHADO database read-only
EXAMPLES
        % art AJ006275.embl 
        % art contigs.fa +annotation.gff +islands.tab
        % art -Dblack_belt_mode=true -Dbam=ecoli_hiseq.bam E_coli_K12.gbk
        % art -Duserplot=repeatmap.plot,geecee.plot Plasmid.gff3
HOMEPAGE
        http://www.sanger.ac.uk/resources/software/artemis/

EOF
        exit 0
    fi


    while test $# != 0
    do
        case $1 in
        -options) FLAGS="$FLAGS -Dextra_options=$2"; shift ;;
        -D*) FLAGS="$FLAGS $1" ;;
        -fast) FAST_FLAG="-fast " ;; # -fast must be the first argument
        -fast64) FAST_FLAG="-fast64 " ;; # -fast64 must be the first argument
        -quiet) QUIET=yes ; FLAGS="$FLAGS -Drun_quietly=true" ;;
        -debug) DEBUG=yes ;;
        *) break ;;
        esac
        shift
    done
fi

FLAGS=$FAST_FLAG$FLAGS

if [ "$JAVA_VM" = "" ]
then
    if [ "$DEBUG" = yes ]
    then
        JAVA=java_g
    else
	JAVA=java
    fi
else
    JAVA=$JAVA_VM
fi

PLATTMP=`uname`
if [ "$PLATTMP" = "Darwin" ]
then
  FLAGS="$FLAGS -Dapple.laf.useScreenMenuBar=true -Dcom.apple.mrj.application.apple.menu.about.name=Artemis"
fi

if [ "$QUIET" = no ]
then
    echo starting Artemis with flags: $FLAGS $ARTEMIS_PROPERTIES 1>&2
fi

$JAVA -Djdbc.drivers=org.postgresql.Driver $FLAGS $ARTEMIS_PROPERTIES uk.ac.sanger.artemis.components.ArtemisMain $*
