diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/service/TournamentService.java b/sth-backend/src/main/java/hdm/mi/sthbackend/service/TournamentService.java index bd33d49db1155f1f64e8d9e1d804a7c37e25d387..a7d381046b6e669143b2b63a4b0651f3b4085609 100644 --- a/sth-backend/src/main/java/hdm/mi/sthbackend/service/TournamentService.java +++ b/sth-backend/src/main/java/hdm/mi/sthbackend/service/TournamentService.java @@ -12,7 +12,10 @@ import hdm.mi.sthbackend.repository.MongoManager; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Optional; +import java.util.UUID; @Service @AllArgsConstructor @@ -20,7 +23,9 @@ public class TournamentService { ITournamentRepository tournamentRepository; - public Player addPlayerToTeam(UUID tournamentId, UUID teamId, String playerName) throws TournamentIdNotFoundException { + public Player addPlayerToTeam(UUID tournamentId, + UUID teamId, + String playerName) throws TournamentIdNotFoundException { Tournament tournament = tournamentRepository.findById(tournamentId) .orElseThrow(() -> new TournamentIdNotFoundException(tournamentId)); Player newPlayer = new Player(UUID.randomUUID(), playerName); @@ -28,33 +33,24 @@ public class TournamentService { .getTeams() .get(teamId) .getTeamMembers() - .add(newPlayer); + .put(newPlayer.getPlayerId(), newPlayer); tournamentRepository.save(tournament); return newPlayer; } public Player removePlayerFromTeam(UUID tournamentId, UUID teamId, - UUID playerId) throws TournamentIdNotFoundException, PlayerIdNotFoundException { + UUID playerId) throws TournamentIdNotFoundException { Tournament tournament = tournamentRepository.findById(tournamentId) .orElseThrow(() -> new TournamentIdNotFoundException(tournamentId)); - List<Player> teamMembers = tournament.getTeams() - .get(teamId) - .getTeamMembers(); - - Player playerToRemove = teamMembers.stream() - .filter(player -> player.getPlayerId() - .equals(playerId)) - .findFirst() - .orElseThrow(() -> new PlayerIdNotFoundException(playerId)); - - tournament.getTeams() + Player removedPlayer = tournament.getTeams() .get(teamId) .getTeamMembers() - .remove(playerToRemove); + .remove(playerId); + tournamentRepository.save(tournament); - return playerToRemove; + return removedPlayer; } public UUID updatePlayerName(UUID tournamentId, @@ -67,12 +63,9 @@ public class TournamentService { tournament.getTeams() .get(teamId) .getTeamMembers() - .stream() - .filter(player -> player.getPlayerId() - .equals(playerId)) - .findFirst() - .orElseThrow(() -> new PlayerIdNotFoundException(playerId)) + .get(playerId) .setName(newPlayerName); + tournamentRepository.save(tournament); return playerId; } @@ -81,7 +74,7 @@ public class TournamentService { Tournament tournament = tournamentRepository.findById(tournamentId) .orElseThrow(() -> new TournamentIdNotFoundException(tournamentId)); - Team team = new Team(UUID.randomUUID(), teamName, new ArrayList<>() { + Team team = new Team(UUID.randomUUID(), teamName, new HashMap<>() { }); tournament.getTeams() @@ -91,11 +84,14 @@ public class TournamentService { return team; } - public UUID removeTeamFromTournament(UUID tournamentId, UUID teamId) throws TournamentIdNotFoundException, TeamIdNotFoundException { + public UUID removeTeamFromTournament(UUID tournamentId, + UUID teamId) throws TournamentIdNotFoundException, TeamIdNotFoundException { Tournament tournament = tournamentRepository.findById(tournamentId) .orElseThrow(() -> new TournamentIdNotFoundException(tournamentId)); - Optional.ofNullable(tournament.getTeams().remove(teamId)).orElseThrow(() -> new TeamIdNotFoundException(tournamentId)); + Optional.ofNullable(tournament.getTeams() + .remove(teamId)) + .orElseThrow(() -> new TeamIdNotFoundException(tournamentId)); tournamentRepository.save(tournament); return teamId; }