#!/bin/bash
##############################################################################
# Copyright (c) Members of the EGEE Collaboration. 2008.
# See http://www.eu-egee.org/partners/ for details on the copyright
# holders.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS
# OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
##############################################################################
#
# NAME :        config_lfc_oracle
#
# DESCRIPTION : This function configures Oracle
#
# AUTHORS :     Akos.Frohner@cern.ch
#
# YAIM MODULE:  glite-yaim-lfc
#
##############################################################################

config_lfc_oracle_check () {
 requires $1 LFC_DB LFC_DB_HOST LFC_DB_PASSWORD LFC_HOST GLITE_LOCATION LCG_LOCATION
 retcode=$?
 return ${retcode}
}


function config_lfc_oracle () {

INSTALL_ROOT=${INSTALL_ROOT:-/opt}


####@ Check that the LFC DB password doesn't contain "@"

contains=`echo ${LFC_DB_PASSWORD} | grep "@"`
if [ ! "x${contains}x" = "xx" ]; then
        yaimlog ERROR "The LFC database user password cannot contain the \"@\" character. Exiting."
        return 1
fi


CONNECT_STRING=${LFC_DB}/${LFC_DB_PASSWORD}@${LFC_DB_HOST}
# tnsnames.ora is supposed to be in /home/lfcmgr/.tnsadmin/tnsnames.ora
TNS_ADMIN=${TNS_ADMIN:-/home/${LFCMGR_USER}/.tnsadmin}

# check if the schema is there already, and add it if not
#
QUERY_FILE=`mktemp "/tmp/config_lfc_oracle.XXXXXX"`
echo "SET ECHO OFF NEWP 0 SPA 0 PAGES 0 FEED OFF HEAD OFF TRIMS ON" > $QUERY_FILE
echo "select count(*) from schema_version;" >> $QUERY_FILE

NUM_ENTRIES=$(TNS_ADMIN=$TNS_ADMIN ${SQLPLUSBINARY} -S ${CONNECT_STRING} < $QUERY_FILE)
RETVAL=$?
/bin/rm $QUERY_FILE

if [ $RETVAL -eq 0 ] ; then
  NUM_ENTRIES=$(echo $NUM_ENTRIES| tr -d "\t \n")
  ERROR=$(echo $NUM_ENTRIES|grep "ERROR")
  RETVAL=$?
  if [ $RETVAL -eq 0 ] ; then
    ${SQLPLUSBINARY} ${CONNECT_STRING} < ${LCG_LOCATION}/share/lcgdm/create_lfc_tables_oracle.sql
  fi
else
  yaimlog ERROR "Could not connect to Oracle using supplied connect string : ${LFC_DB}/XXXXXXX@${LFC_DB_HOST}"
  echo $NUM_ENTRIES
  return 1
fi

echo "${CONNECT_STRING}" > ${LCG_LOCATION}/etc/NSCONFIG
chown ${LFCMGR_USER}:${LFCMGR_GROUP} ${LCG_LOCATION}/etc/NSCONFIG
chmod 660 ${LCG_LOCATION}/etc/NSCONFIG

return 0

} 
