#!/bin/bash

DEBUG=NO
DEBUG_OUT_FILE=/dev/null

if [[ $DEBUG == "YES" ]]; then
   DEBUG_OUT_FILE="/tmp/alrt_prg.txt"
   date > $DEBUG_OUT_FILE
   echo args : $* >> $DEBUG_OUT_FILE
fi


OPFMT_MESSAGE=
ALERT_NAME=
ALERT_MESSAGE=
POLICY_LEVEL=
ALERT_TIME=
DATABASE_NAME=
SESSION_ID=
SESSION_SERIAL=
CLINET_IP_ADDRESS=
CLIENT_HOSTNAME=
DB_ACCOUNT_NAME=
APPLICATION_NAME=
OS_ACCOUNT_NAME=
SERVER_NAME=
SERVER_IP_ADDRESS=
SESSION_PROTOCOL=
SESSION_ID=
ROW_COUNT=
SQL_TEXT=
ERR_CLASS="ERROR"


while (( $# > 0 ))
do
  case $1 in
    -n)
      if [[ $2 != "-"* ]]; then
	shift
 	ALERT_NAME=$1
	echo "option alert name:" $ALERT_NAME >> $DEBUG_OUT_FILE
	fi
      ;;
    -m)
      if [[ $2 != "-"* ]]; then
	shift
	ALERT_MESSAGE=$1
	echo "option alert message:" $ALERT_MESSAGE >> $DEBUG_OUT_FILE
	fi
      ;;
    -g)
      if [[ $2 != "-"* ]]; then
	shift
	POLICY_LEVEL=$1
	OPFMT_MESSAGE="$OPFMT_MESSAGE Policy Level:$POLICY_LEVEL"
	echo "option policy level:" $POLICY_LEVEL >> $DEBUG_OUT_FILE
      	if [[ $POLICY_LEVEL == "Minor"* ]]; then
		ERR_CLASS="WARNING"
	   fi
      	if [[ $POLICY_LEVEL == "Warn"* ]]; then
		ERR_CLASS="WARNING"
	   fi
      	if [[ $POLICY_LEVEL == "Info"* ]]; then
		ERR_CLASS="INFO"
	   fi
	fi
      ;;
    -t)
      if [[ $2 != "-"* ]]; then
	shift
	ALERT_TIME=$1
	OPFMT_MESSAGE="$OPFMT_MESSAGE Alert Time:$ALERT_TIME"
	fi
      ;;
    -I)
     if [[ $2 != "-"* ]]; then
	shift
	DATABASE_NAME=$1
	OPFMT_MESSAGE="$OPFMT_MESSAGE Database Name:$DATABASE_NAME"
	fi
      ;;
    -S)
     if [[ $2 != "-"* ]]; then
	shift
	SESSION_ID=$1
	OPFMT_MESSAGE="$OPFMT_MESSAGE Oracle Session ID:$SESSION_ID"
	fi
      ;;
    -R)
     if [[ $2 != "-"* ]]; then
	shift
	SESSON_SERIAL=$1
	OPFMT_MESSAGE="$OPFMT_MESSAGE Oracle Serial No.:$SESSON_SERIAL"
	fi
      ;;
    -p)
     if [[ $2 != "-"* ]]; then
	shift
	CLIENT_IP_ADDRESS=$1
	OPFMT_MESSAGE="$OPFMT_MESSAGE Cilnet IP Adress:$CLIENT_IP_ADDRESS"
	fi
      ;;
    -h)
     if [[ $2 != "-"* ]]; then
	shift
	CLIENT_HOSTNAME=$1
	OPFMT_MESSAGE="$OPFMT_MESSAGE Cilnet Hostname:$CLIENT_HOSTNAME"
	fi
      ;;
    -d)
     if [[ $2 != "-"* ]]; then
	shift
	DB_ACCOUNT_NAME=$1
	OPFMT_MESSAGE="$OPFMT_MESSAGE DB Account Name:$DB_ACCOUNT_NAME"
	fi
      ;;
    -A)
     if [[ $2 != "-"* ]]; then
	shift
	APPLICATION_NAME=$1
	OPFMT_MESSAGE="$OPFMT_MESSAGE Application Name:$APPLICATION_NAME"
	fi
      ;;
    -o)
     if [[ $2 != "-"* ]]; then
	shift
	OS_ACCOUNT_NAME=$1
	OPFMT_MESSAGE="$OPFMT_MESSAGE OS Account Name:$OS_ACCOUNT_NAME"
	fi
      ;;
    -O)
     if [[ $2 != "-"* ]]; then
	shift
	SERVER_NAME=$1
	OPFMT_MESSAGE="$OPFMT_MESSAGE Server Name:$SERVER_NAME"
	fi
      ;;
    -s)
     if [[ $2 != "-"* ]]; then
	shift
	SERVER_IP_ADDRESS=$1
	OPFMT_MESSAGE="$OPFMT_MESSAGE Server IP Adress:$SERVER_IP_ADDRESS"
	fi
      ;;
    -P)
     if [[ $2 != "-"* ]]; then
	shift
	SESSION_PROTOCOL=$1
	OPFMT_MESSAGE="$OPFMT_MESSAGE Session Protocol:$SESSION_PROTOCOL"
	fi
      ;;
    -k)
     if [[ $2 != "-"* ]]; then
	shift
	SESSION_ID=$1
	OPFMT_MESSAGE="$OPFMT_MESSAGE Session ID:$SESSION_ID"
	fi
      ;;
    -r)
     if [[ $2 != "-"* ]]; then
	shift
	ROW_COUNT=$1
	OPFMT_MESSAGE="$OPFMT_MESSAGE Row Count:$ROW_COUNT"
	fi
      ;;
    -T)
     if [[ $2 != "-"* ]]; then
	shift
	SQL_TEXT=$1
	OPFMT_MESSAGE="$OPFMT_MESSAGE SQL Text:$SQL_TEXT"
	fi
      ;;
  esac
  shift
done

CMD_MSG="$ALERT_NAME $ALERT_MESSAGE $OPFMT_MESSAGE"
#CMD_MSG=$(echo $CMD_MSG| sed "s/ /_/g")

              echo -n /opt/systemwalker/bin/opfmt :  >> $DEBUG_OUT_FILE 2>&1
              echo CMD_ARG="-l DBALERT -s $ERR_CLASS  \"$CMD_MSG\" " >> $DEBUG_OUT_FILE 2>&1
/opt/systemwalker/bin/opfmt -l DBALERT -s $ERR_CLASS " \"$CMD_MSG\" " >> $DEBUG_OUT_FILE 2>&1

exit 0

