/
Danchi
/
Java_Cars
Обзор
Документация
Войти
/
Danchi
/
Java_Cars
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/main/java/com/example/car/service/CarModelServiceImpl.java
66 строк
2 KB
artem
add unit tests
14 окт 2024, 15:20
14 окт 2024, 15:20
48bb42c
Код
Авторство
О чём код?
package com.example.car.service; import com.example.car.dto.CarModelDto; import java.io.FileReader; import java.io.IOException; import java.nio.file.Path; import java.nio.file.Paths; import java.util.*; import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVParser; import org.apache.commons.csv.CSVRecord; @RequiredArgsConstructor public class CarModelServiceImpl implements CarModelService { private final List<CarModelDto> carModels = new ArrayList<>(); private Long id = 0L; @Override public void load(String p) { Path path = Paths.get(p); try (CSVParser parser = CSVFormat.DEFAULT.withDelimiter(';').parse(new FileReader(path.toFile()))) { Iterator<CSVRecord> iterator = parser.iterator(); if (iterator.hasNext()) { iterator.next(); } for (CSVRecord record : parser) { CarModelDto carModel = new CarModelDto( id++, record.get(0), record.get(1), record.get(2), record.get(3)); carModels.add(carModel); } } catch (IOException e) { System.out.println(e.getMessage()); } } @Override public Optional<CarModelDto> findById(Long id) { return carModels.stream().filter(carModel -> carModel.getId().equals(id)).findFirst(); } @Override public List<CarModelDto> getAllCarModels() { return new ArrayList<>(carModels); } @Override public List<CarModelDto> getAllCarModels(String brandName) { return carModels.stream() .filter(carModel -> carModel.getBrand().equals(brandName)) .collect(Collectors.toList()); } @Override public Map<String, Integer> getCountCarsGroupByModels() { return carModels.stream() .collect( Collectors.groupingBy( CarModelDto::getBrand, Collectors.summingInt(c -> 1))); } }