#!/bin/sh
#
# Install HBASE and InterBase,InterClient
#
umask 0066
PATH="$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/ucb"
LANG=C
LC_ALL=C
export LANG LC_ALL PATH
LOG_FILE=/tmp/hcmdsinst.log
LOG_FILE_B=/tmp/hcmdsinst_tmp_b.log
LOG_FILE_C=/tmp/hcmdsinst_tmp_c.log
RTN_FILE=/tmp/hcmdsrtn.inst
BASE_PATH=/opt/HiCommand/Base
ENFORCEFLAGFILE=${BASE_PATH}/sample/conf/enforceflag
ENFORCE2FLAGFILE=${BASE_PATH}/sample/conf/enforce2flag
NEWBUILDFILE=${BASE_PATH}/build
THEMESETCONFFLAG_FILE=inst_themesetcopyflag
THEMESETCONFFLAG_FILEPATH=/var${BASE_PATH}/tmp/inst_themesetcopyflag
THEMESETCONF_FILE=themeset.conf
PKG=HBASE

rm -f ${LOG_FILE}
rm -f ${RTN_FILE}
date > ${LOG_FILE}
chmod 666 ${LOG_FILE} 1> /dev/null 2> /dev/null
echo "Install.sh starts. " >> ${LOG_FILE}

echo "System information. " >> ${LOG_FILE}
echo "uname -a" >> ${LOG_FILE}
uname -a >> ${LOG_FILE}
echo "vmstat" >> ${LOG_FILE}
vmstat >> ${LOG_FILE}
echo "df -lk" >> ${LOG_FILE}
df -lk >> ${LOG_FILE}

HBASE_ABI_DIR=""
FLAG_C_OPTION=false
FLAG_N_OPTION=false
FLAG_ENF_OPTION=false
FLAG_ENF2_OPTION=false

################# Checking if HBASE is already installed ############
PKG_INFO=`pkgparam HBASE PKG 2>/dev/null`
##### ENFORCE FlagFile Delete #####
    if [ -f ${ENFORCEFLAGFILE} ]
    then
        rm -f ${ENFORCEFLAGFILE} 1> /dev/null 2> /dev/null
        RTN=$?
        if [ ${RTN} -eq 0 ]
        then
        echo "ENFORCE FlagFile deletion  succeeded. " >> ${LOG_FILE}
       fi
    fi
##### ENFORCE2 FlagFile Delete #####
    if [ -f ${ENFORCE2FLAGFILE} ]
    then
        rm -f ${ENFORCE2FLAGFILE} 1> /dev/null 2> /dev/null
        RTN=$?
        if [ ${RTN} -eq 0 ]
        then
        echo "ENFORCE2 FlagFile deletion  succeeded. " >> ${LOG_FILE}
       fi
    fi

############### Check parameter ###########
echo "Checking parameter of install.sh. " >> ${LOG_FILE}
if [ $# -le 0 ]
then
    echo "[ERROR]There is no option. " >> ${LOG_FILE}
    echo 2 > ${RTN_FILE}
    exit 2 
fi

if [ $# -le 1 ]
then
    echo "[ERROR]The option specified is insufficient. " >> ${LOG_FILE}
    echo 2 > ${RTN_FILE}
    exit 2 
fi

if [ $# -le 5 ]
then

while [ $# -gt 0 ]
do
    case $1 in
         -c) FLAG_C_OPTION=true
             echo "-c option was set. " >> ${LOG_FILE}
             case $2 in
                 -c) echo "[ERROR]Invalid installation option. -c option is twice." >> ${LOG_FILE}
                     echo 2 > ${RTN_FILE}
    				 exit 2 
                     ;;
                 -N) echo "[ERROR]It is necessary to path the after of -c" >> ${LOG_FILE}
                     echo 2 > ${RTN_FILE}
    				 exit 2 
                     ;;
                 -*) echo "[ERROR]The option specification is invalid. " >> ${LOG_FILE}
                     echo 2 > ${RTN_FILE}
    				 exit 2 
                     ;;
                 *)  HBASE_ABI_DIR=$2
                     if [  '${HBASE_ABI_DIR}' = "" ] >> ${LOG_FILE}
                     then
                     	echo "[ERROR]There is no path." >> ${LOG_FILE}
                     	echo 2 > ${RTN_FILE}
    					exit 2 
                     fi
                     echo $2 >> ${LOG_FILE}
                     shift 2
                     ;;
             esac
             ;;
         -N) FLAG_N_OPTION=true
             echo "-N option was set. " >> ${LOG_FILE}
             shift
             ;;
         -ENFORCE2) FLAG_ENF2_OPTION=true
             echo "-ENFORCE2 option was set. " >> ${LOG_FILE}
             shift
             ;;
         -ENFORCE) FLAG_ENF_OPTION=true
             echo "-ENFORCE option was set. " >> ${LOG_FILE}
             shift
             ;;
         
          *) echo "[ERROR]The option specification is invalid. " >> ${LOG_FILE}
             echo 2 > ${RTN_FILE}
    		 exit 2 
             ;;
    esac
