#!/bin/sh
#
#  (c) 2004 Sun Microsystems, Inc. Use is subject to license terms.
#
#  Installation script for the Grid Engine dbWriter module
#
#  Scriptname: inst_dbwriter
#

umask 022

DBWRITER_PWD=`pwd`
cd ..
. ./util/arch_variables
. ./util/install_modules/inst_common.sh

CP=$DBWRITER_PWD/lib/dbwriter.jar:$DBWRITER_PWD/lib/pg73jdbc2.jar

BasicSettings
SetUpInfoText

EnterPW_oldmods=`stty -g`

. $DBWRITER_PWD/inst_util.sh

# ---------------------------------------------------------------
# queryParam
# This function collects all setup parameters
# ---------------------------------------------------------------
queryParams()
{
   $INFOTEXT -u "\nGeneric Parameters"

   dummy=`pwd`
   $INFOTEXT -n "\nPlease enter your SGE_ROOT [$dummy] >> "
   SGE_ROOT=`Enter $dummy`

   dummy="default"
   $INFOTEXT -n "\nPlease enter your SGE_CELL [$dummy] >> "
   SGE_CELL=`Enter $dummy`

   queryJavaHome

   $INFOTEXT -u "\nSetup your database connection parameters"
   $INFOTEXT " "

   # set the default database user
   DB_USER=arco_write
   while : 
   do
     $INFOTEXT -ask p o -def p -n \
               "\nEnter your database type ( o = Oracle, p = PostgreSQL ) [p] >> "
     if [ $? -eq 0 ]; then
         queryPostgres
     else 
         queryOracle
     fi

     searchJDBCDriverJar $DB_DRIVER $DBWRITER_PWD/lib

     for i in  $DBWRITER_PWD/lib/*.jar; do
         CP=$CP:$i
     done

     testDB $DBWRITER_PWD
     if [ $? -eq 0 ]; then
        break
     else
        $INFOTEXT -ask y n -def y \
                  -n "Do you want to repeat database connection setup? (y/n) [y] >>" 
        if [ $? -ne 0 ]; then
           break
        fi
     fi
     
   done
   
   dummy=60
   while :
   do
      $INFOTEXT -n "\nPlease enter the interval between two dbwriter runs in seconds [$dummy] >> "
      INTERVAL=`Enter $dummy`
      expr $INTERVAL + 1 > /dev/null 2> /dev/null
      if [ $? -le 1 ]; then
         break
      else
         $INFOTEXT "the interval must be a numerical string"
      fi
   done

#   In SGE the path of the report file is fix
#   We don't need to query this parameter
#   dummy="\$SGE_ROOT/\$SGE_CELL/common/reporting"
#   $INFOTEXT -n "\nPlease enter the N1GE reporting file [$dummy] >> "
#   REPORTING_FILE=`Enter $dummy`
    REPORTING_FILE="\$SGE_ROOT/\$SGE_CELL/common/reporting"

   if [ $DB_DRIVER = "oracle.jdbc.driver.OracleDriver" ]; then
      dummy="\$SGE_ROOT/dbwriter/database/oracle/dbwriter.xml"
   else
      dummy="\$SGE_ROOT/dbwriter/database/postgres/dbwriter.xml"
   fi
   $INFOTEXT -n "\nPlease enter the file with the derived value rules [$dummy] >> "
   DERIVED_FILE=`Enter $dummy`


   dummy="INFO"
   $INFOTEXT "\nThe dbWriter can run with different debug levels"
   $INFOTEXT "Possible values: WARNING INFO CONFIG FINE FINER FINEST" 

   while :
   do
      $INFOTEXT -n "Please enter the debug level of the dbwriter [$dummy] >> "
      DEBUG_LEVEL=`Enter $dummy`
      case "$DEBUG_LEVEL" in
       "WARNING")  break;;
       "INFO")     break;;
       "CONFIG")   break;;
       "FINE")     break;;
       "FINER")    break;;
       "FINEST")   break;;
       *)
          $INFOTEXT "Invalid debug level";;
       esac
   done
}


#
#  Main
#

$INFOTEXT -u "\nWelcome to the Grid Engine installation"
$INFOTEXT -u "\nGrid Engine dbWriter installation"

$INFOTEXT "The dbWriter installation will take approximately 5 minutes\n"

$INFOTEXT -wait -n "Hit <RETURN> to continue >> "

while :
do
   queryParams

   $INFOTEXT -u "\nAll parameters are now collected"

   $INFOTEXT "\n"
   $INFOTEXT "      SGE_ROOT=$SGE_ROOT"
   $INFOTEXT "      SGE_CELL=$SGE_CELL"
   $INFOTEXT "     JAVA_HOME=$JAVA_HOME ($JAVA_VERSION)"
   $INFOTEXT "        DB_URL=$DB_URL"
   $INFOTEXT "       DB_USER=$DB_USER"
   $INFOTEXT "      INTERVAL=$INTERVAL"
   $INFOTEXT "REPORTING_FILE=$REPORTING_FILE"
   $INFOTEXT "  DERIVED_FILE=$DERIVED_FILE"
   $INFOTEXT "   DEBUG_LEVEL=$DEBUG_LEVEL"

   $INFOTEXT -ask y n -def y -n "\nAre this settings correct? (y/n) [y] >> "
   if [ $? -eq 0 ]; then
       break;
   fi
done


BINDIR=$SGE_ROOT/dbwriter/bin
UTILDIR=$SGE_ROOT/dbwriter/util

$INFOTEXT "\nCreate start script sgedbwriter in $BINDIR"

if [ ! -d $BINDIR ]; then
  mkdir -p $BINDIR
  chmod 755 $BINDIR
fi

touch $BINDIR/sgedbwriter
chmod 755 $BINDIR/sgedbwriter

sed -e "s%@@SGE_ROOT@@%${SGE_ROOT}%g" \
    -e "s%@@SGE_CELL@@%${SGE_CELL}%g" \
    -e "s%@@JAVA_HOME@@%${JAVA_HOME}%g" \
    $UTILDIR/sgedbwriter_template > $BINDIR/sgedbwriter

CONFDIR=$SGE_ROOT/$SGE_CELL/common
$INFOTEXT "\nCreate configuration file for dbWriter in $CONFDIR"

touch $CONFDIR/dbwriter.conf
chmod 600 $CONFDIR/dbwriter.conf

sed -e "s%@@DB_USER_PW@@%${DB_PW}%g" \
    -e "s%@@DB_USER@@%${DB_USER}%g"       \
    -e "s%@@DB_URL@@%${DB_URL}%g"         \
    -e "s%@@DB_DRIVER@@%${DB_DRIVER}%g"   \
    -e "s%@@DERIVED_FILE@@%${DERIVED_FILE}%g" \
    -e "s%@@DELETE_FILE@@%${DELETE_FILE}%g" \
    -e "s%@@REPORTING_FILE@@%${REPORTING_FILE}%g" \
    -e "s%@@DEBUG_LEVEL@@%${DEBUG_LEVEL}%g" \
    -e "s%@@INTERVAL@@%${INTERVAL}%g" \
   $UTILDIR/dbwriter.conf_template > $CONFDIR/dbwriter.conf 

$INFOTEXT "Installation of dbWriter completed"
$INFOTEXT "Start the dbWriter with $BINDIR/sgedbwriter start"
