Skip to content
Snippets Groups Projects
Commit e84e61f3 authored by Schneider Stefan's avatar Schneider Stefan
Browse files

added determineWinner Methode zu TournamentService #24

parent 4dd1541b
No related branches found
No related tags found
1 merge request!7Dev in Main Merge
package hdm.mi.sthbackend.service; package hdm.mi.sthbackend.service;
import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClient;
import hdm.mi.sthbackend.exeptions.MatchIdNotFoundException;
import hdm.mi.sthbackend.exeptions.PlayerIdNotFoundException; import hdm.mi.sthbackend.exeptions.PlayerIdNotFoundException;
import hdm.mi.sthbackend.exeptions.TeamIdNotFoundException; import hdm.mi.sthbackend.exeptions.TeamIdNotFoundException;
import hdm.mi.sthbackend.exeptions.TournamentIdNotFoundException; import hdm.mi.sthbackend.exeptions.TournamentIdNotFoundException;
import hdm.mi.sthbackend.model.Match;
import hdm.mi.sthbackend.model.Player; import hdm.mi.sthbackend.model.Player;
import hdm.mi.sthbackend.model.Team; import hdm.mi.sthbackend.model.Team;
import hdm.mi.sthbackend.model.Tournament; import hdm.mi.sthbackend.model.Tournament;
...@@ -12,12 +14,11 @@ import hdm.mi.sthbackend.repository.MongoManager; ...@@ -12,12 +14,11 @@ import hdm.mi.sthbackend.repository.MongoManager;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.springframework.data.mongodb.core.aggregation.VariableOperators;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import javax.swing.text.html.parser.Entity;
import java.util.HashMap; import java.util.*;
import java.util.Optional;
import java.util.UUID;
@Service @Service
@AllArgsConstructor @AllArgsConstructor
...@@ -134,6 +135,26 @@ public class TournamentService { ...@@ -134,6 +135,26 @@ public class TournamentService {
return tournament; return tournament;
} }
public UUID determineWinner (UUID tournamentId, UUID matchId) throws TournamentIdNotFoundException, MatchIdNotFoundException{
Tournament tournament = tournamentRepository.findById(tournamentId)
.orElseThrow(() -> new TournamentIdNotFoundException(tournamentId));
Match match = tournament.getMatches().stream()
.filter(m -> m.getMatchId().equals(matchId))
.findFirst()
.orElseThrow(() -> new MatchIdNotFoundException(matchId));
UUID winnerTeamId = match.getTeamScores().entrySet().stream()
.max(Comparator.<Map.Entry<UUID, Number>, Double>comparing(entry -> entry.getValue().doubleValue()))
.map(Map.Entry::getKey)
.orElse(null);
match.setWinnerTeamId(winnerTeamId);
tournamentRepository.save(tournament);
log.debug("The Winner " + winnerTeamId + " is determined for Match " + matchId + " in Tournament " + tournamentId);
return winnerTeamId;
}
/* /*
Weitere Methoden: Weitere Methoden:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment