#!/bin/sh
glilang=en

echo
if [ "$glilang" = "es" ]; then
    echo "Interfaz de la Biblioteca Digital Greenstone (Greenstone Librarian Interface - GLI)"
    echo "Copyright (C) 2006, New Zealand Digital Library Project, University Of Waikato"
    echo "La Interfaz de la Biblioteca Digital Greenstone NO INCLUYE ABSOLUTAMENTE NINGUNA GARANTÍA."
    echo "Para mayor información vea los términos de la licencia en LICENSE.txt"
    echo "Este es un software abierto, por lo que lo invitamos a que lo distribuya de forma gratuita"
elif [ "$glilang" = "fr" ]; then
    echo "Interface du Bibliothécaire Greenstone (Greenstone Librarian Interface - GLI)"
    echo "Copyright (C) 2006, New Zealand Digital Library Project, University Of Waikato"
    echo "GLI est fourni sans AUCUNE GARANTIE; pour des détails, voir LICENSE.txt"
    echo "Ceci est un logiciel libre, et vous êtes invité à le redistribuer"
elif [ "$glilang" = "ru" ]; then
    echo "âÉÂÌÉÏÔÅÞÎÙÊ ÉÎÔÅÒÆÅÊÓ Greenstone (Greenstone Librarian Interface - GLI)"
    echo "Copyright (C) 2006, New Zealand Digital Library Project, University Of Waikato"
    echo "âéç ÎÅ ÄÁÅÔ áâóïìàôîï îéëáëéè çáòáîôéê; ÄÅÔÁÌÉ ÓÍ. × ÔÅËÓÔÅ LICENSE.TXT"
    echo "üÔÏ - Ó×ÏÂÏÄÎÏ ÒÁÓÐÒÏÓÔÒÁÎÑÅÍÏÅ ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ É ÷Ù ÍÏÖÅÔÅ ÒÁÓÐÒÏÓÔÒÁÎÑÔØ ÅÇÏ"
else
    echo "Greenstone Librarian Interface (GLI)"
    echo "Copyright (C) 2006, New Zealand Digital Library Project, University Of Waikato"
    echo "GLI comes with ABSOLUTELY NO WARRANTY; for details see LICENSE.txt"
    echo "This is free software, and you are welcome to redistribute it"
fi
echo

##  -------- Run the Greenstone Librarian Interface --------

# This script must be run from within the directory in which it lives
thisdir=`pwd`
if [ ! -f "${thisdir}/gli.sh" ]; then
    if [ "$glilang" = "es" ]; then
        echo "Este guión deberá ejecutarse desde el directorio en el que reside."
    elif [ "$glilang" = "fr" ]; then
	echo "Ce script doit être exécuté à partir du répertoire dans lequel il se trouve."
    elif [ "$glilang" = "ru" ]; then
	echo "üÔÏÔ ÓËÒÉÐÔ ÄÏÌÖÅÎ ÂÙÔØ ×ÚÑÔ ÉÚ ÄÉÒÅËÔÏÒÉÉ, × ËÏÔÏÒÏÊ ÏÎ ÒÁÓÐÏÌÏÖÅÎ"
    else
	echo "This script must be run from the directory in which it resides."
    fi
    exit 1
fi


##  ---- Determine GSDLHOME ----
gsdlpath=

# Some users may set the above line manually
if [ "x$gsdlpath" = "x" ]; then
    # Check the environment variable first
    if [ "x$GSDLHOME" != "x" ]; then
	gsdlpath=$GSDLHOME

    # If it is not set, assume that the GLI is installed as a subdirectory of Greenstone
    else
	gsdlpath=`(cd .. && pwd)`
    fi
fi

# Check that the Greenstone installation looks OK
if [ "$glilang" = "es" ]; then
    echo "Revisando GSDL: $gsdlpath"
elif [ "$glilang" = "fr" ]; then
    echo "Vérification de GSDL: $gsdlpath"
elif [ "$glilang" = "ru" ]; then
    echo "ðÒÏ×ÅÒËÁ GSDL: $gsdlpath"
else
    echo "Checking GSDL: $gsdlpath"