done

else
    echo "[ERROR]The options are invalid. " >> ${LOG_FILE}
    echo 2 > ${RTN_FILE}
    exit 2 
fi

if [ ${FLAG_C_OPTION} = false ]
then
    echo "[ERROR]there is no -c" >> ${LOG_FILE}
    echo 2 > ${RTN_FILE}
    exit 2 
fi
if [  '${HBASE_ABI_DIR}' = "" ]
then
	echo "[ERROR]There is no path." >> ${LOG_FILE}
	echo 2 > ${RTN_FILE}
    exit 2 
fi
echo "Checking parameter END. " >> ${LOG_FILE}


##### ENFORCE Option True #####
if [ ${FLAG_ENF_OPTION} = true ]
then
echo "ENFORCE Option True " >> ${LOG_FILE}
echo "ENFORCE FlagFile Create. " >> ${LOG_FILE}
  #
  if [ -d ${BASE_PATH}/sample/conf ]
    then
    echo "ENFORCE FlagFile. " > ${ENFORCEFLAGFILE}
    chmod 444 ${ENFORCEFLAGFILE} 1> /dev/null 2> /dev/null
  else 
    mkdir -p ${BASE_PATH}/sample/conf 1> /dev/null 2> /dev/null
    RTN=$?
    if [ ${RTN} -eq 0 ]
      then
      echo "sample/conf directory Create. " >> ${LOG_FILE}
      echo "ENFORCE FlagFile. " > ${ENFORCEFLAGFILE}
      chmod 711 ${BASE_PATH} 1> /dev/null 2> /dev/null
      chmod 711 ${BASE_PATH}/sample 1> /dev/null 2> /dev/null
      chmod 711 ${BASE_PATH}/sample/conf  1> /dev/null 2> /dev/null
      chmod 444 ${ENFORCEFLAGFILE} 1> /dev/null 2> /dev/null
    fi
  fi
fi
##### ENFORCE2 Option True #####
if [ ${FLAG_ENF2_OPTION} = true ]
then
echo "ENFORCE2 Option True " >> ${LOG_FILE}
echo "ENFORCE2 FlagFile Create. " >> ${LOG_FILE}
  #
  if [ -d ${BASE_PATH}/sample/conf ]
    then
    echo "ENFORCE2 FlagFile. " > ${ENFORCE2FLAGFILE}
    chmod 444 ${ENFORCE2FLAGFILE} 1> /dev/null 2> /dev/null
  else 
    mkdir -p ${BASE_PATH}/sample/conf 1> /dev/null 2> /dev/null
    RTN=$?
    if [ ${RTN} -eq 0 ]
      then
      echo "sample/conf directory Create. " >> ${LOG_FILE}
      echo "ENFORCE2 FlagFile. " > ${ENFORCE2FLAGFILE}
      chmod 711 ${BASE_PATH} 1> /dev/null 2> /dev/null
      chmod 711 ${BASE_PATH}/sample 1> /dev/null 2> /dev/null
      chmod 711 ${BASE_PATH}/sample/conf  1> /dev/null 2> /dev/null
      chmod 444 ${ENFORCE2FLAGFILE} 1> /dev/null 2> /dev/null
    fi
  fi
fi

##### NEWBUILD File Copy #####
if [ -f "${HBASE_ABI_DIR}/build" ]
then
    echo "find build File" >> ${LOG_FILE}
    if [ -d ${BASE_PATH} ]
    then
        cp -fp "${HBASE_ABI_DIR}/build" "${BASE_PATH}/" 1> /dev/null 2> /dev/null
        RET=$?
        if [ ${RET} -eq 0 ]
        then
        echo "build File copy succeeded. " >> ${LOG_FILE}
        fi
        
    else
        mkdir -p "${BASE_PATH}" 1> /dev/null 2> /dev/null
        cp -fp "${HBASE_ABI_DIR}/build" "${BASE_PATH}/" 1> /dev/null 2> /dev/null
        RET=$?
        if [ ${RET} -eq 0 ]
        then
        echo "build File copy succeeded. " >> ${LOG_FILE}
        fi
        
    fi
    chmod 711 ${BASE_PATH} 1> /dev/null 2> /dev/null
    chmod 444 "${BASE_PATH}/build" 1> /dev/null 2> /dev/null
