package betsy.bpmn.engines.flowable;
import java.nio.file.Path;
import java.util.Optional;
import betsy.common.config.Configuration;
import betsy.common.engines.tomcat.Tomcat;
import betsy.common.engines.tomcat.TomcatInstaller;
import betsy.common.tasks.FileTasks;
import betsy.common.tasks.NetworkTasks;
import betsy.common.tasks.ZipTasks;
public class FlowableInstaller {
private Path destinationDir;
private String fileName;
private Optional<String> groovyFile = Optional.empty();
public void setDestinationDir(Path destinationDir) {
this.destinationDir = destinationDir;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public void setGroovyFile(Optional<String> groovyFile) {
this.groovyFile = groovyFile;
}
public Path getClassesPath() {
return Tomcat.v7(destinationDir).getTomcatWebappsDir().resolve("flowable-rest").resolve("WEB-INF").resolve("classes");
}
public void install() {
// install tomcat
TomcatInstaller.v7(destinationDir).install();
// unzip activiti
NetworkTasks.downloadFileFromBetsyRepo(fileName);
ZipTasks.unzip(Configuration.getDownloadsDir().resolve(fileName), destinationDir);
// deploy
String activitiFolder = fileName.replace(".zip","");
Tomcat.v7(destinationDir).deployWar(destinationDir.resolve(activitiFolder).resolve("wars").resolve("flowable-rest.war"));
if(groovyFile.isPresent()) {
NetworkTasks.downloadFileFromBetsyRepo(groovyFile.get());
Tomcat.v7(destinationDir).addLib(Configuration.getDownloadsDir().resolve(groovyFile.get()));
}
FileTasks.createFile(getClassesPath().resolve("log4j.properties"), "log4j.rootLogger=DEBUG, CA, FILE\n" +
"\n" +
"# ConsoleAppender\n" +
"log4j.appender.CA=org.apache.log4j.ConsoleAppender\n" +
"log4j.appender.CA.layout=org.apache.log4j.PatternLayout\n" +
"log4j.appender.CA.layout.ConversionPattern= %d{hh:mm:ss,SSS} [%t] %-5p %c %x - %m%n\n" +
"\n" +
"log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender\n" +
"log4j.appender.FILE.File=${catalina.base}/logs/activiti.log\n" +
"log4j.appender.FILE.Append=true\n" +
"log4j.appender.FILE.Encoding=UTF-8\n" +
"log4j.appender.FILE.layout=org.apache.log4j.PatternLayout\n" +
"log4j.appender.FILE.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n\n");
}
}