fi
if [ ! -f "${gsdlpath}/setup.bash" ] ; then
    echo
    if [ "$glilang" = "es" ]; then
	echo "No se pudo encontrar la instalación de Greenstone o está incompleta."
        echo "Trate de reinstalar Greenstone y a continuación ejecute nuevamente"
	echo "este guión."
    elif [ "$glilang" = "fr" ]; then
	echo "L'installation de Greenstone est introuvable ou incomplète."
	echo "Essayez de réinstaller Greenstone et exécutez ce script à nouveau."
    elif [ "$glilang" = "ru" ]; then
	echo "éÎÓÔÁÌÌÑÃÉÑ Greenstone ÎÅ ÂÙÌÁ ÎÁÊÄÅÎÁ ÉÌÉ ÏÎÁ ÎÅÐÏÌÎÁ."
	echo "ðÏÐÒÏÂÕÊÔÅ ÐÏ×ÔÏÒÎÏ ÕÓÔÁÎÏ×ÉÔØ Greenstone, Á ÚÁÔÅÍ ××ÅÓÔÉ ÜÔÏÔ ÓËÒÉÐÔ ÓÎÏ×Á."
    else
	echo "The Greenstone installation could not be found, or is incomplete."
	echo "Try reinstalling Greenstone then running this script again."
    fi
    exit 1
fi

# Setup Greenstone, unless it has already been done
if [ "x$GSDLHOME" = "x" ]; then
    cd "$gsdlpath"
    . setup.bash
    cd "$thisdir"
fi


##  ---- Check Perl exists ----
perlpath=

# Some users may set the above line manually
if [ "x$perlpath" = "x" ]; then
    # Check if Perl is on the search path
    perlpath=`which perl 2> /dev/null`
fi

# Check that a Perl executable has been found
if [ "$glilang" = "es" ]; then
    echo "Revisando Perl: $perlpath"
elif [ "$glilang" = "fr" ]; then
    echo "Vérification de Perl: $perlpath"
elif [ "$glilang" = "ru" ]; then
    echo "ðÒÏ×ÅÒËÁ Perl: $perlpath"
else
    echo "Checking Perl: $perlpath"
fi
if [ ! -x "$perlpath" ] ; then
    echo
    if [ "$glilang" = "es" ]; then
	echo "La Interfaz de la Biblioteca Digital Greenstone requiere Perl para "
	echo "poder operar, pero éste no aparece en su sistema. Por favor asegúrese "
	echo "de que Perl está instalado y se encuentra en su ruta de búsqueda. A "
	echo "continuación ejecute nuevamente este guión."
    elif [ "$glilang" = "fr" ]; then
	echo "Greenstone Librarian Interface nécessite perl pour son fonctionnement,"
	echo "mais perl n'a pas pu être détecté dans votre système. Veuillez vous "
	echo "assurer que perl est installé et est spécifié dans votre chemin de "
	echo "recherche, puis redémarrez ce script."
    elif [ "$glilang" = "ru" ]; then
	echo "âÉÂÌÉÏÔÅÞÎÙÊ ÉÎÔÅÒÆÅÊÓ Greenstone ÔÒÅÂÕÅÔ Perl, ÞÔÏÂÙ ÉÍÅÔØ ×ÏÚÍÏÖÎÏÓÔØ"
	echo "ÒÁÂÏÔÁÔØ, ÎÏ Perl ÎÅ ÂÙÌ × ×ÁÛÅÊ ÓÉÓÔÅÍÅ. ðÏÖÁÌÕÊÓÔÁ, ÐÏÄÔ×ÅÒÄÉÔÅ, ÞÔÏ "
	echo "Perl ÕÓÔÁÎÏ×ÌÅÎ É ÎÁÈÏÄÉÔÓÑ ÎÁ ×ÁÛÅÍ ÐÕÔÉ ÐÏÉÓËÁ, ÚÁÔÅÍ ÐÏ×ÔÏÒÎÏ××ÅÄÉÔÅ"
	echo "ÜÔÏÔ ÓËÒÉÐÔ."
    else
	echo "The Greenstone Librarian Interface requires perl in order to operate,"
	echo "but perl could not be detected on your system. Please ensure that perl"
	echo "is installed and is on your search path, then rerun this script."
    fi
    exit 1