fi
############### CheckThemesetconf ################
echo "CheckThemesetconf Begin" >> ${LOG_FILE}

ENFORCEFLAGFILE=${BASE_PATH}/sample/conf/enforceflag
ENFORCE2FLAGFILE=${BASE_PATH}/sample/conf/enforce2flag
NEWBUILDFILES=${BASE_PATH}/build
OLDBUILDFILE=${BASE_PATH}/sample/conf/build

THEMESETCONFEXIST_FLAG=false;
THEMESETCONFCOPY_FLAG=true; 

ver_check ()
{
    if [ $1 -lt $2 ]
    then
        return 2
    elif [ $1 -eq $2 ]
    then
        return 1
    else
        return 0
    fi
}


##THEMESETCONFEXIST_FLAG check
if [ -f ${THEMESETCONFFLAG_FILEPATH} ]
then
    echo "${THEMESETCONFFLAG_FILEPATH} file was found. " >> ${LOG_FILE}
    THEMESETCONFEXIST_FLAG=true;
else
	echo "${THEMESETCONFFLAG_FILEPATH} file was not found. " >> ${LOG_FILE}
fi

## VERSION check
if [ -f ${ENFORCE2FLAGFILE} ]
then
    echo "find ENFORCE2 Flag" >> ${LOG_FILE}

else

newbuild_all=`cat ${NEWBUILDFILES}`
newbuild_vvrr=`echo "${newbuild_all}" | cut -c1-4`
newbuild_ss=`echo "${newbuild_all}" | cut -c5-6`
newbuild_bb=`echo "${newbuild_all}" | cut -c7-8`
echo "newbuild_all : ${newbuild_all}" >> ${LOG_FILE}

PKG_INFO=`pkgparam ${PKG} PKG 2>/dev/null`
if [ "${PKG_INFO}" != "" ]
then
    OLD_VER=`pkgparam ${PKG} VERSION`
    #### major version check
    ver_check 4 `echo ${OLD_VER} |awk -F. '{print $1}'`
    RET=$?
    if [ ${RET} -ne 0 ]
    then
    
        echo "#### Get Build Data ####" >> ${LOG_FILE}
        if [ -f ${OLDBUILDFILE} ]
        then

		oldbuild_all=`cat ${OLDBUILDFILE}`
		oldbuild_vvrr=`echo "${oldbuild_all}" | cut -c1-4`
		oldbuild_ss=`echo "${oldbuild_all}" | cut -c5-6`
		oldbuild_bb=`echo "${oldbuild_all}" | cut -c7-8`
		
		PACKAGE_VERSION=`echo "${oldbuild_vvrr}${oldbuild_ss}`
		
		echo "oldbuild_all : ${oldbuild_all}" >> ${LOG_FILE}
		echo "PACKAGE_VERSION : ${PACKAGE_VERSION}" >> ${LOG_FILE}
	
        #### version check(vvrr)
        ver_check ${newbuild_vvrr} ${oldbuild_vvrr}
        RET=$?
        if [ ${RET} -eq 1 ]
        then
            if [  -f ${ENFORCEFLAGFILE} ]
            then
                echo "find ENFORCE Flag" >> ${LOG_FILE}
                
            else
                #### version check (ss)
                ver_check ${newbuild_ss} ${oldbuild_ss}
                RET=$?
                if [ ${RET} -eq 1 -a ${THEMESETCONFEXIST_FLAG} = false ]
                then
                	echo "THEMESETCONFCOPY_FLAG=false" >> ${LOG_FILE}
                	THEMESETCONFCOPY_FLAG=false
                elif [ ${RET} -eq 2 ]
                then
                    echo "THEMESETCONFCOPY_FLAG=false" >> ${LOG_FILE}
                    THEMESETCONFCOPY_FLAG=false
                fi
            fi
        elif [ ${RET} -eq 2 ]
        then
            echo "THEMESETCONFCOPY_FLAG=false" >> ${LOG_FILE}
            THEMESETCONFCOPY_FLAG=false
        fi
        fi
    fi
