@echo off
REM   Hitachi SVP                              
REM  JAVA Update tool for Hitachi SVP
REM                 Copy right. 2019  Hitachi. Ltd. 
REM
REM History  :Version    :DATE        : Coder        : Patch No
REM Hitachi SVP
REM          :01-01      :2019.11.12  : S.Moriya     : #88862
REM
REM Document
REM Java11.0.5+10 Installer
REM
REM

set LOGFILE="c:\dkc200\san\cgi-bin\Utility\JavaUpdate_log.txt"
set JAVALIBSINST="java\JavaLibs_inst.bat"
set JAVAINST_V11_0_5_10="java\Java_inst_V11.0.5b10.bat"
set JAVASET_V11_0_5_10="java\Java_set_V11.0.5b10.bat"
set JAVAINST_V11_0_5_10_x64="java\Java_inst_V11.0.5b10_x64.bat"
set JAVASET_V11_0_5_10_x64="java\Java_set_V11.0.5b10_x64.bat"
set TOMCATSTART="setup\tomcat_start.bat"
set REGCRED="setup\RegCred.bat"
set TASK="setup\task.bat"
set CHECK_ADMIN="check\CheckAdmin.bat"
set CHECKUNINST_Java="check\Check_uninstallJava.bat"
set CHECK_SERVICES="check\Checkservices.bat"
set SVPSSTOP="setup\SvpSurveillance_stop.bat"

echo ----- >> %LOGFILE% 2>>&1
echo # Start Program >> %LOGFILE% 2>>&1
echo %date%-%time% >> %LOGFILE% 2>>&1
echo ----- >> %LOGFILE% 2>>&1

echo Java11.0.5+10 Installer >> %LOGFILE% 2>>&1
echo Java11.0.5+10 Installer

echo Check admin
pushd %~dp0
call %CHECK_ADMIN%
echo Check admin OK >> %LOGFILE% 2>>&1
echo Check admin OK 

rem Windows 10 version check
set WIN_10=no
for /f "tokens=2 delims=[]" %%i in ('ver') do (
	set WINDOWS_VER=%%i
)
for /f "tokens=2,3 delims=. " %%i in ('echo %WINDOWS_VER%') do (
	set WINDOWS_MAJOR_VER=%%i& set WINDOWS_MINOR_VER=%%j
)
if %WINDOWS_MAJOR_VER% geq 10 (
	set WIN_10=yes
)

REM Version confirmation starts

SETLOCAL enabledelayedexpansion

set PCINF=C:\DKC200\mp\pc\pc.inf
REM Get OSS version
set VERSIONFILE=%~dp0Java11.0.5+10_version.txt

REM Get SVP Version
if EXIST %PCINF% (
	for /f "delims=" %%a in (%PCINF%) do (
    	set SVPVersion=%%a
	)
) else (
	goto SVPError
)
REM delete the blank
set SVPVersion=%SVPVersion: =%

REM Get SVP Version of OSS
if EXIST %VERSIONFILE% (
	for /f "delims=" %%a in (%VERSIONFILE%) do (
    	set OSSVersion=%%a
	)
) else (
	goto OSSMediaError
)
REM delete the blank
set OSSVersion=%OSSVersion: =%

REM divide it into Major version and Minor version
set MODELDLIM=2
set VERSIONDLIM=2
set SVPVersion_Model=!SVPVersion:~0,%MODELDLIM%!
set OSSVersion_Model=!OSSVersion:~0,%MODELDLIM%!

set SVPVersion_Tmp=!SVPVersion:~%MODELDLIM%!
set OSSVersion_Tmp=!OSSVersion:~%MODELDLIM%!
set SVPVersion_Major=!SVPVersion_Tmp:~0,%VERSIONDLIM%!
set SVPVersion_Minor=!SVPVersion_Tmp:~%VERSIONDLIM%!
set OSSVersion_Major=!OSSVersion_Tmp:~0,%VERSIONDLIM%!
set OSSVersion_Minor=!OSSVersion_Tmp:~%VERSIONDLIM%!

REM Model check
if %SVPVersion_Model%==75 (
	set SVPVersion_Model=73
)

if not %SVPVersion_Model%==%OSSVersion_Model% (
	goto ModelError
)

if %SVPVersion_Major% gtr %OSSVersion_Major% (
	goto NormalEnd
) else if %SVPVersion_Major% lss %OSSVersion_Major% (
	goto VersionError
) else (
	if %SVPVersion_Minor% geq %OSSVersion_Minor% (
		goto NormalEnd
	) else (
		goto VersionError
	)
)

:NormalEnd
echo Correct Version
echo Correct Version >> %LOGFILE% 2>>&1

REM :NotInstalled

REM Version confirmation is completed

echo Check Java
echo Check Java >> %LOGFILE% 2>>&1
pushd %~dp0
call %CHECKUNINST_Java%
echo Check Java OK >> %LOGFILE% 2>>&1
echo Check Java OK

echo Check services
pushd %~dp0
call %CHECK_SERVICES%
echo Check services OK >> %LOGFILE% 2>>&1
echo Check services OK 

echo stop SvpSurveillance Service
echo stop SvpSurveillance Service >> %LOGFILE% 2>>&1
pushd %~dp0
call %SVPSSTOP%

