From b9e45142c285c8425b39ca0b137247bb62004f57 Mon Sep 17 00:00:00 2001 From: Jona Walpert Date: Thu, 23 Apr 2026 15:17:30 +0200 Subject: [PATCH] Refactor: changed duplicate lobyb existence checks to the new preexecution check --- .../commands/game/bet/PlayerBetHandler.java | 26 +++++++------------ .../commands/game/call/PlayerCallHandler.java | 26 +++++++------------ .../commands/game/fold/PlayerFoldHandler.java | 26 +++++++------------ .../game/raise/PlayerRaiseHandler.java | 26 +++++++------------ 4 files changed, 40 insertions(+), 64 deletions(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/game/bet/PlayerBetHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/game/bet/PlayerBetHandler.java index a37ebce..11c6ee3 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/game/bet/PlayerBetHandler.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/game/bet/PlayerBetHandler.java @@ -1,7 +1,10 @@ package ch.unibas.dmi.dbis.cs108.casono.server.app.commands.game.bet; +import ch.unibas.dmi.dbis.cs108.casono.server.app.checks.GameLobbyExistsCheck; +import ch.unibas.dmi.dbis.cs108.casono.server.app.checks.UserLoggedInCheck; import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.GameController; import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.player.PlayerId; +import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.Lobby; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyId; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager; import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User; @@ -41,6 +44,8 @@ public class PlayerBetHandler extends CommandHandler { super(responseDispatcher); this.userRegistry = userRegistry; this.lobbyManager = lobbyManager; + addCheck(new UserLoggedInCheck(userRegistry)); + addCheck(new GameLobbyExistsCheck(userRegistry, lobbyManager)); } /** @@ -69,22 +74,11 @@ public class PlayerBetHandler extends CommandHandler { String username = opt.get().getName(); Integer gameId = request.getGameId(); - var lobby = - (gameId != null) - ? lobbyManager.getLobby(LobbyId.of(gameId)) - : lobbyManager.getLobbyByUsername(username); - - if (lobby == null) { - if (gameId != null) { - responseDispatcher.dispatch( - new ErrorResponse( - request.getContext(), "LOBBY_NOT_FOUND", "Lobby not found")); - } else { - responseDispatcher.dispatch( - new ErrorResponse( - request.getContext(), "NOT_IN_LOBBY", "User not in a lobby")); - } - return; + Lobby lobby; + if (gameId != null) { + lobby = lobbyManager.getLobby(LobbyId.of(gameId)); + } else { + lobby = lobbyManager.getLobbyByUsername(username); } GameController game = lobby.getGameController(); diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/game/call/PlayerCallHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/game/call/PlayerCallHandler.java index b1c3618..3dcc013 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/game/call/PlayerCallHandler.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/game/call/PlayerCallHandler.java @@ -1,7 +1,10 @@ package ch.unibas.dmi.dbis.cs108.casono.server.app.commands.game.call; +import ch.unibas.dmi.dbis.cs108.casono.server.app.checks.GameLobbyExistsCheck; +import ch.unibas.dmi.dbis.cs108.casono.server.app.checks.UserLoggedInCheck; import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.GameController; import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.player.PlayerId; +import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.Lobby; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyId; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager; import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User; @@ -37,6 +40,8 @@ public class PlayerCallHandler extends CommandHandler { super(responseDispatcher); this.userRegistry = userRegistry; this.lobbyManager = lobbyManager; + addCheck(new UserLoggedInCheck(userRegistry)); + addCheck(new GameLobbyExistsCheck(userRegistry, lobbyManager)); } /** @@ -57,22 +62,11 @@ public class PlayerCallHandler extends CommandHandler { String username = opt.get().getName(); Integer gameId = request.getGameId(); - var lobby = - (gameId != null) - ? lobbyManager.getLobby(LobbyId.of(gameId)) - : lobbyManager.getLobbyByUsername(username); - - if (lobby == null) { - if (gameId != null) { - responseDispatcher.dispatch( - new ErrorResponse( - request.getContext(), "LOBBY_NOT_FOUND", "Lobby not found")); - } else { - responseDispatcher.dispatch( - new ErrorResponse( - request.getContext(), "NOT_IN_LOBBY", "User not in a lobby")); - } - return; + Lobby lobby; + if (gameId != null) { + lobby = lobbyManager.getLobby(LobbyId.of(gameId)); + } else { + lobby = lobbyManager.getLobbyByUsername(username); } GameController game = lobby.getGameController(); diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/game/fold/PlayerFoldHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/game/fold/PlayerFoldHandler.java index 7adca85..0aafca7 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/game/fold/PlayerFoldHandler.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/game/fold/PlayerFoldHandler.java @@ -1,7 +1,10 @@ package ch.unibas.dmi.dbis.cs108.casono.server.app.commands.game.fold; +import ch.unibas.dmi.dbis.cs108.casono.server.app.checks.GameLobbyExistsCheck; +import ch.unibas.dmi.dbis.cs108.casono.server.app.checks.UserLoggedInCheck; import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.GameController; import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.player.PlayerId; +import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.Lobby; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyId; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager; import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User; @@ -37,6 +40,8 @@ public class PlayerFoldHandler extends CommandHandler { super(responseDispatcher); this.userRegistry = userRegistry; this.lobbyManager = lobbyManager; + addCheck(new UserLoggedInCheck(userRegistry)); + addCheck(new GameLobbyExistsCheck(userRegistry, lobbyManager)); } /** @@ -57,22 +62,11 @@ public class PlayerFoldHandler extends CommandHandler { String username = opt.get().getName(); Integer gameId = request.getGameId(); - var lobby = - (gameId != null) - ? lobbyManager.getLobby(LobbyId.of(gameId)) - : lobbyManager.getLobbyByUsername(username); - - if (lobby == null) { - if (gameId != null) { - responseDispatcher.dispatch( - new ErrorResponse( - request.getContext(), "LOBBY_NOT_FOUND", "Lobby not found")); - } else { - responseDispatcher.dispatch( - new ErrorResponse( - request.getContext(), "NOT_IN_LOBBY", "User not in a lobby")); - } - return; + Lobby lobby; + if (gameId != null) { + lobby = lobbyManager.getLobby(LobbyId.of(gameId)); + } else { + lobby = lobbyManager.getLobbyByUsername(username); } GameController game = lobby.getGameController(); diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/game/raise/PlayerRaiseHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/game/raise/PlayerRaiseHandler.java index c17b11c..a089603 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/game/raise/PlayerRaiseHandler.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/game/raise/PlayerRaiseHandler.java @@ -1,7 +1,10 @@ package ch.unibas.dmi.dbis.cs108.casono.server.app.commands.game.raise; +import ch.unibas.dmi.dbis.cs108.casono.server.app.checks.GameLobbyExistsCheck; +import ch.unibas.dmi.dbis.cs108.casono.server.app.checks.UserLoggedInCheck; import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.GameController; import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.player.PlayerId; +import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.Lobby; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyId; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager; import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User; @@ -41,6 +44,8 @@ public class PlayerRaiseHandler extends CommandHandler { super(responseDispatcher); this.userRegistry = userRegistry; this.lobbyManager = lobbyManager; + addCheck(new UserLoggedInCheck(userRegistry)); + addCheck(new GameLobbyExistsCheck(userRegistry, lobbyManager)); } /** @@ -71,22 +76,11 @@ public class PlayerRaiseHandler extends CommandHandler { String username = opt.get().getName(); Integer gameId = request.getGameId(); - var lobby = - (gameId != null) - ? lobbyManager.getLobby(LobbyId.of(gameId)) - : lobbyManager.getLobbyByUsername(username); - - if (lobby == null) { - if (gameId != null) { - responseDispatcher.dispatch( - new ErrorResponse( - request.getContext(), "LOBBY_NOT_FOUND", "Lobby not found")); - } else { - responseDispatcher.dispatch( - new ErrorResponse( - request.getContext(), "NOT_IN_LOBBY", "User not in a lobby")); - } - return; + Lobby lobby; + if (gameId != null) { + lobby = lobbyManager.getLobby(LobbyId.of(gameId)); + } else { + lobby = lobbyManager.getLobbyByUsername(username); } GameController game = lobby.getGameController();