fi
fi

## Make THEMESETCONFFLAG_FILE
if [ ${THEMESETCONFCOPY_FLAG} = true ]
then
    echo "THEMESETCONFCOPY_FLAG=true" >> ${LOG_FILE}
    if [ ! -d "/var${BASE_PATH}/tmp" ]
    then
        mkdir -p "/var${BASE_PATH}/tmp"
    fi  
    echo "${oldbuild_all}" > ${THEMESETCONFFLAG_FILEPATH}
    if [ ! -f ${THEMESETCONFFLAG_FILEPATH} ]
    then
        echo "[ERROR] Can't create \"${THEMESETCONFFLAG_FILE}\" file. " >> ${LOG_FILE}
        echo "install.sh done. " >> ${LOG_FILE}
        exit 2
    fi
fi


echo "CheckThemesetconf End" >> ${LOG_FILE}

################# HBASE install ##################
cd "${HBASE_ABI_DIR}"
echo "pkgadd -d Hbase.abi HBASE. " >> ${LOG_FILE}
pkgadd -a adminconf -d Hbase.abi HBASE 1>> ${LOG_FILE_B} 2>> ${LOG_FILE_B}
RET=$?

##### ENFORCE FlagFile Delete #####
if [ -f "${ENFORCEFLAGFILE}" ]
then
    echo "find ENFORCE Flag" >> ${LOG_FILE}
    rm -f "${ENFORCEFLAGFILE}" 1> /dev/null 2> /dev/null
    RETDEL=$?
    if [ ${RETDEL} -eq 0 ]
    then
      echo "ENFORCE FlagFile deletion  succeeded. " >> ${LOG_FILE}
    fi
fi
##### ENFORCE2 FlagFile Delete #####
if [ -f "${ENFORCE2FLAGFILE}" ]
then
    echo "find ENFORCE2 Flag" >> ${LOG_FILE}
    rm -f "${ENFORCE2FLAGFILE}" 1> /dev/null 2> /dev/null
    RETDEL=$?
    if [ ${RETDEL} -eq 0 ]
    then
      echo "ENFORCE2 FlagFile deletion  succeeded. " >> ${LOG_FILE}
    fi
fi

##### NEWBUILD File Delete #####
if [ -f "${NEWBUILDFILE}" ]
then
    echo "find build File" >> ${LOG_FILE}
    rm -f "${NEWBUILDFILE}" 1> /dev/null 2> /dev/null
    RETDEL=$?
    if [ ${RETDEL} -eq 0 ]
    then
      echo "build File deletion  succeeded. " >> ${LOG_FILE}
    fi
fi

cat ${LOG_FILE} ${LOG_FILE_B} > ${LOG_FILE_C}
rm ${LOG_FILE} 2>> ${LOG_FILE_C}
rm ${LOG_FILE_B} 2>> ${LOG_FILE_C} 
mv ${LOG_FILE_C} ${LOG_FILE} 2> /dev/null
if [ ${RET} -ne 0 ]
then
    if [ ! -f ${RTN_FILE} ]
    then
        echo "pkgadd ERROR. " >> ${LOG_FILE}
    fi
    echo "pkgadd returns ${RET}. " >> ${LOG_FILE}
    echo "install.sh done. " >> ${LOG_FILE}
    exit 2
fi

## Copy THEMESETCONF_FILE(Only when pkgadd succeeds.)
if [ ${THEMESETCONFCOPY_FLAG} = true ]
then
    cp -p "${BASE_PATH}/sample/common/${THEMESETCONF_FILE}" "${BASE_PATH}/common/${THEMESETCONF_FILE}"  1> /dev/null 2> /dev/null
    RETCOPY=$?
    if [ ${RETCOPY} -ne  0 ]
    then
        echo "[ERROR] \"${THEMESETCONF_FILE}\" was not able to be copied. " >> ${LOG_FILE}
        echo "install.sh done. " >> ${LOG_FILE}
        exit 2
    fi
    
    rm -f "${THEMESETCONFFLAG_FILEPATH}" 1> /dev/null 2> /dev/null
    RETDEL=$?
    if [ ${RETDEL} -ne 0 ]
    then
        echo "[ERROR] \"${THEMESETCONFFLAG_FILE}\" file deletion failed. " >> ${LOG_FILE}
        echo "install.sh done. " >> ${LOG_FILE}
        exit 2
    fi
fi

echo "install.sh done. " >> ${LOG_FILE}
exit 0
