@echo off
setlocal

REM ##### 初期設定 #####
set OPENSTANDIA_INSTALLER_VER=3.0.0
set STACK_XML=stack-%OPENSTANDIA_INSTALLER_VER%.xml
set LICENSE_FILE=license.txt
set ANT_DIR=apache-ant-1.7.0
set SCRIPTS_DIR=scripts
set APACHE_NO=1
set JBOSS_NO=3
set MOD_JK_NO=5
set MYSQL_NO=7
set POSTGRESQL_NO=15
set PET_STORE_SSH_NO=9
set PET_STORE_SEASAR2_NO=19
set JBOSS_ESB_NO=13
set APACHE_TOMCAT_NO=11


REM ##### 初期処理 #####
set CURRENT_DIR=%~dp0
if NOT "%CURRENT_DIR:~-1%" == "\" (
	set CURRENT_DIR=%CURRENT_DIR%\
)
set ANT_HOME=%CURRENT_DIR%lib\%ANT_DIR%
set PATH=%ANT_HOME%\bin;%CURRENT_DIR%bin;%PATH%
set SCRIPTS_DIR=%CURRENT_DIR%%SCRIPTS_DIR%
if NOT "%SCRIPTS_DIR:~-1%" == "\" (
	set SCRIPTS_DIR=%SCRIPTS_DIR%\
)


REM ##### 実行ユーザー権限チェック #####
call "%CURRENT_DIR%bin\CheckAuthority.bat"
if errorlevel 1 (
	echo 実行ユーザーにAdministrators権限がないため処理を続行できません。
	goto end
)


REM ##### javaインストールチェック #####
call "%CURRENT_DIR%bin\CheckInstalledJava.bat"
if errorlevel 1 (
	echo javaがインストールされていないため処理を続行できません。
	goto end
)


REM ##### 画面表示 #####
cls
echo OpenStandia Ver.%OPENSTANDIA_INSTALLER_VER%
echo 各種OSSのインストール、アンインストール、アップデート処理をします。
echo.
echo 処理を選択してください。
echo 1 : インストール
echo 2 : アンインストール
echo 3 : アップデート
set MODE_NO=1
set /p MODE_NO=
if "%MODE_NO%" == "1" (
	set MODE=install
	set MODE_STR=インストール
)
if "%MODE_NO%" == "2" (
	set MODE=uninstall
	set MODE_STR=アンインストール
)
if "%MODE_NO%" == "3" (
	set MODE=update
	set MODE_STR=アップデート
)


REM ##### ライセンス表示 ######
if "%MODE%" == "install" (
	cls
	more "%CURRENT_DIR%%LICENSE_FILE%"
	set RESULT=n
	set /p RESULT=同意しますか？^(y/n^) [n]
) else (
	goto next
)
if "%RESULT%" == "y" (
	goto next
)
goto end
:next


REM ##### インストール全体前処理 #####
echo.
call ant -Dmode=%MODE% -DstackXml=%STACK_XML% -f "%SCRIPTS_DIR%install-before.xml"
if errorlevel 1 goto error


REM ##### 問い合わせ #####
cls
REM Apache
set INSTALL_APACHE=y
set /p INSTALL_APACHE=Apacheを%MODE_STR%しますか？(y/n) [y]
set INSTALL_APACHE_CONF=0
if "%MODE%" == "install" (
	if "%INSTALL_APACHE%" == "y" (
		echo Apache用の設定ファイル^(httpd.conf^)を選択してください。
		echo 1 : デフォルト
		echo 2 : 推奨設定
		set /p INSTALL_APACHE_CONF=
	)
)

REM JBoss
set INSTALL_JBOSS=y
set /p INSTALL_JBOSS=JBossを%MODE_STR%しますか？(y/n) [y]

REM mod_jk
set INSTALL_MOD_JK=y
set /p INSTALL_MOD_JK=mod_jkを%MODE_STR%しますか？(y/n) [y]

