You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

58 lines
2.0 KiB

package com.example.application.data.service;
import com.example.application.data.entity.Matchday;
import com.example.application.data.entity.Season;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.NonNull;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Service;
import org.vaadin.artur.helpers.CrudService;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class MatchdayService extends CrudService<Matchday, Integer> {
private final MatchdayRepository repository;
public MatchdayService(@Autowired MatchdayRepository repository) {
this.repository = repository;
}
@Override
protected MatchdayRepository getRepository() {
return repository;
}
@NonNull
public List<Matchday> getMatchdaysForSeasonSorted(@NonNull Season season) {
return repository.findAll().stream()
.filter(matchday -> matchday.getSeason().equals(season))
.sorted(Comparator.comparingInt(Matchday::getNumber))
.collect(Collectors.toList());
}
@NonNull
public List<Matchday> getMatchdaysWithActivityForSeasonSorted(@NonNull Season season) {
return repository.findAll().stream()
.filter(matchday -> matchday.getSeason().equals(season))
.filter(this::hasActivity)
.sorted(Comparator.comparingInt(Matchday::getNumber))
.collect(Collectors.toList());
}
@Nullable
public Matchday getLastMatchdayWithActivityForSeason(@NonNull Season season) {
List<Matchday> matchdaysWithActivity = getMatchdaysWithActivityForSeasonSorted(season);
if (matchdaysWithActivity.isEmpty()) {
return null;
}
return matchdaysWithActivity.get(matchdaysWithActivity.size()-1);
}
public boolean hasActivity(@NonNull Matchday matchday) {
return matchday.getMatches().stream().mapToInt(match -> match.getGames().size()).sum() != 0;
}
}