From f6a415628b3a68cff59894975cc1f540b02bb1d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1n=20Dovjak?= <xdovjak@fi.muni.cz> Date: Tue, 27 Apr 2021 20:01:39 +0200 Subject: [PATCH] feat: TeamManager firePlayer --- .../facades/TeamManagerFacadeImpl.java | 14 +++++++++++--- .../fi/pa165/icehockeymanager/model/Team.java | 4 ++++ .../icehockeymanager/services/PlayerService.java | 5 +++++ .../services/PlayerServiceImpl.java | 16 ++++++++++++++++ .../icehockeymanager/services/TeamService.java | 4 +++- .../services/TeamServiceImpl.java | 12 +++++++++++- 6 files changed, 50 insertions(+), 5 deletions(-) diff --git a/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/TeamManagerFacadeImpl.java b/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/TeamManagerFacadeImpl.java index 6711648..06dd6c5 100644 --- a/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/TeamManagerFacadeImpl.java +++ b/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/TeamManagerFacadeImpl.java @@ -38,7 +38,7 @@ public class TeamManagerFacadeImpl implements TeamManagerFacade{ ); Player newPlayer = beanMappingService.mapTo(playerCreateDTO, Player.class); playerService.createPlayer(newPlayer, team); - teamService.addPlayerToTeam(newPlayer, team); + teamService.addPlayerToTeam(team, newPlayer); } @Override @@ -49,7 +49,8 @@ public class TeamManagerFacadeImpl implements TeamManagerFacade{ Player player = playerService.findPlayer(playerId).orElseThrow( () -> new UnknownPlayerException("Player not found") ); - teamService.addPlayerToTeam(player, team); + teamService.addPlayerToTeam(team, player); + playerService.addTeamToPlayer(player, team); } @Override @@ -60,6 +61,13 @@ public class TeamManagerFacadeImpl implements TeamManagerFacade{ @Override public void firePlayer(long playerId, long teamId) { - + Team team = teamService.getTeam(teamId).orElseThrow( + () -> new UnknownTeamException("Team not found") + ); + Player player = playerService.findPlayer(playerId).orElseThrow( + () -> new UnknownPlayerException("Player not found") + ); + teamService.removePlayerFromTeam(team, player); + playerService.removeTeamFromPlayer(player, team); } } diff --git a/src/main/java/cz/muni/fi/pa165/icehockeymanager/model/Team.java b/src/main/java/cz/muni/fi/pa165/icehockeymanager/model/Team.java index ab5bc00..2b62082 100644 --- a/src/main/java/cz/muni/fi/pa165/icehockeymanager/model/Team.java +++ b/src/main/java/cz/muni/fi/pa165/icehockeymanager/model/Team.java @@ -65,6 +65,10 @@ public class Team implements IDEqual, DirtyHash { return players.remove(player); } + public boolean containsPlayer(Player player) { + return players.contains(player); + } + @Override public String toString() { return "Team{" + diff --git a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/PlayerService.java b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/PlayerService.java index 035ccfb..e9f887a 100644 --- a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/PlayerService.java +++ b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/PlayerService.java @@ -23,4 +23,9 @@ public interface PlayerService { void createPlayer(Player player, Team team); Collection<Player> getFreePlayers(); + + void addTeamToPlayer(Player player, Team team); + + void removeTeamFromPlayer(Player player, Team team); + } diff --git a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/PlayerServiceImpl.java b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/PlayerServiceImpl.java index 8098836..c97e719 100644 --- a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/PlayerServiceImpl.java +++ b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/PlayerServiceImpl.java @@ -1,6 +1,7 @@ package cz.muni.fi.pa165.icehockeymanager.services; import cz.muni.fi.pa165.icehockeymanager.dao.PlayerDao; +import cz.muni.fi.pa165.icehockeymanager.exceptions.PlayerNotInTeamException; import cz.muni.fi.pa165.icehockeymanager.model.Player; import cz.muni.fi.pa165.icehockeymanager.model.Team; import org.springframework.beans.factory.annotation.Autowired; @@ -35,4 +36,19 @@ public class PlayerServiceImpl implements PlayerService { public Collection<Player> getFreePlayers() { return playerDao.getAllFreePlayers(); } + + @Override + public void addTeamToPlayer(Player player, Team team) { + player.setTeam(team); + playerDao.update(player); + } + + @Override + public void removeTeamFromPlayer(Player player, Team team) { + if(!player.getTeam().equals(team)){ + throw new PlayerNotInTeamException("Player not in this team"); + } + player.setTeam(null); + playerDao.update(player); + } } diff --git a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/TeamService.java b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/TeamService.java index 492b6ee..bb249c8 100644 --- a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/TeamService.java +++ b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/TeamService.java @@ -26,5 +26,7 @@ public interface TeamService { */ Optional<Team> getTeam(long id); - void addPlayerToTeam(Player player, Team team); + void addPlayerToTeam(Team team, Player player); + + void removePlayerFromTeam(Team team, Player player); } diff --git a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/TeamServiceImpl.java b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/TeamServiceImpl.java index 797fd6e..a8c9a5d 100644 --- a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/TeamServiceImpl.java +++ b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/TeamServiceImpl.java @@ -1,6 +1,7 @@ package cz.muni.fi.pa165.icehockeymanager.services; import cz.muni.fi.pa165.icehockeymanager.dao.TeamDao; +import cz.muni.fi.pa165.icehockeymanager.exceptions.PlayerNotInTeamException; import cz.muni.fi.pa165.icehockeymanager.model.Player; import cz.muni.fi.pa165.icehockeymanager.model.Team; import org.springframework.beans.factory.annotation.Autowired; @@ -32,8 +33,17 @@ public class TeamServiceImpl implements TeamService { } @Override - public void addPlayerToTeam(Player player, Team team){ + public void addPlayerToTeam(Team team, Player player) { team.addPlayer(player); teamDao.update(team); } + + @Override + public void removePlayerFromTeam(Team team, Player player) { + if(!team.containsPlayer(player)){ + throw new PlayerNotInTeamException("Player not in this team"); + } + team.removePlayer(player); + teamDao.update(team); + } } -- GitLab