//package ru.madfistwilly.basketballstats;
//https://stackoverflow.com/questions/15749192/how-do-i-load-a-file-from-resource-folder
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.LinkedHashMap;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
public class ActionParsingTrainingPlan implements UserAction {
private final Output out;
private final String label = "Parsing Training Plan";
private final String path = "D:\\t\\Temp\\ParsingTrainingPlan\\training_plan.csv";
public ActionParsingTrainingPlan(Output out) {
this.out = out;
}
@Override
public String name() {
return label;
}
@Override
public boolean execute(Input input, Store tracker) {
CLS.cls();
out.println("=====" + label + "=====");
List<String> strings = load(path);
strings.stream().forEach(out::println);
Map<String, int[]> parsedPlan = parsingPlan(strings);
parsedPlan.entrySet()
.stream()
.map(e -> e.getKey().concat(": ").concat(Arrays.toString(e.getValue())))
.forEach(out::println);
input.askStr("Press \"Enter\" ");
return true;
}
private Map<String, int[]> parsingPlan(List<String> strings) {
Map<String, int[]> trainingPlan = new LinkedHashMap<>();
for(String str : strings) {
String[] splitted = str.split(";", -1);
if(splitted.length != 18) {
out.println("Incorrectly formed csv table");
return null;
}
String key = splitted[0];
int[] skills = new int[15];
for(int i = 0; i < 15; i++) {
if(splitted[i + 3].isBlank()){
skills[i] = 0;
} else {
skills[i] = Integer.parseInt(splitted[i + 3]);
}
}
trainingPlan.put(key, skills);
}
return trainingPlan;
}
private List<String> load(String path) {
List<String> strings = new ArrayList<>();
try (BufferedReader in = new BufferedReader(new FileReader(path))) {
for (String line = in.readLine(); line != null; line = in.readLine()) {
if (!line.isBlank()) {
strings.add(line);
}
}
} catch (IOException e) {
e.printStackTrace();
}
return strings;
}
}