From 113b53a3c8f87885c829565e67066c4418512c2c Mon Sep 17 00:00:00 2001 From: Jonas <jonas.fischer14@gmx.de> Date: Mon, 18 Dec 2023 15:38:03 +0100 Subject: [PATCH] 18.12.2023 - create service class and methods #24 --- .../sthbackend/service/TournamentService.java | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 sth-backend/src/main/java/hdm/mi/sthbackend/service/TournamentService.java 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 new file mode 100644 index 0000000..0d29043 --- /dev/null +++ b/sth-backend/src/main/java/hdm/mi/sthbackend/service/TournamentService.java @@ -0,0 +1,101 @@ +package hdm.mi.sthbackend.service; + +import hdm.mi.sthbackend.exeptions.PlayerIdNotFoundException; +import hdm.mi.sthbackend.exeptions.TournamentIdNotFoundException; +import hdm.mi.sthbackend.model.Player; +import hdm.mi.sthbackend.model.Team; +import hdm.mi.sthbackend.model.Tournament; +import hdm.mi.sthbackend.repository.ITournamentRepository; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +@Service +@AllArgsConstructor +public class TournamentService { + + ITournamentRepository tournamentRepository; + + public Player addPlayerToTeam(UUID tournamentId, UUID teamId, String playerName) throws Exception { + Tournament tournament = tournamentRepository.findById(tournamentId) + .orElseThrow(() -> new Exception("TournamentId " + tournamentId + " not found")); + Player newPlayer = new Player(UUID.randomUUID(), playerName); + tournament + .getTeams() + .get(teamId) + .getTeamMembers() + .add(newPlayer); + tournamentRepository.save(tournament); + return newPlayer; + } + + public Player removePlayerFromTeam(UUID tournamentId, + UUID teamId, + UUID playerId) throws TournamentIdNotFoundException, PlayerIdNotFoundException { + 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() + .get(teamId) + .getTeamMembers() + .remove(playerToRemove); + tournamentRepository.save(tournament); + return playerToRemove; + } + + public UUID updatePlayerName(UUID tournamentId, + UUID teamId, + UUID playerId, + String newPlayerName) throws Exception { + Tournament tournament = tournamentRepository.findById(tournamentId) + .orElseThrow(() -> new TournamentIdNotFoundException(tournamentId)); + + tournament.getTeams() + .get(teamId) + .getTeamMembers() + .stream() + .filter(player -> player.getPlayerId() + .equals(playerId)) + .findFirst() + .orElseThrow(() -> new PlayerIdNotFoundException(playerId)) + .setName(newPlayerName); + tournamentRepository.save(tournament); + return playerId; + } + + public Team createTeam(UUID tournamentId, String teamName) throws TournamentIdNotFoundException { + Tournament tournament = tournamentRepository.findById(tournamentId) + .orElseThrow(() -> new TournamentIdNotFoundException(tournamentId)); + + Team team = new Team(UUID.randomUUID(), teamName, new ArrayList<>() { + }); + + tournament.getTeams() + .put(team.getId(), team); + + tournamentRepository.save(tournament); + return team; + } + + public Tournament createTournament(String tournamentName) { + Tournament tournament = new Tournament(UUID.randomUUID(), tournamentName, new ArrayList<>(), new HashMap<>()); + tournamentRepository.insert(tournament); + return tournament; + } + + +} -- GitLab