#!/bin/sh
# A couple of examples how this script may be invoked:
#  $ HadoopFsMkdir --hadoop.home /hadoop/apache/hadoop-0.20.205.0 path
#
#  $ HadoopFsMkdir --debug --hadoop.home /hadoop/apache/hadoop-0.20.205.0 path

exitCode=0
DEBUG=

while [ $# -gt 0 ]; do
  case "$1" in
    --debug)
      DEBUG=true
      shift
      ;;
    --hadoop.home)
      shift
      export INFA_HADOOP_DIST_DIR=$1
      shift
      ;;
    *)
      break
      ;;
  esac
done

if [ -z "${INFA_RESOURCES}" ]; then
    echo "The INFA_RESOURCES variable is not set.."
    exit 1;
fi

export INFA_HOME_BIN=${INFA_RESOURCES}

case `uname` in
          SunOS)
            LD_LIBRARY_PATH=${INFA_HOME_BIN}:${LD_LIBRARY_PATH}
                export LD_LIBRARY_PATH
                ;;
          Linux)
                LD_LIBRARY_PATH=${INFA_HOME_BIN}:${LD_LIBRARY_PATH}
                export LD_LIBRARY_PATH
                ;;
          AIX)
                LIBPATH=${INFA_HOME_BIN}:${LIBPATH}
                export LIBPATH
                ;;
          HP-UX)
                SHLIB_PATH=${INFA_HOME_BIN}:${SHLIB_PATH}
                export SHLIB_PATH
                ;;
esac

if [ -z "${INFA_HADOOP_DIST_DIR}" ]; then
  echo "Error: INFA_HADOOP_DIST_DIR variable is not set while invoking the script."
  exit 100;
fi

if [ -d ${INFA_HADOOP_DIST_DIR} ]; then
  for j in ${INFA_HADOOP_DIST_DIR}/lib/hadoop-core-*.jar ${INFA_HADOOP_DIST_DIR}/lib/hadoop-*-core.jar; do
    HADOOP_CORE_JAR=$j:${HADOOP_CORE_JAR}
  done
fi

# Use JAVA_HOME if it is set to invoke java
JAVA=java
if [ "$JAVA_HOME" != "" ]; then
  JAVA=$JAVA_HOME/bin/java
fi

# run the script file to get the user specified classpath
HDP_CLASSPATH=`${INFA_HADOOP_DIST_DIR}/scripts/infahadooputil --getclasspath`
exitCode=$?

if [[ $exitCode != 0 ]] ; then
  echo "HDP_CLASSPATH = ${HDP_CLASSPATH}"
  exit $exitCode
fi

if [ "$DEBUG" ]; then
  echo "HDP_CLASSPATH = ${HDP_CLASSPATH}"
fi

CLASSPATH=${INFA_HADOOP_DIST_DIR}/infaLib/hive2.1.0-infa-plugins.jar:${HADOOP_CLASSPATH}:${HDP_CLASSPATH}

#-Dhadoop.policy.file=hadoop-policy.xml
RUNCLASS=com.informatica.platform.dtm.executor.hadoop.shellcmd.HadoopFsMkdirUtil

HADOOP_LOG_OPTION='-Dhadoop.root.logger=INFO,console'
LOG_OPTION="${HADOOP_LOG_OPTION} -Dlog4j.configuration=file:${INFA_HOME_BIN}/../hadoop/log4j.properties"

COMMAND="${JAVA} -classpath $CLASSPATH -Dhadoop.home.dir=$INFA_HADOOP_DIST_DIR $LOG_OPTION -Djava.library.path=$JAVA_LIBRARY_PATH:${INFA_HADOOP_DIST_DIR}/lib/native/Linux-amd64-64/ ${JAVA_OPTS} $RUNCLASS $@"

if [ "$DEBUG" ]; then
  echo ${COMMAND}
  begin1=`date`
  echo $begin1
fi

# run the command and save the exit code
${COMMAND}
exitCode=$?

if [ "$DEBUG" ]; then
  end1=`date`
  echo $end1
  begin2=`date --date="$begin1" +%s`
  end2=`date --date="$end1" +%s`
  echo "Total elapsed time=" $(($end2 - $begin2)) "seconds"
fi

exit ${exitCode}
