CsvCompetenceReader.java
package fr.avenirsesr.portfolio.interoperability.additionalskill.casoc.infrastructure.service;
import fr.avenirsesr.portfolio.interoperability.additionalskill.casoc.domain.model.Category;
import fr.avenirsesr.portfolio.interoperability.additionalskill.casoc.domain.model.Competence;
import fr.avenirsesr.portfolio.interoperability.additionalskill.casoc.domain.service.CompetenceReader;
import fr.avenirsesr.portfolio.shared.infrastructure.utils.FileReader;
import java.util.List;
public class CsvCompetenceReader implements CompetenceReader {
private static final String DOMAIN_FILE = "domain.csv";
private static final String COMPETENCE_FILE = "skill.csv";
private static final String CSV_SEPARATOR = ";";
@Override
public List<Competence> readCompetences() {
var categories = readCategories();
return FileReader.readCSV(
"/additional-skill/casoc/" + COMPETENCE_FILE,
CSV_SEPARATOR,
tokens ->
new Competence(
Integer.parseInt(tokens[0].trim()),
tokens[1].trim(),
categories.stream()
.filter(category -> category.id() == Integer.parseInt(tokens[2].trim()))
.findAny()
.orElseThrow()));
}
private List<Category> readCategories() {
return FileReader.readCSV(
"/additional-skill/casoc/" + DOMAIN_FILE,
CSV_SEPARATOR,
tokens -> new Category(Integer.parseInt(tokens[0].trim()), tokens[1].trim()));
}
}