From 43f174d59381904f24c75879e6273fd4ac4074e5 Mon Sep 17 00:00:00 2001 From: Erik Moravec <xmoravec@fi.muni.cz> Date: Tue, 27 Apr 2021 21:05:49 +0200 Subject: [PATCH] feat: update game score functionality implemented along with relevant service functionality and with calculation/update of the game winner if some of the teams becomes winning with the new score --- .../facades/LeagueManagerFacade.java | 2 +- .../facades/LeagueManagerFacadeImpl.java | 16 +++++++++++++--- .../icehockeymanager/services/GameService.java | 2 ++ .../services/GameServiceImpl.java | 14 ++++++++++++++ 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacade.java b/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacade.java index f175d8d..c74c1e5 100644 --- a/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacade.java +++ b/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacade.java @@ -9,7 +9,7 @@ public interface LeagueManagerFacade { void dropGame(long gameId); - void updateGameScore(int homeTeamScore, int awayTeamScore); + void updateGameScore(long gameId, int homeTeamScore, int awayTeamScore); void setGameWinner(long gameId, long teamId); diff --git a/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacadeImpl.java b/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacadeImpl.java index 5f14502..8944023 100644 --- a/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacadeImpl.java +++ b/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacadeImpl.java @@ -3,7 +3,9 @@ package cz.muni.fi.pa165.icehockeymanager.facades; import cz.muni.fi.pa165.icehockeymanager.dto.GameCreateDTO; import cz.muni.fi.pa165.icehockeymanager.dto.TeamCreateDTO; import cz.muni.fi.pa165.icehockeymanager.exceptions.UnknownGameException; +import cz.muni.fi.pa165.icehockeymanager.exceptions.UnknownTeamException; import cz.muni.fi.pa165.icehockeymanager.model.Game; +import cz.muni.fi.pa165.icehockeymanager.model.Team; import cz.muni.fi.pa165.icehockeymanager.services.BeanMappingService; import cz.muni.fi.pa165.icehockeymanager.services.GameService; import cz.muni.fi.pa165.icehockeymanager.services.PlayerService; @@ -42,13 +44,21 @@ public class LeagueManagerFacadeImpl implements LeagueManagerFacade { } @Override - public void updateGameScore(int homeTeamScore, int awayTeamScore) { - + public void updateGameScore(long gameId, int homeTeamScore, int awayTeamScore) { + Game game = gameService.findGame(gameId).orElseThrow( + () -> new UnknownGameException("Game not found") + ); + gameService.updateGameScore(game, homeTeamScore, awayTeamScore); } @Override public void setGameWinner(long gameId, long teamId) { - + Game game = gameService.findGame(gameId).orElseThrow( + () -> new UnknownGameException("Game not found") + ); + Team team = teamService.getTeam(teamId).orElseThrow( + () -> new UnknownTeamException("Team not found") + ); } @Override diff --git a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/GameService.java b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/GameService.java index f0084dd..778986f 100644 --- a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/GameService.java +++ b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/GameService.java @@ -22,4 +22,6 @@ public interface GameService { Optional<Game> findGame(long gameId); void deleteGame(Game game); + + void updateGameScore(Game game, int homeTeamScore, int awayTeamScore); } diff --git a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/GameServiceImpl.java b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/GameServiceImpl.java index 76b56da..680bf07 100644 --- a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/GameServiceImpl.java +++ b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/GameServiceImpl.java @@ -39,4 +39,18 @@ public class GameServiceImpl implements GameService { public void deleteGame(Game game) { gameDao.delete(game); } + + @Override + public void updateGameScore(Game game, int homeTeamScore, int awayTeamScore) { + game.setHomeTeamScore(homeTeamScore); + game.setAwayTeamScore(awayTeamScore); + if (homeTeamScore > awayTeamScore) { + game.setWinner(game.getHomeTeam()); + } else if (awayTeamScore > homeTeamScore) { + game.setWinner(game.getAwayTeam()); + } else { + game.setWinner(null); + } + gameDao.update(game); + } } -- GitLab