REM MySQL
set INSTALL_MY_SQL=y
set /p INSTALL_MY_SQL=MySQLを%MODE_STR%しますか？(y/n) [y]

REM PostgreSQL
set INSTALL_POSTGRESQL=y
set /p INSTALL_POSTGRESQL=PostgreSQLを%MODE_STR%しますか？(y/n) [y]

REM petStore(Struts、Spring、Hibernate)
set INSTALL_PET_STORE_SSH=y
set /p INSTALL_PET_STORE_SSH=Struts、Spring、Hibernateによるサンプルを%MODE_STR%しますか？(y/n) [y]

REM petStore(Seasar2、SAStruts)
set INSTALL_PET_STORE_SEASAR2=y
set /p INSTALL_PET_STORE_SEASAR2=Seasar2、SAStrutsによるサンプルを%MODE_STR%しますか？(y/n) [y]

REM JBossESB
set INSTALL_JBOSS_ESB=y
set /p INSTALL_JBOSS_ESB=JBossESBを%MODE_STR%しますか？(y/n) [y]

REM apache-tomcat
set INSTALL_APACHE_TOMCAT=y
set /p INSTALL_APACHE_TOMCAT=Apache-Tomcat連携を%MODE_STR%しますか？(y/n) [y]


REM ##### ダウンロード実行 #####
echo.
echo ダウンロード処理を開始します...
if "%INSTALL_APACHE%" == "y" (
	call ant -Dno=%APACHE_NO% -DstackXml=%STACK_XML% -f "%SCRIPTS_DIR%download.xml"
	if errorlevel 1 goto error
)
if "%INSTALL_JBOSS%" == "y" (
	call ant -Dno=%JBOSS_NO% -DstackXml=%STACK_XML% -f "%SCRIPTS_DIR%download.xml"
	if errorlevel 1 goto error
)
if "%INSTALL_MOD_JK%" == "y" (
	call ant -Dno=%MOD_JK_NO% -DstackXml=%STACK_XML% -f "%SCRIPTS_DIR%download.xml"
	if errorlevel 1 goto error
)
if "%INSTALL_MY_SQL%" == "y" (
	call ant -Dno=%MYSQL_NO% -DstackXml=%STACK_XML% -f "%SCRIPTS_DIR%download.xml"
	if errorlevel 1 goto error
)
if "%INSTALL_POSTGRESQL%" == "y" (
	call ant -Dno=%POSTGRESQL_NO% -DstackXml=%STACK_XML% -f "%SCRIPTS_DIR%download.xml"
	if errorlevel 1 goto error
)
if "%INSTALL_PET_STORE_SSH%" == "y" (
	call ant -Dno=%PET_STORE_SSH_NO% -DstackXml=%STACK_XML% -f "%SCRIPTS_DIR%download.xml"
	if errorlevel 1 goto error
)
if "%INSTALL_PET_STORE_SEASAR2%" == "y" (
	call ant -Dno=%PET_STORE_SEASAR2_NO% -DstackXml=%STACK_XML% -f "%SCRIPTS_DIR%download.xml"
	if errorlevel 1 goto error
)
if "%INSTALL_JBOSS_ESB%" == "y" (
	call ant -Dno=%JBOSS_ESB_NO% -DstackXml=%STACK_XML% -f "%SCRIPTS_DIR%download.xml"
	if errorlevel 1 goto error
)
if "%INSTALL_APACHE_TOMCAT%" == "y" (
	call ant -Dno=%APACHE_TOMCAT_NO% -DstackXml=%STACK_XML% -f "%SCRIPTS_DIR%download.xml"
	if errorlevel 1 goto error
)


