package betsy.tools;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import betsy.bpel.repositories.BPELEngineRepository;
import betsy.bpmn.repositories.BPMNEngineRepository;
import betsy.common.engines.EngineLifecycle;
public class EngineMain {
private static Map<String, Consumer<EngineLifecycle>> commands = new HashMap<>();
public static void main(String... args) {
commands.put("install", EngineLifecycle::install);
commands.put("uninstall", EngineLifecycle::uninstall);
commands.put("isInstalled", EngineLifecycle::isInstalled);
commands.put("startup", EngineLifecycle::startup);
commands.put("shutdown", EngineLifecycle::shutdown);
commands.put("isRunning", EngineLifecycle::isRunning);
if (args.length != 2 || args[0] == null || args[1] == null) {
usage();
return;
}
String commandName = args[1];
Consumer<EngineLifecycle> command = commands.get(commandName);
if (command == null) {
usage();
return;
}
String engineName = args[0];
Optional<EngineLifecycle> engine = getEngines().stream().filter((e) -> e.toString().equalsIgnoreCase(engineName)).findFirst();
if (!engine.isPresent()) {
usage();
return;
}
System.out.format("Executing command %s on engine %s", commandName, engineName);
command.accept(engine.get());
}
private static List<EngineLifecycle> getEngines() {
final List<EngineLifecycle> bpelEngines = new BPELEngineRepository().getByName("ALL").stream().collect(Collectors.toList());
final List<EngineLifecycle> bpmnEngines = new BPMNEngineRepository().getByName("ALL").stream().collect(Collectors.toList());
final List<EngineLifecycle> engines = new LinkedList<>();
engines.addAll(bpelEngines);
engines.addAll(bpmnEngines);
return engines;
}
private static void usage() {
System.out.println("betsy engine ENGINE COMMAND");
System.out.println("");
System.out.println("ENGINE: \n" + getEngines().stream().map(Object::toString).collect(Collectors.joining("\n")));
System.out.println();
System.out.println("COMMAND: \n" + String.join("\n", commands.keySet()));
}
}