package betsy.common.analytics;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import betsy.common.analytics.model.CsvReport;
import betsy.common.analytics.model.Engine;
import betsy.common.analytics.model.Group;
import betsy.common.analytics.model.Result;
import betsy.common.analytics.model.Test;
import betsy.common.reporting.CsvRow;
import betsy.common.tasks.FileTasks;
public class CsvReportLoader {
private final Path csvFile;
private final CsvReport csvReport;
public CsvReportLoader(Path csvFile, CsvReport csvReport) {
this.csvFile = csvFile;
this.csvReport = csvReport;
FileTasks.assertFile(csvFile);
}
public CsvReport load() {
csvReport.setFile(csvFile);
for (String line : readCsvFile()) {
CsvRow row = new CsvRow(line);
Group group = csvReport.getGroup(row.getGroup());
Engine engine = csvReport.getEngine(row.getEngine());
Result result = new Result();
result.setFailed(row.getFailures());
result.setTotal(row.getTests());
result.setDeployable(row.isDeployable());
Test test = csvReport.getTest(row.getName());
test.getEngineToResult().put(engine, result);
group.getTests().add(test);
}
return csvReport;
}
private List<String> readCsvFile() {
try {
return Files.readAllLines(csvFile, StandardCharsets.UTF_8);
} catch (IOException e) {
throw new RuntimeException("Cannot read file " + csvFile, e);
}
}
}