fi


## ---- Check Java exists ----
javapath=

# Some users may set the above line manually
if [ "x$javapath" = "x" ]; then

    # If it is set, use the JAVA_HOME environment variable
    if [ "x$JAVA_HOME" != "x" ]; then
	javapath="$JAVA_HOME/bin/java"

    # Check if Java is on the search path
    else
	javapath=`which java 2> /dev/null`
    fi
fi

# Check that a Java executable has been found
if [ "$glilang" = "es" ]; then
    echo "Revisando Java: $javapath"
elif [ "$glilang" = "fr" ]; then
    echo "Vérification de Java: $javapath"
elif [ "$glilang" = "ru" ]; then
    echo "ðÒÏ×ÅÒËÁ Java: $javapath"
else
    echo "Checking Java: $javapath"
fi
if [ ! -x "$javapath" ]; then
    echo
    if [ "$glilang" = "es" ]; then
	echo "No se pudo localizar una versión apropiada de Java. Usted deberá "
	echo "instalar un Ambiente de Ejecución Java (versión 1.4 o superior) "
	echo "antes de correr la Interfaz de la Biblioteca Digital Greenstone."
    elif [ "$glilang" = "fr" ]; then
	echo "Une version adéquate de Java n'a pas pu être localisée."
	echo "Vous devez installer un Java Runtime Environment (version 1.4 ou"
	echo "supérieur) avant de démarrer Greenstone Librarian Interface."
    elif [ "$glilang" = "ru" ]; then
	echo "îÅ ÕÄÁÌÏÓØ ÏÐÒÅÄÅÌÉÔØ ÍÅÓÔÏÎÁÈÏÖÄÅÎÉÅ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ ×ÅÒÓÉÉ Java."
	echo "÷Ù ÄÏÌÖÎÙ ÕÓÔÁÎÏ×ÉÔØ Java Runtime Environment (×ÅÒÓÉÀ 1.4 ÉÌÉ ×ÙÛÅ)"
	echo "ÐÅÒÅÄ ××ÏÄÏÍ ÂÉÂÌÉÏÔÅÞÎÏÇÏ ÉÎÔÅÒÆÅÊÓÁ Greenstone."
    else
	echo "Failed to locate an appropriate version of Java. You must install a"
	echo "Java Runtime Environment (version 1.4 or greater) before running the"
	echo "Greenstone Librarian Interface."
    fi
    exit 1
fi


## -- Check the version of Java is new enough (1.4.0 or higher) to run the GLI --
`$javapath -classpath . CheckJavaVersion > /dev/null`
if [ $? -ne 2 ] ; then
    echo
    if [ "$glilang" = "es" ]; then
	echo "La versión del Ambiente de Ejecución Java (JRE por sus siglas en "
	echo "inglés) que usted tiene instalada es demasiado vieja para ejecutar "
	echo "la Interfaz de la Biblioteca Digital Greenstone. Por favor instale "
	echo "una nueva versión del Ambiente de Ejecución Java (versión 1.4 o "
	echo "posterior) y ejecute nuevamente este guión."
    elif [ "$glilang" = "fr" ]; then
	echo "La version de Java Runtime Environment que vous avez installée est"
	echo "trop vielle pour faire fonctionner Greenstone Librarian Interface."
	echo "Veuillez installer une nouvelle version du JRE (version 1.4 ou plus"
	echo "récente) et redémarrez le script."
    elif [ "$glilang" = "ru" ]; then
	echo "÷ÅÒÓÉÑ Java Runtime Environment, ËÏÔÏÒÕÀ ÷Ù ÕÓÔÁÎÏ×ÉÌÉ, ÏÞÅÎØ ÓÔÁÒÁ,"
	echo "ÞÔÏÂÙ ÕÐÒÁ×ÌÑÔØ ÂÉÂÌÉÏÔÅÞÎÙÍ ÉÎÔÅÒÆÅÊÓÏÍ Greenstone. ðÏÖÁÌÕÊÓÔÁ, "
	echo "ÕÓÔÁÎÏ×ÉÔÅ ÎÏ×ÕÀ ×ÅÒÓÉÀ JRE (×ÅÒÓÉÀ 1.4 ÉÌÉ ÂÏÌÅÅ ÎÏ×ÕÀ) É"
	echo "ÐÅÒÅÕÓÔÁÎÏ×ÉÔÅ ÜÔÏÔ ÓËÒÉÐÔ"
    else
	echo "The version of the Java Runtime Environment you have installed is too"
	echo "old to run the Greenstone Librarian Interface. Please install a new"
	echo "version of the JRE (version 1.4 or newer) and rerun this script."
    fi
    exit 1
