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 074bd869fa57ed69e10a13f9b6d0fdc485867c0a..a6860c8760f57214d8c601030383d6c83e431271 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 0000000000000000000000000000000000000000..2027fbfa7a5fdbba4ef41d528f345bd1a541d8f5 --- /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 f613efec076edb7d764385d7f36ea8fc890fd1a8..fba9a6793194311837c39067e8bda5c028f932e6 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 f75b5466f0cd846b44e64d2d50166b06fc1df8db..bd33d49db1155f1f64e8d9e1d804a7c37e25d387 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();