package betsy.tools; import java.io.BufferedWriter; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; import java.time.format.DateTimeFormatter; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.LinkedList; import java.util.List; import java.util.stream.Collectors; import betsy.bpel.repositories.BPELEngineRepository; import betsy.bpel.virtual.host.VirtualEngineAPI; import betsy.bpmn.repositories.BPMNEngineRepository; import betsy.common.engines.EngineLifecycle; import betsy.common.model.engine.EngineExtended; import betsy.common.model.engine.IsEngine; public class EngineTableGenerator { public static void main(String[] args) { generateEnginesJson(); } private static void generateEnginesJson() { try (BufferedWriter writer = Files.newBufferedWriter(Paths.get("engines.tex"), StandardOpenOption.CREATE)) { writer.write("Language & Name & Version & License & Developed in & Released at & Configurations\\\\"); writer.newLine(); List<EngineExtended> engines = getEngines().stream().filter(e -> !(e instanceof VirtualEngineAPI)).map(e -> ((IsEngine) e).getEngineObject()).collect(Collectors.toList()); Collections.sort(engines, Comparator.comparing(EngineExtended::getLanguage) .thenComparing(EngineExtended::getName) .thenComparing(EngineExtended::getVersion)); for (EngineExtended engine : engines) { String line = String.join(" & ", Arrays.asList( engine.getLanguage().getId(), engine.getName(), engine.getVersion(), engine.getLicense(), engine.getProgrammingLanguage(), DateTimeFormatter.ISO_LOCAL_DATE.format(engine.getReleaseDate()), String.join(", ", engine.getConfiguration()))) + "\\\\"; writer.write(line); writer.newLine(); } } catch (IOException e) { e.printStackTrace(); } } 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; } }