@SETLOCAL
@ECHO OFF

@REM ===Begin %1(request) %2(UserID) %3(Passwd) ==================================
SET REQUEST=%1
@REM ==SET USERID=%2
@REM ==SET PASSWD=%3
SET OPTION=%4

@rem === Replacing environment variable (BEGIN) ==================================
SET HBAS_INST_PATH=__SetupReplacString_HBase__
SET HGLAM_INST_PATH=__SetupReplacString_HGLAM__
@rem === Replacing environment variable (END) ====================================

SET RESULT_FILE=%HGLAM_INST_PATH%\inst\~result_code
SET LOG_FILE=%RESULT_FILE%.log
ECHO Starting Launch. [%0 %1 %2 ****] 1>"%LOG_FILE%"

@rem === Individual ==============================================================
SET HBAS_COMMAND=%HBAS_INST_PATH%\bin\hcmdsxrep
SET REPOFILE=%HGLAM_INST_PATH%\inst\hglamrepositorysetup.xml
SET OUT_FILE=%HGLAM_INST_PATH%\inst\~xrep_outfile
SET HBAS_CHECK_SRV_COMMAND1=%HBAS_INST_PATH%\bin\hcmdsdbstatus
SET HBAS_CHECK_SRV_COMMAND2=%HBAS_INST_PATH%\bin\hcmdssrv
SET HBAS_CHECK_COMMAND=%HBAS_INST_PATH%\bin\hcmdsdbsrv

@rem === [test]
SET USERID="hbaspeer"
SET PASSWD=" INTERNAL H2NK93SL"

IF "%OPTION%" == "TRUE" GOTO START1
IF "%OPTION%" == "FALSE" GOTO START2

:START1
SET LOOP_COUNT=1
:LOOP_START1
@REM ECHO %LOOP_COUNT% >> xreploop.txt
SET LOOP_COUNT=%LOOP_COUNT%1
call "%HBAS_CHECK_COMMAND%" /start
call "%HGLAM_INST_PATH%\inst\sleep.bat" 40
@REM ECHO start %ERRORLEVEL% >> xreploop.txt
@REM "%HBAS_CHECK_COMMAND%" /check /server HiCommand
call "%HBAS_CHECK_SRV_COMMAND1%"
SET RTN=%ERRORLEVEL%
@REM ECHO check %ERRORLEVEL% >> xreploop.txt

IF "%RTN%" == "0" GOTO LOOP_END

IF "%LOOP_COUNT%" == "1111111111" GOTO LOOP_ERROR
IF "%RTN%" == "12" GOTO LOOP_START1
GOTO LOOP_START1

:START2
SET LOOP_COUNT=1
:LOOP_START2
@REM ECHO %LOOP_COUNT% >> xreploop.txt
SET LOOP_COUNT=%LOOP_COUNT%1
call "%HBAS_CHECK_COMMAND%" /start
call "%HGLAM_INST_PATH%\inst\sleep.bat" 40
@REM ECHO start %ERRORLEVEL% >> xreploop.txt
@REM "%HBAS_CHECK_COMMAND%" /check /server HiCommand
"%HBAS_CHECK_SRV_COMMAND2%" /check
SET RTN=%ERRORLEVEL%
@REM ECHO check %ERRORLEVEL% >> xreploop.txt

IF "%RTN%" == "1" GOTO LOOP_END

IF "%LOOP_COUNT%" == "1111111111" GOTO LOOP_ERROR
IF "%RTN%" == "0" GOTO LOOP_START2
GOTO LOOP_START2

:LOOP_ERROR
ECHO Service not started >>"%LOG_FILE%"

:LOOP_END
call "%HGLAM_INST_PATH%\inst\sleep.bat" 20

@rem === [test]



@REM === Request process =========================================================
IF EXIST "%OUT_FILE%" (
  DEL "%OUT_FILE%"
  )
IF "set"=="%REQUEST%" GOTO SET_PROC
IF "del"=="%REQUEST%" GOTO DEL_PROC
SET RESULT=250
  ECHO The argument is illegal. >>"%LOG_FILE%"
GOTO END


@REM === Set request ============
:SET_PROC
  PUSHD %HBAS_INST_PATH%\bin
  SET RESULT=0
  SET CMDLINE="%HBAS_COMMAND%" /set /user %USERID% /passwd %PASSWD% /srcfile "%REPOFILE%" /outfile "%OUT_FILE%" /offline 2>>"%LOG_FILE%"
  SET LOG_TXT="%HBAS_COMMAND%" /set /user %USERID% /passwd %PASSWD% /srcfile "%REPOFILE%" /outfile "%OUT_FILE%" /offline
  ECHO Execution command. [%LOG_TXT%] >>"%LOG_FILE%"
  call %CMDLINE%

  SET RTN5077=%ERRORLEVEL%
  IF "%RTN5077%" == "0" GOTO LOGOUT
  GOTO ERROR

@REM === Delete request ===========
:DEL_PROC
  PUSHD %HBAS_INST_PATH%\bin
  SET RESULT=0
  SET CMDLINE="%HBAS_COMMAND%" /delete /user %USERID% /passwd %PASSWD% /srcfile "%REPOFILE%" /outfile "%OUT_FILE%" /offline 2>>"%LOG_FILE%"
  SET LOG_TXT="%HBAS_COMMAND%" /delete /user %USERID% /passwd **** /srcfile "%REPOFILEOLD%" /outfile "%OUT_FILE%" /offline
  ECHO Execution command. [%LOG_TXT%] >>"%LOG_FILE%"
  call %CMDLINE%

  SET RTN5077=%ERRORLEVEL%
  IF "%RTN5077%" == "0" GOTO LOGOUT
  GOTO ERROR

@REM === Common ==================================================================
:ERROR

  IF "%RTN5077%" == "255" GOTO ERROR255
  IF "%RTN5077%" == "254" GOTO ERROR254
  SET ERROR_CODE=%ERRORLEVEL%
  ECHO hcmdsxrep result = %ERROR_CODE% >>"%LOG_FILE%"
  GOTO LOGOUT
:ERROR254
  SET RESULT=254
  ECHO hcmdsxrep comunication error. >>"%LOG_FILE%"
  IF EXIST "%OUT_FILE%" (
    DEL "%OUT_FILE%" 
  )
  GOTO END
:ERROR255
  SET RESULT=255
:LOGOUT
  ECHO Command Excution result message. >>"%LOG_FILE%"
  IF EXIST "%OUT_FILE%" (
    ECHO "Request Repository response. >>" >>"%LOG_FILE%"
    TYPE "%OUT_FILE%" >>"%LOG_FILE%"
    ECHO "<< Request Repository response." >>"%LOG_FILE%"
    DEL "%OUT_FILE%"
  ) ELSE (
    ECHO "Request to Repository did not get any response. >>" >>"%LOG_FILE%"
    SET RESULT=255
  )
:END
  ECHO Result code print. [code=%RESULT%] >>"%LOG_FILE%"
  ECHO %RESULT% 1> "%RESULT_FILE%"
@REM === Finish ==================================================================
@REM PAUSE
@ECHO ON
@ENDLOCAL