REM ##### インストール実行 #####
set INSTALLED_NO=
echo.
echo %MODE_STR%処理を開始します...
if "%INSTALL_APACHE%" == "y" (
	call ant -Dno=%APACHE_NO% -Dsub=%INSTALL_APACHE_CONF% -Dmode=%MODE% -DstackXml=%STACK_XML% -f "%SCRIPTS_DIR%install.xml"
	if errorlevel 1 goto error
	set INSTALLED_NO=%INSTALLED_NO%,%APACHE_NO%
)
if "%INSTALL_JBOSS%" == "y" (
	call ant -Dno=%JBOSS_NO% -Dmode=%MODE% -DstackXml=%STACK_XML% -f "%SCRIPTS_DIR%install.xml"
	if errorlevel 1 goto error
	set INSTALLED_NO=%INSTALLED_NO%,%JBOSS_NO%
)
if "%INSTALL_MOD_JK%" == "y" (
	call ant -Dno=%MOD_JK_NO% -Dmode=%MODE% -DstackXml=%STACK_XML% -f "%SCRIPTS_DIR%install.xml"
	if errorlevel 1 goto error
	set INSTALLED_NO=%INSTALLED_NO%,%MOD_JK_NO%
)
if "%INSTALL_MY_SQL%" == "y" (
	call ant -Dno=%MYSQL_NO% -Dmode=%MODE% -DstackXml=%STACK_XML% -f "%SCRIPTS_DIR%install.xml"
	if errorlevel 1 goto error
	set INSTALLED_NO=%INSTALLED_NO%,%MYSQL_NO%
)
if "%INSTALL_POSTGRESQL%" == "y" (
	call ant -Dno=%POSTGRESQL_NO% -Dmode=%MODE% -DstackXml=%STACK_XML% -f "%SCRIPTS_DIR%install.xml"
	if errorlevel 1 goto error
	set INSTALLED_NO=%INSTALLED_NO%,%POSTGRESQL_NO%
)
if "%INSTALL_PET_STORE_SSH%" == "y" (
	call ant -Dno=%PET_STORE_SSH_NO% -Dmode=%MODE% -DinstalledNo="%INSTALLED_NO%" -DstackXml=%STACK_XML% -f "%SCRIPTS_DIR%install.xml"
	if errorlevel 1 goto error
	set INSTALLED_NO=%INSTALLED_NO%,%PET_STOREK_NO%
)
if "%INSTALL_PET_STORE_SEASAR2%" == "y" (
	call ant -Dno=%PET_STORE_SEASAR2_NO% -Dmode=%MODE% -DinstalledNo="%INSTALLED_NO%" -DstackXml=%STACK_XML% -f "%SCRIPTS_DIR%install.xml"
	if errorlevel 1 goto error
	set INSTALLED_NO=%INSTALLED_NO%,%PET_STOREK_NO%
)
if "%INSTALL_JBOSS_ESB%" == "y" (
	call ant -Dno=%JBOSS_ESB_NO% -Dmode=%MODE% -DinstalledNo="%INSTALLED_NO%" -DstackXml=%STACK_XML% -f "%SCRIPTS_DIR%install.xml"
	if errorlevel 1 goto error
	set INSTALLED_NO=%INSTALLED_NO%,%JBOSS_ESB_NO%
)
if "%INSTALL_APACHE_TOMCAT%" == "y" (
	call ant -Dno=%APACHE_TOMCAT_NO% -Dmode=%MODE% -DinstalledNo="%INSTALLED_NO%" -DstackXml=%STACK_XML% -f "%SCRIPTS_DIR%install.xml"
	if errorlevel 1 goto error
)


REM ##### インストール全体後処理 #####
echo.
call ant -Dmode=%MODE% -DstackXml=%STACK_XML% -f "%SCRIPTS_DIR%install-after.xml"
if errorlevel 1 goto error

goto end
REM ##### 異常終了 #####
:error
echo %MODE_STR%処理の途中で異常が発生しました...


REM ##### 処理終了 #####
:end
echo %MODE_STR%処理を終了しました...

endlocal
