#!/bin/ksh

MALL_CONFIGURATION_FILE=$1

FATAL_ERROR=1000


#
# print debug string to appropriate location
#
# $1=debug string to be printed
#
print_debug()
{
  ./debug_handler.ksh "$0" "mall" "$1" "$DEBUG_LOG_DIRECTORY" "$DEBUG_LOG_FILE" "$LOG_DEBUG"
}



#
#
#
#
print_abort_message()
{
  printf "\n"
  printf "\n"
  printf "Aborting installation\n"
  printf "\n"
}


case $# in
  0)   ## No parameters passed in.  Improper use of script.
       print_abort_message
       printf "No configuration file indicated.\n"
       printf "usage: start_install_mall_sc.ksh config_mall.aa\n"
       ERROR=`./error_handler.ksh $FATAL_ERROR`
       printf "ERROR: $ERROR\n"
       exit 1
       ;;
  1)   ## Only a mall config file was passed in.
       ## Check that the mall config file actually exists.
       if ! test -e "$MALL_CONFIGURATION_FILE"
       then
           print_abort_message
           printf "The following mall configuration file does not exist:\n"
           printf "%s\n" $MALL_CONFIGURATION_FILE
           ERROR=`./error_handler.ksh $FATAL_ERROR`
           printf "ERROR: $ERROR\n"
           exit 1
       fi
       ;;
  *)   ## Illegal number of arguments
       print_abort_message
       printf "Illegal number of arguments passed.\n"
       printf "usage: start_install_mall_sc.ksh config_mall.aa\n"
       printf "ERROR: $ERROR\n"
       exit 1
       ;;
esac



VALUE_FOUND="FALSE"
while read -r field value
do
    if test "X$field" = "XLOG_DEBUG:"
    then
        LOG_DEBUG=$value
        VALUE_FOUND="TRUE"
    elif test "X$field" = "XDEBUG_LOG_DIRECTORY:"
    then
        DEBUG_LOG_DIRECTORY=$value
        VALUE_FOUND="TRUE"
    elif test "X$field" = "XDEBUG_LOG_FILE:"
    then
        DEBUG_LOG_FILE=$value
        VALUE_FOUND="TRUE"
    fi

    if test "$VALUE_FOUND" = "TRUE"
    then
        ##printf "%s %s\n" "$field" "$value"
        VALUE_FOUND="FALSE"
    fi
done < $MALL_CONFIGURATION_FILE


## Setup debug log file if needed
if test "X$LOG_DEBUG" = "XYES"
then
    if ! (./setup_debug_log_file.ksh $DEBUG_LOG_DIRECTORY $DEBUG_LOG_FILE)
    then
        print_abort_message
        printf "Unable to setup the log file.\n"
        ERROR=`./error_handler.ksh $FATAL_ERROR`
        printf "ERROR: $ERROR\n"
        exit 1
    fi
fi


VALUE_FOUND="FALSE"
while read -r field value
do
    if test "X$field" = "XSHOPSITE_DIRECTORY:"
    then
        SHOPSITE_DIRECTORY=$value
        VALUE_FOUND="TRUE"
    elif test "X$field" = "XSHOPSITE_URL:"
    then
        SHOPSITE_URL=$value
        VALUE_FOUND="TRUE"
    elif test "X$field" = "XSHOPPING_CART_DIRECTORY:"
    then
        SHOPPING_CART_DIRECTORY=$value
        VALUE_FOUND="TRUE"
    elif test "X$field" = "XSHOPPING_CART_URL:"
    then
        SHOPPING_CART_URL=$value
        VALUE_FOUND="TRUE"
    elif test "X$field" = "XSHOPSITE_IMAGE_DIR:"
    then
        SHOPSITE_IMAGE_DIR=$value
        VALUE_FOUND="TRUE"
    elif test "X$field" = "XSHOPSITE_IMAGE_URL:"
    then
        SHOPSITE_IMAGE_URL=$value
        VALUE_FOUND="TRUE"
    elif test "X$field" = "XUNIX_WEB_USER_ID:"
    then
        UNIX_WEB_USER_ID=$value
        VALUE_FOUND="TRUE"
    elif test "X$field" = "XUNIX_WEB_GROUP_ID:"
    then
        UNIX_WEB_GROUP_ID=$value
        VALUE_FOUND="TRUE"
    elif test "X$field" = "XPATH_TO_TAR:"
    then
        PATH_TO_TAR=$value
        VALUE_FOUND="TRUE"
    elif test "X$field" = "XMALL_TYPE:"
    then
        MALL_TYPE=$value
        VALUE_FOUND="TRUE"
    fi

    if test "$VALUE_FOUND" = "TRUE"
    then
