package betsy.common.engines.tomcat; import java.nio.file.Path; import betsy.common.config.Configuration; import betsy.common.tasks.ConsoleTasks; import betsy.common.tasks.FileTasks; import betsy.common.tasks.NetworkTasks; import betsy.common.tasks.ZipTasks; public class TomcatInstaller { private final Path destinationDir; private final String fileName; private final String tomcatName; private String additionalVmParam = ""; public TomcatInstaller(Path destinationDir, String fileName, String tomcatName) { this.destinationDir = destinationDir; this.fileName = fileName; this.tomcatName = tomcatName; } public static TomcatInstaller v7(Path parentFolder) { return new TomcatInstaller(parentFolder, "apache-tomcat-7.0.53-windows-x64.zip", "apache-tomcat-7.0.53"); } public static TomcatInstaller v5(Path parentFolder) { return new TomcatInstaller(parentFolder, "apache-tomcat-5.5.36.zip", "apache-tomcat-5.5.36"); } public void install() { NetworkTasks.downloadFileFromBetsyRepo(fileName); FileTasks.deleteDirectory(destinationDir); FileTasks.mkdirs(destinationDir); ZipTasks.unzip(Configuration.getDownloadsDir().resolve(fileName), destinationDir); FileTasks.createFile(destinationDir.resolve("tomcat_startup.bat"), "SET CATALINA_OPTS=-Xmx3048M -XX:MaxPermSize=2048m " + additionalVmParam + "\ncd " + getTomcat().getTomcatBinDir().toAbsolutePath() + " && start \"" + getTomcatName() + "\" /min startup.bat"); FileTasks.createFile(destinationDir.resolve("tomcat_shutdown.bat"), "cd " + getTomcat().getTomcatBinDir().toAbsolutePath() + " && call shutdown.bat"); FileTasks.createFile(destinationDir.resolve("tomcat_startup.sh"), "CATALINA_OPTS=\"-Xmx3048M -XX:MaxPermSize=2048m\"" + additionalVmParam + "\ncd " + getTomcat().getTomcatBinDir().toAbsolutePath() + " && ./startup.sh"); FileTasks.createFile(destinationDir.resolve("tomcat_shutdown.sh"), "cd " + getTomcat().getTomcatBinDir().toAbsolutePath() + " && ./shutdown.sh"); ConsoleTasks.executeOnUnix(ConsoleTasks.CliCommand.build("chmod").values("--recursive", "777", destinationDir.toAbsolutePath().toString())); FileTasks.replaceLine(getTomcat().getTomcatBinDir().resolve("startup.bat"), "call \"%EXECUTABLE%\" start %CMD_LINE_ARGS%", "call \"%EXECUTABLE%\" run %CMD_LINE_ARGS%"); } public Tomcat getTomcat() { return new Tomcat(destinationDir, tomcatName, 8080); } public Path getDestinationDir() { return destinationDir; } public String getAdditionalVmParam() { return additionalVmParam; } public void setAdditionalVmParam(String additionalVmParam) { this.additionalVmParam = additionalVmParam; } public String getFileName() { return fileName; } public String getTomcatName() { return tomcatName; } }