fi

## ---- Check that the GLI has been compiled ----
if [ ! -f "classes/org/greenstone/gatherer/GathererProg.class" ] && [ ! -f "GLI.jar" ]; then
    echo
    if [ "$glilang" = "es" ]; then
	echo "Usted necesita compilar la Interfaz de la Biblioteca Digital Greenstone"
	echo "(por medio de makegli.sh) antes de ejecutar este guión."
    elif [ "$glilang" = "fr" ]; then
	echo "Vous devez compiler le Greenstone Interface (en utilisant makegli.sh)"
	echo "avant d'exécuter ce script."
    elif [ "$glilang" = "ru" ]; then
	echo "÷Ù ÄÏÌÖÎÙ ËÏÍÐÉÌÉÒÏ×ÁÔØ ÂÉÂÌÉÏÔÅÞÎÙÊ ÉÎÔÅÒÆÅÊÓ Greenstone"
	echo "(ÉÓÐÏÌØÚÕÑ makegli.sh) ÐÅÒÅÄ ××ÏÄÏÍ ÜÔÏÇÏ ÓËÒÉÐÔÁ"
    else
	echo "You need to compile the Greenstone Librarian Interface (using makegli.sh)"
	echo "before running this script."
    fi
    exit 1
fi

## ---- Finally, run the GLI ----
echo
if [ "$glilang" = "es" ]; then
    echo "Ejecutando la Interfaz de la Biblioteca Digital Greenstone..."
elif [ "$glilang" = "fr" ]; then
    echo "Exécution de Greenstone Librarian Interface"
elif [ "$glilang" = "ru" ]; then
    echo "ôÅËÕÝÉÊ ÂÉÂÌÉÏÔÅÞÎÙÊ ÉÎÔÅÒÆÅÊÓ Greenstone..."
else
    echo "Running the Greenstone Librarian Interface..."
fi

stop_gli=0
while [ "$stop_gli" = "0" ] ; do 

# Other arguments you can provide to GLI to work around memory limitations, or debug
# -Xms<number>M    To set minimum memory (by default 32MB)
# -Xmx<number>M    To set maximum memory (by default the nearest 2^n to the total remaining physical memory)
# -verbose:gc      To set garbage collection messages
# -Xincgc          For incremental garbage collection (significantly slows performance)
# -Xprof           Function call profiling
# -Xloggc:<file>   Write garbage collection log



  $javapath -Xmx128M -classpath classes/:GLI.jar:lib/apache.jar:lib/qfslib.jar org.greenstone.gatherer.GathererProg -gsdl $GSDLHOME -gsdlos $GSDLOS $*
  exit_status=$?

  if [ "$exit_status" != "2" ] ; then
    stop_gli=1
  else
    echo
    if [ "$glilang" = "es" ]; then
        echo "Restarting/Ejecutando la Interfaz de la Biblioteca Digital Greenstone..."
    elif [ "$glilang" = "fr" ]; then
        echo "Restarting/Exécution de Greenstone Librarian Interface"
    elif [ "$glilang" = "ru" ]; then
        echo "Restarting/ôÅËÕÝÉÊ ÂÉÂÌÉÏÔÅÞÎÙÊ ÉÎÔÅÒÆÅÊÓ Greenstone..."
    else
        echo "Restarting the Greenstone Librarian Interface..."
    fi

  fi
done 

if [ "$glilang" = "es" ]; then
    echo "¡Hecho!"
elif [ "$glilang" = "fr" ]; then
    echo "Terminé!"
elif [ "$glilang" = "ru" ]; then
    echo "÷ÙÐÏÌÎÅÎÏ!"
else
    echo "Done!"
fi
