package betsy.bpmn.model;
import java.nio.file.Path;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import betsy.bpmn.engines.AbstractBPMNEngine;
import betsy.common.model.ProcessFolderStructure;
import betsy.common.model.engine.EngineDimension;
import betsy.common.model.engine.EngineExtended;
import pebl.benchmark.feature.Feature;
import pebl.benchmark.feature.FeatureDimension;
import pebl.benchmark.feature.Group;
import pebl.benchmark.test.Test;
import pebl.benchmark.test.TestCase;
public class BPMNProcess implements ProcessFolderStructure, Comparable<BPMNProcess>, FeatureDimension, EngineDimension {
private Test test;
private AbstractBPMNEngine engine;
private Path deploymentPackagePath;
public Test getTest() {
return test;
}
public void setTest(Test test) {
this.test = test;
}
public Path getDeploymentPackagePath() {
return deploymentPackagePath;
}
public void setDeploymentPackagePath(Path deploymentPackagePath) {
this.deploymentPackagePath = deploymentPackagePath;
}
public BPMNProcess(Test test) {
this.test = Objects.requireNonNull(test);
}
public BPMNProcess createCopyWithoutEngine() {
return new BPMNProcess(test);
}
public void setEngine(AbstractBPMNEngine engine) {
this.engine = engine;
}
public Path getTargetReportsPathWithCase(int testCaseNumber) {
return getTargetReportsPath().resolve("case" + testCaseNumber);
}
public Path getTargetTestBinPath() {
return getTargetPath().resolve("testBin");
}
public Path getTargetTestBinPathWithCase(int testCaseName) {
return getTargetTestBinPath().resolve("case" + testCaseName);
}
public Path getTargetTestSrcPath() {
return getTargetPath().resolve("testSrc");
}
public Path getTargetTestSrcPathWithCase(int testCaseNumber) {
return getTargetTestSrcPath().resolve("case" + testCaseNumber);
}
@Override
public AbstractBPMNEngine getEngine() {
return engine;
}
@Override
public Path getProcess() {
return test.getProcess();
}
@Override
public Group getGroup() {
return this.test.getGroup();
}
@Override
public Feature getFeature() {
return test.getFeature();
}
public List<TestCase> getTestCases() {
return test.getTestCases().stream().map(p -> (TestCase) p).collect(Collectors.toList());
}
@Override
public int compareTo(BPMNProcess o) {
return test.compareTo(o.test);
}
public String getDescription() {
return test.getDescription();
}
@Override
public EngineExtended getEngineObject() {
return getEngine().getEngineObject();
}
public FeatureDimension getFeatureDimension() {
return test;
}
@Override
public String getGroupName() {
return getFeatureDimension().getGroup().getName();
}
public String getPackageID() {
return String.join(".", getEngineID(), getGroup().getName());
}
}