From f4d5b631a7f6ce7079b711a84920dd9ef2c26629 Mon Sep 17 00:00:00 2001 From: Matthis Bauer <mb420@hdm-stuttgart.de> Date: Wed, 20 Dec 2023 15:57:30 +0100 Subject: [PATCH] 20.12.2023 - added TeamIDException, added removeTeam logic #25 #24 #22 --- .../controller/TournamentController.java | 9 ++++++++- .../exeptions/TeamIdNotFoundException.java | 9 +++++++++ .../java/hdm/mi/sthbackend/model/Match.java | 1 + .../sthbackend/service/TournamentService.java | 17 ++++++++++++----- 4 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 sth-backend/src/main/java/hdm/mi/sthbackend/exeptions/TeamIdNotFoundException.java diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/controller/TournamentController.java b/sth-backend/src/main/java/hdm/mi/sthbackend/controller/TournamentController.java index 074bd86..a6860c8 100644 --- a/sth-backend/src/main/java/hdm/mi/sthbackend/controller/TournamentController.java +++ b/sth-backend/src/main/java/hdm/mi/sthbackend/controller/TournamentController.java @@ -2,6 +2,7 @@ package hdm.mi.sthbackend.controller; import hdm.mi.sthbackend.exeptions.PlayerIdNotFoundException; +import hdm.mi.sthbackend.exeptions.TeamIdNotFoundException; import hdm.mi.sthbackend.exeptions.TournamentIdNotFoundException; import hdm.mi.sthbackend.model.Player; import hdm.mi.sthbackend.model.Team; @@ -36,8 +37,13 @@ public class TournamentController { @PostMapping("/{tournamentId}/teams") public Team createTeam(@PathVariable UUID tournamentId, @RequestBody String teamName) throws TournamentIdNotFoundException { - return service.createTeam(tournamentId, teamName); + return service.createTeamFromTournament(tournamentId, teamName); } + @DeleteMapping("/{tournamentId}/teams/{teamId}") + public UUID removeTeamFromTournament(@PathVariable UUID tournamentId, + @PathVariable UUID teamId) throws TournamentIdNotFoundException, TeamIdNotFoundException{ + return service.removeTeamFromTournament(tournamentId, teamId); + }; @PostMapping("/{tournamentId}/teams/{teamId}/addPlayer") public Player addPlayerToTeam(@PathVariable UUID tournamentId, @@ -54,6 +60,7 @@ public class TournamentController { } + /** * Tournament Endpoints */ diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/exeptions/TeamIdNotFoundException.java b/sth-backend/src/main/java/hdm/mi/sthbackend/exeptions/TeamIdNotFoundException.java new file mode 100644 index 0000000..2027fbf --- /dev/null +++ b/sth-backend/src/main/java/hdm/mi/sthbackend/exeptions/TeamIdNotFoundException.java @@ -0,0 +1,9 @@ +package hdm.mi.sthbackend.exeptions; + +import java.util.UUID; + +public class TeamIdNotFoundException extends Exception{ + public TeamIdNotFoundException(UUID teamId) { + super(String.format("TeamId %s not found", teamId.toString())); + } +} diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/model/Match.java b/sth-backend/src/main/java/hdm/mi/sthbackend/model/Match.java index f613efe..fba9a67 100644 --- a/sth-backend/src/main/java/hdm/mi/sthbackend/model/Match.java +++ b/sth-backend/src/main/java/hdm/mi/sthbackend/model/Match.java @@ -24,6 +24,7 @@ public class Match { private UUID matchId; private List<TeamMatchScore> teamScores; + // todo problem mit doppelten gespeicherten daten? Eher nur UUID nutzen für winner @Setter private Team winner; 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 f75b546..bd33d49 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 @@ -2,6 +2,7 @@ package hdm.mi.sthbackend.service; import com.mongodb.client.MongoClient; import hdm.mi.sthbackend.exeptions.PlayerIdNotFoundException; +import hdm.mi.sthbackend.exeptions.TeamIdNotFoundException; import hdm.mi.sthbackend.exeptions.TournamentIdNotFoundException; import hdm.mi.sthbackend.model.Player; import hdm.mi.sthbackend.model.Team; @@ -11,10 +12,7 @@ import hdm.mi.sthbackend.repository.MongoManager; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.UUID; +import java.util.*; @Service @AllArgsConstructor @@ -79,7 +77,7 @@ public class TournamentService { return playerId; } - public Team createTeam(UUID tournamentId, String teamName) throws TournamentIdNotFoundException { + public Team createTeamFromTournament(UUID tournamentId, String teamName) throws TournamentIdNotFoundException { Tournament tournament = tournamentRepository.findById(tournamentId) .orElseThrow(() -> new TournamentIdNotFoundException(tournamentId)); @@ -93,6 +91,15 @@ public class TournamentService { return team; } + 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)); + tournamentRepository.save(tournament); + return teamId; + } + public Tournament createTournament(String tournamentName) { MongoManager manager = new MongoManager(); MongoClient client = manager.getMongoClient(); -- GitLab