package configuration.bpmn;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import betsy.bpmn.model.BPMNTestCaseBuilder;
import betsy.common.util.FileTypes;
import configuration.Capabilities;
import pebl.benchmark.feature.Feature;
import pebl.benchmark.test.Test;
import pebl.benchmark.test.TestCase;
import static configuration.FilesLocation.BPMN_LOCATION;
public class BPMNProcessBuilder {
public static final Path ROOT_FOLDER = Paths.get(BPMN_LOCATION);
public static Test buildActivityProcess(String name, String description, Feature feature, BPMNTestCaseBuilder... testCases) {
return new Test(ROOT_FOLDER.resolve("activities").resolve(name + FileTypes.BPMN),
description,
convert(testCases, name),
feature, Collections.emptyList());
}
private static List<TestCase> convert(BPMNTestCaseBuilder[] testCases, String name) {
List<TestCase> testCaseList = new LinkedList<>();
for(int i = 1; i <= testCases.length; i++) {
testCaseList.add(testCases[i - 1].getTestCase(i, name));
}
return testCaseList;
}
public static Test buildGatewayProcess(String name, String description, Feature feature, BPMNTestCaseBuilder... testCases) {
return Capabilities.addMetrics(new Test(ROOT_FOLDER.resolve("gateways").resolve(name + FileTypes.BPMN), description,
convert(testCases, name),
feature, Collections.emptyList()));
}
public static Test buildErrorProcess(String name, String description, Feature feature, BPMNTestCaseBuilder... testCases) {
return Capabilities.addMetrics(new Test(ROOT_FOLDER.resolve("errors").resolve(name + FileTypes.BPMN),
description,
convert(testCases, name),
feature, Collections.emptyList()));
}
public static Test buildEventProcess(String name, String description, Feature feature, BPMNTestCaseBuilder... testCases) {
return Capabilities.addMetrics(new Test(ROOT_FOLDER.resolve("events").resolve(name + FileTypes.BPMN),
description,
convert(testCases, name),
feature, Collections.emptyList()));
}
public static Test buildBasicProcess(String name, String description, Feature feature, BPMNTestCaseBuilder... testCases) {
return Capabilities.addMetrics(new Test(ROOT_FOLDER.resolve("basics").resolve(name + FileTypes.BPMN), description,
convert(testCases, name),
feature, Collections.emptyList()));
}
public static Test buildDataProcess(String description, Feature feature, BPMNTestCaseBuilder... testCases) {
return Capabilities.addMetrics(new Test(ROOT_FOLDER.resolve("data").resolve(feature.getName() + FileTypes.BPMN), description,
convert(testCases, feature.getName()),
feature, Collections.emptyList()));
}
public static Test buildPatternProcess (String description, Feature feature, BPMNTestCaseBuilder... testCases){
return Capabilities.addMetrics(new Test(ROOT_FOLDER.resolve("cfpatterns").resolve(feature.getName() + FileTypes.BPMN), description,
convert(testCases, feature.getName()),
feature, Collections.emptyList()));
}
public static Test buildConstraintProcess (String description, Feature feature, BPMNTestCaseBuilder... testCases){
return Capabilities.addMetrics(new Test(ROOT_FOLDER.resolve("cfpatterns").resolve(feature.getName() + FileTypes.BPMN), description,
convert(testCases, feature.getName()),
feature, Collections.emptyList()));
}
}