#        print_debug "$field $value"
        VALUE_FOUND="FALSE"
    fi
done < $MALL_CONFIGURATION_FILE

if ! test "$SHOPSITE_DIRECTORY"
then
    printf "Error: No value provided for SHOPSITE_DIRECTORY.\n"
    error_encountered="TRUE"
fi
if ! test "$SHOPSITE_URL"
then
    printf "Error: No value provided for SHOPSITE_URL.\n"
    error_encountered="TRUE"
fi
if ! test "$SHOPPING_CART_DIRECTORY"
then
    printf "Error: No value provided for SHOPPING_CART_DIRECTORY.\n"
    error_encountered="TRUE"
fi
if ! test "$SHOPPING_CART_URL"
then
    printf "Error: No value provided for SHOPPING_CART_URL.\n"
    error_encountered="TRUE"
fi
if ! test "$SHOPSITE_IMAGE_DIR"
then
    printf "Error: No value provided for SHOPSITE_IMAGE_DIR.\n"
    error_encountered="TRUE"
fi
if ! test "$SHOPSITE_IMAGE_URL"
then
    printf "Error: No value provided for SHOPSITE_IMAGE_URL.\n"
    error_encountered="TRUE"
fi
if ! test "$UNIX_WEB_USER_ID"
then
    printf "Error: No value provided for UNIX_WEB_USER_ID.\n"
    error_encountered="TRUE"
fi
if ! test "$UNIX_WEB_GROUP_ID"
then
    printf "Error: No value provided for UNIX_WEB_GROUP_ID.\n"
    error_encountered="TRUE"
fi
if ! test "$PATH_TO_TAR"
then
    printf "Error: No value provided for PATH_TO_TAR.\n"
    error_encountered="TRUE"
fi
if ! test "$MALL_TYPE"
then
    printf "Error: No value provided for MALL_TYPE.\n"
    error_encountered="TRUE"
fi


if test "$error_encountered"
then
    printf "Values must be provided for the previously listed\n"
    printf "variables in the config_mall.aa file\n"
    print_abort_message
    ERROR=`./error_handler.ksh $FATAL_ERROR`
    printf "ERROR: $ERROR\n"
    exit 1
fi


##  Check user input to make sure it makes sense and is do-able.
if ! (./check_setup_mall_sc.ksh "INSTALL" "$SHOPSITE_DIRECTORY" "$SHOPPING_CART_DIRECTORY" "$SHOPSITE_IMAGE_DIR" "$UNIX_WEB_USER_ID" "$UNIX_WEB_GROUP_ID" "$PATH_TO_TAR" "$LOG_DEBUG" "$DEBUG_LOG_DIRECTORY" "$DEBUG_LOG_FILE")
then
    print_debug "Aborting installation:"
    print_debug "FAILED: ./check_setup_mall_sc.ksh"
    ERROR=`./error_handler.ksh $FATAL_ERROR`
    printf "ERROR: $ERROR\n"
    exit 1
fi



##  Put all ShopSite mall files in place.
if ! (./install_mall_sc.ksh "$SHOPSITE_DIRECTORY" "$SHOPPING_CART_DIRECTORY" "$SHOPSITE_IMAGE_DIR" "$SHOPSITE_IMAGE_URL" "$UNIX_WEB_USER_ID" "$UNIX_WEB_GROUP_ID" "$PATH_TO_TAR" "$DEBUG_LOG_DIRECTORY" "$DEBUG_LOG_FILE" "$LOG_DEBUG")
then
    print_debug "Aborting installation:"
    print_debug "FAILED: ./install_mall_sc.ksh"
    ERROR=`./error_handler.ksh $FATAL_ERROR`
    printf "ERROR: $ERROR\n"
    exit 1
fi


print_debug
print_debug
print_debug "This portion of the mall installation process has finished."
print_debug "Check all previous output for possible warnings or errors."
print_debug

## Successfully completed this portion of the install.
exit 0
