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 671164801e1d893f710130b370d3ba0d077d5c9f..06dd6c54e3565b769a7bcff5cfba233dc10b0236 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 ab5bc00d52168b0e94a5ee903fd07cdc002789a4..2b6208224be44470c0ede848582b760d802586cf 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 035ccfbe6ab7b9f6b6c70f1dbbdc1bc48ef595da..e9f887a510dbe04e6048dc76212dfde0734a705a 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 809883662f5f2e733cf8993693b329ef4962dcfd..c97e71939cc803d47ea22a44ad503122228ad246 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 492b6eecf3ce1b4882672a6d65d5baa9eb8282ca..bb249c8c1a13e4de2a2d5d4389302ce43b2b6982 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 797fd6e702bd8f511b0d56680c874e0237264a05..a8c9a5d8879c7ec4c636e1586dfa1a509fdd3c91 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); + } }