echo install Java11.0.5+10
echo install Java11.0.5+10 >> %LOGFILE% 2>>&1

pushd %~dp0
call %TASK% >> %LOGFILE% 2>>&1


pushd %~dp0
call %JAVAINST_V11_0_5_10% >> %LOGFILE% 2>>&1
if not %errorlevel%==0 (
goto :error
)

echo set Java
echo set Java >> %LOGFILE% 2>>&1
pushd %~dp0
call %JAVASET_V11_0_5_10% >> %LOGFILE% 2>>&1
if not %errorlevel%==0 (
goto :error
)

if "%WIN_10%" equ "no" (
goto :NOT_WIN10
)

echo install Java11.0.5+10 x64
echo install Java11.0.5+10 x64 >> %LOGFILE% 2>>&1

pushd %~dp0
call %JAVAINST_V11_0_5_10_x64% >> %LOGFILE% 2>>&1
if not %errorlevel%==0 (
goto :error
)

echo set Java 64-bit
echo set Java >> %LOGFILE% 2>>&1
pushd %~dp0
call %JAVASET_V11_0_5_10_x64% >> %LOGFILE% 2>>&1
if not %errorlevel%==0 (
goto :error
)

:NOT_WIN10

echo install Java libs
echo install Java libs >> %LOGFILE% 2>>&1

pushd %~dp0
call %JAVALIBSINST% >> %LOGFILE% 2>>&1
if not %errorlevel%==0 (
goto :error
)

REM Fix Tomcat Parameter

set LF=\0
set TomcatInstallPath=C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0
set TomcatDataPath=C:\DKC200\san\SN2\
set SNDataPath=%TomcatDataPath%SN2Files\
set SNEnvFile=%SNDataPath%data\base\setting\system\properties\SN2_Startup.properties
set TomcatPropDataPath=C:\DKC200\san\SN2\conf\logging.properties

set TOMCAT_OPTS=^
"-Dcatalina.home=%TomcatInstallPath%%LF%^
-Dcatalina.base=%TomcatDataPath%%LF%^
-Djava.io.tmpdir=%TomcatInstallPath%\temp%LF%^
-DSN_DataPath=%SNDataPath%%LF%^
-DSN_EnvFile=%SNEnvFile%%LF%^
-Dorg.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES=false%LF%^
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager%LF%^
-Djava.util.logging.config.file=%TomcatPropDataPath%%LF%^
-XX:TargetSurvivorRatio=30"

set TOMCAT_CLASSPATH=^
"C:\DKC200\OSS\java_libs\activation.jar;^
C:\DKC200\OSS\java_libs\jaxb-api.jar;^
C:\DKC200\OSS\java_libs\jaxb-core.jar;^
C:\DKC200\OSS\java_libs\jaxb-impl.jar;^
C:\DKC200\OSS\java_libs\jaxb-jxc.jar;^
C:\DKC200\OSS\java_libs\jaxb-xjc.jar;^
C:\DKC200\OSS\java_libs\jta-1_1-classes.jar;^
C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\bin\bootstrap.jar;^
C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\bin\tomcat-juli.jar"

REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat7\Parameters\Java" /v Options /t REG_MULTI_SZ /d %TOMCAT_OPTS% /reg:32 /f
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat7\Parameters\Java" /v Classpath /t REG_SZ /d %TOMCAT_CLASSPATH% /reg:32 /f

echo start Tomcat Service
echo Tomcat start >> %LOGFILE% 2>>&1
pushd %~dp0
call %TOMCATSTART% >> %LOGFILE% 2>>&1
if not %errorlevel%==0 (
goto :error
)

echo Credential Provider on
echo Credential Provider on >> %LOGFILE% 2>>&1
pushd %~dp0
call %REGCRED% >> %LOGFILE% 2>>&1

echo ----- >> %LOGFILE% 2>>&1
echo # END Program >> %LOGFILE% 2>>&1
echo %date%-%time% >> %LOGFILE% 2>>&1
echo ----- >> %LOGFILE% 2>>&1

echo Operation successful.
exit 0

:error
echo Error occured.
exit %errorlevel%

:VersionError
set VIEW=8
set SVPVersion_View=!SVPVersion:~0,%VIEW%!
echo Error: Incorrect Version.
echo Error: Incorrect Version. >> %LOGFILE% 2>>&1
echo Install Java for SVP version %SVPVersion_View%.
echo Install Java for SVP version %SVPVersion_View%. >> %LOGFILE% 2>>&1
echo SVP Version of OSS is %OSSVersion%. >> %LOGFILE% 2>>&1
pause
exit 2

:SVPError
echo Error: Failed to get SVP version. SVP is abnormal.
echo Error: Failed to get SVP version. SVP is abnormal. >> %LOGFILE% 2>>&1
pause
exit 2

:ModelError
echo Error: Incorrect media.(Model error)
echo Error: Incorrect media.(Model error) >> %LOGFILE% 2>>&1
pause
exit 2


:OSSMediaError
echo Error: Failed to get OSS version. Incorrect OSS Media.
echo Error: Failed to get OSS version. Incorrect OSS Media. >> %LOGFILE% 2>>&1
pause
exit 2