Найти тему

Парсинг тренировочного плана

//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;

}

}