@echo off setlocal EnableDelayedExpansion set BASE=%~dp0 set JAVAC="C:\Program Files\Eclipse Adoptium\jdk-17.0.7.7-hotspot\bin\javac.exe" set JAVA="C:\Program Files\Eclipse Adoptium\jdk-17.0.7.7-hotspot\bin\java.exe" set LOG=%BASE%output.log echo Design Patterns - Compile and Run > "%LOG%" echo Java: 17.0.7 (Eclipse Temurin) >> "%LOG%" echo ================================ >> "%LOG%" :: Create output dirs for %%P in (adapter bridge composite decorator facade flyweight proxy) do ( if not exist "%BASE%out\%%P" mkdir "%BASE%out\%%P" ) :: Function-like subroutine to compile a package :: Usage: CALL :compile_pkg :: --- ADAPTER --- echo. >> "%LOG%" echo === ADAPTER === >> "%LOG%" set FILES= for %%f in ("%BASE%02-structural\adapter\*.java") do set FILES=!FILES! "%%f" %JAVAC% -d "%BASE%out\adapter" !FILES! >> "%LOG%" 2>&1 if not errorlevel 1 (%JAVA% -cp "%BASE%out\adapter" adapter.Main >> "%LOG%" 2>&1) :: --- BRIDGE --- echo. >> "%LOG%" echo === BRIDGE === >> "%LOG%" set FILES= for %%f in ("%BASE%02-structural\bridge\*.java") do set FILES=!FILES! "%%f" %JAVAC% -d "%BASE%out\bridge" !FILES! >> "%LOG%" 2>&1 if not errorlevel 1 (%JAVA% -cp "%BASE%out\bridge" bridge.Main >> "%LOG%" 2>&1) :: --- COMPOSITE --- echo. >> "%LOG%" echo === COMPOSITE === >> "%LOG%" set FILES= for %%f in ("%BASE%02-structural\composite\*.java") do set FILES=!FILES! "%%f" %JAVAC% -d "%BASE%out\composite" !FILES! >> "%LOG%" 2>&1 if not errorlevel 1 (%JAVA% -cp "%BASE%out\composite" composite.Main >> "%LOG%" 2>&1) :: --- DECORATOR --- echo. >> "%LOG%" echo === DECORATOR === >> "%LOG%" set FILES= for %%f in ("%BASE%02-structural\decorator\*.java") do set FILES=!FILES! "%%f" %JAVAC% -d "%BASE%out\decorator" !FILES! >> "%LOG%" 2>&1 if not errorlevel 1 (%JAVA% -cp "%BASE%out\decorator" decorator.Main >> "%LOG%" 2>&1) :: --- FACADE --- echo. >> "%LOG%" echo === FACADE === >> "%LOG%" set FILES= for %%f in ("%BASE%02-structural\facade\*.java") do set FILES=!FILES! "%%f" %JAVAC% -d "%BASE%out\facade" !FILES! >> "%LOG%" 2>&1 if not errorlevel 1 (%JAVA% -cp "%BASE%out\facade" facade.Main >> "%LOG%" 2>&1) :: --- FLYWEIGHT --- echo. >> "%LOG%" echo === FLYWEIGHT === >> "%LOG%" set FILES= for %%f in ("%BASE%02-structural\flyweight\*.java") do set FILES=!FILES! "%%f" %JAVAC% -d "%BASE%out\flyweight" !FILES! >> "%LOG%" 2>&1 if not errorlevel 1 (%JAVA% -cp "%BASE%out\flyweight" flyweight.Main >> "%LOG%" 2>&1) :: --- PROXY --- echo. >> "%LOG%" echo === PROXY === >> "%LOG%" set FILES= for %%f in ("%BASE%02-structural\proxy\*.java") do set FILES=!FILES! "%%f" %JAVAC% -d "%BASE%out\proxy" !FILES! >> "%LOG%" 2>&1 if not errorlevel 1 (%JAVA% -cp "%BASE%out\proxy" proxy.Main >> "%LOG%" 2>&1) echo. >> "%LOG%" echo [DONE] >> "%LOG%" notepad "%LOG%"