package betsy.bpmn.engines; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import betsy.bpmn.model.BPMNProcess; import betsy.common.HasPath; import betsy.common.engines.EngineAPI; import betsy.common.engines.LocalEngineAPI; import betsy.common.tasks.FileTasks; import pebl.ProcessLanguage; public abstract class AbstractBPMNEngine implements EngineAPI<BPMNProcess>, LocalEngineAPI, HasPath { private Path parentFolder; private final List<BPMNProcess> processes = new ArrayList<>(); public abstract Path getXsltPath(); /** * The path <code>test/$engine</code> * * @return the path <code>test/$engine</code> */ public Path getPath() { return parentFolder.resolve(getName()); } @Override public String toString() { return getName(); } public boolean equals(Object o) { if (o == this) { return true; } if (!getClass().equals(o.getClass())) { return false; } AbstractBPMNEngine engine = (AbstractBPMNEngine) o; return getName().equals(engine.getName()); } @Override public ProcessLanguage getSupportedLanguage() { return ProcessLanguage.BPMN; } public int hashCode() { return getName() == null ? 0 : getName().hashCode(); } @Override public Path getServerPath() { return Paths.get("server").resolve(getName()); } @Override public boolean isInstalled() { return FileTasks.hasFolder(getServerPath()); } @Override public void uninstall() { FileTasks.deleteDirectory(getServerPath()); } /** * Builds test for the BPMN process * * @param process */ public abstract void buildTest(BPMNProcess process); /** * performs test for the BPMN Process * * @param process */ public abstract void testProcess(BPMNProcess process); public void setParentFolder(Path parentFolder) { this.parentFolder = parentFolder; } public final List<BPMNProcess> getProcesses() { return processes; } public abstract BPMNProcessStarter getProcessStarter(); public abstract Path getLogForInstance(String processName, String instanceId); }