package betsy.common.analytics.model;
import java.nio.file.Path;
import java.util.Collection;
import java.util.SortedMap;
import java.util.TreeMap;
public class CsvReport {
private Path file;
private final SortedMap<String, Test> nameToTest = new TreeMap<>();
private final SortedMap<String, Group> nameToGroup = new TreeMap<>();
private final SortedMap<String, Engine> nameToEngine = new TreeMap<>();
public Group getGroup(String name) {
if (nameToGroup.containsKey(name)) {
return nameToGroup.get(name);
} else {
Group group = new Group(name);
nameToGroup.put(name, group);
return group;
}
}
public Collection<Engine> getEngines() {
return nameToEngine.values();
}
public Collection<Group> getGroups() {
return nameToGroup.values();
}
public Collection<Test> getTests() {
return nameToTest.values();
}
public Engine getEngine(String name) {
if (nameToEngine.containsKey(name)) {
return nameToEngine.get(name);
} else {
Engine engine = new Engine(name);
nameToEngine.put(name, engine);
return engine;
}
}
public Test getTest(String name) {
if (nameToTest.containsKey(name)) {
return nameToTest.get(name);
} else {
Test test = new Test();
test.setName(name);
nameToTest.put(name, test);
return test;
}
}
public int getNumberOfSuccessfulTestsPer(Engine engine) {
int successfulTests = 0;
for (Test test : getTests()) {
try {
Result result = test.getEngineToResult().get(engine);
if (result.isSuccessful()) {
successfulTests++;
}
} catch (NullPointerException ignore) {
// test has not been recorded due to a crash
}
}
return successfulTests;
}
public int getNumberOfSuccessfulTestsPerEngineAndGroup(Engine engine, Group group) {
int successfulTests = 0;
for (Test test : group.getTests()) {
try {
Result result = test.getEngineToResult().get(engine);
if (result.isSuccessful()) {
successfulTests++;
}
} catch (NullPointerException ignore) {
// test has not been recorded due to a crash
}
}
return successfulTests;
}
public String getRelativePath(Group group, Engine engine, Test test) {
return "#";
}
public Path getFile() {
return file;
}
public void setFile(Path file) {
this.file = file;
}
public final SortedMap<String, Test> getNameToTest() {
return nameToTest;
}
public final SortedMap<String, Group> getNameToGroup() {
return nameToGroup;
}
public final SortedMap<String, Engine> getNameToEngine() {
return nameToEngine;
}
}