Refactor/121 duplicate check lobby code #302

Merged
jona.walpert merged 2 commits from refactor/121-duplicate-check-lobby-code into main 2026-04-24 13:26:08 +02:00
4 changed files with 40 additions and 64 deletions
Showing only changes of commit b9e45142c2 - Show all commits
@@ -1,7 +1,10 @@
package ch.unibas.dmi.dbis.cs108.casono.server.app.commands.game.bet; 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.GameController;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.player.PlayerId; 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.LobbyId;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User; import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User;
@@ -41,6 +44,8 @@ public class PlayerBetHandler extends CommandHandler<PlayerBetRequest> {
super(responseDispatcher); super(responseDispatcher);
this.userRegistry = userRegistry; this.userRegistry = userRegistry;
this.lobbyManager = lobbyManager; this.lobbyManager = lobbyManager;
addCheck(new UserLoggedInCheck(userRegistry));
addCheck(new GameLobbyExistsCheck(userRegistry, lobbyManager));
} }
/** /**
@@ -69,22 +74,11 @@ public class PlayerBetHandler extends CommandHandler<PlayerBetRequest> {
String username = opt.get().getName(); String username = opt.get().getName();
Integer gameId = request.getGameId(); Integer gameId = request.getGameId();
var lobby = Lobby lobby;
(gameId != null)
? lobbyManager.getLobby(LobbyId.of(gameId))
: lobbyManager.getLobbyByUsername(username);
if (lobby == null) {
if (gameId != null) { if (gameId != null) {
responseDispatcher.dispatch( lobby = lobbyManager.getLobby(LobbyId.of(gameId));
new ErrorResponse(
request.getContext(), "LOBBY_NOT_FOUND", "Lobby not found"));
} else { } else {
responseDispatcher.dispatch( lobby = lobbyManager.getLobbyByUsername(username);
new ErrorResponse(
request.getContext(), "NOT_IN_LOBBY", "User not in a lobby"));
}
return;
} }
GameController game = lobby.getGameController(); GameController game = lobby.getGameController();
@@ -1,7 +1,10 @@
package ch.unibas.dmi.dbis.cs108.casono.server.app.commands.game.call; 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.GameController;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.player.PlayerId; 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.LobbyId;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User; import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User;
@@ -37,6 +40,8 @@ public class PlayerCallHandler extends CommandHandler<PlayerCallRequest> {
super(responseDispatcher); super(responseDispatcher);
this.userRegistry = userRegistry; this.userRegistry = userRegistry;
this.lobbyManager = lobbyManager; this.lobbyManager = lobbyManager;
addCheck(new UserLoggedInCheck(userRegistry));
addCheck(new GameLobbyExistsCheck(userRegistry, lobbyManager));
} }
/** /**
@@ -57,22 +62,11 @@ public class PlayerCallHandler extends CommandHandler<PlayerCallRequest> {
String username = opt.get().getName(); String username = opt.get().getName();
Integer gameId = request.getGameId(); Integer gameId = request.getGameId();
var lobby = Lobby lobby;
(gameId != null)
? lobbyManager.getLobby(LobbyId.of(gameId))
: lobbyManager.getLobbyByUsername(username);
if (lobby == null) {
if (gameId != null) { if (gameId != null) {
responseDispatcher.dispatch( lobby = lobbyManager.getLobby(LobbyId.of(gameId));
new ErrorResponse(
request.getContext(), "LOBBY_NOT_FOUND", "Lobby not found"));
} else { } else {
responseDispatcher.dispatch( lobby = lobbyManager.getLobbyByUsername(username);
new ErrorResponse(
request.getContext(), "NOT_IN_LOBBY", "User not in a lobby"));
}
return;
} }
GameController game = lobby.getGameController(); GameController game = lobby.getGameController();
@@ -1,7 +1,10 @@
package ch.unibas.dmi.dbis.cs108.casono.server.app.commands.game.fold; 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.GameController;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.player.PlayerId; 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.LobbyId;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User; import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User;
@@ -37,6 +40,8 @@ public class PlayerFoldHandler extends CommandHandler<PlayerFoldRequest> {
super(responseDispatcher); super(responseDispatcher);
this.userRegistry = userRegistry; this.userRegistry = userRegistry;
this.lobbyManager = lobbyManager; this.lobbyManager = lobbyManager;
addCheck(new UserLoggedInCheck(userRegistry));
addCheck(new GameLobbyExistsCheck(userRegistry, lobbyManager));
} }
/** /**
@@ -57,22 +62,11 @@ public class PlayerFoldHandler extends CommandHandler<PlayerFoldRequest> {
String username = opt.get().getName(); String username = opt.get().getName();
Integer gameId = request.getGameId(); Integer gameId = request.getGameId();
var lobby = Lobby lobby;
(gameId != null)
? lobbyManager.getLobby(LobbyId.of(gameId))
: lobbyManager.getLobbyByUsername(username);
if (lobby == null) {
if (gameId != null) { if (gameId != null) {
responseDispatcher.dispatch( lobby = lobbyManager.getLobby(LobbyId.of(gameId));
new ErrorResponse(
request.getContext(), "LOBBY_NOT_FOUND", "Lobby not found"));
} else { } else {
responseDispatcher.dispatch( lobby = lobbyManager.getLobbyByUsername(username);
new ErrorResponse(
request.getContext(), "NOT_IN_LOBBY", "User not in a lobby"));
}
return;
} }
GameController game = lobby.getGameController(); GameController game = lobby.getGameController();
@@ -1,7 +1,10 @@
package ch.unibas.dmi.dbis.cs108.casono.server.app.commands.game.raise; 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.GameController;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.player.PlayerId; 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.LobbyId;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager; import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User; import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User;
@@ -41,6 +44,8 @@ public class PlayerRaiseHandler extends CommandHandler<PlayerRaiseRequest> {
super(responseDispatcher); super(responseDispatcher);
this.userRegistry = userRegistry; this.userRegistry = userRegistry;
this.lobbyManager = lobbyManager; this.lobbyManager = lobbyManager;
addCheck(new UserLoggedInCheck(userRegistry));
addCheck(new GameLobbyExistsCheck(userRegistry, lobbyManager));
} }
/** /**
@@ -71,22 +76,11 @@ public class PlayerRaiseHandler extends CommandHandler<PlayerRaiseRequest> {
String username = opt.get().getName(); String username = opt.get().getName();
Integer gameId = request.getGameId(); Integer gameId = request.getGameId();
var lobby = Lobby lobby;
(gameId != null)
? lobbyManager.getLobby(LobbyId.of(gameId))
: lobbyManager.getLobbyByUsername(username);
if (lobby == null) {
if (gameId != null) { if (gameId != null) {
responseDispatcher.dispatch( lobby = lobbyManager.getLobby(LobbyId.of(gameId));
new ErrorResponse(
request.getContext(), "LOBBY_NOT_FOUND", "Lobby not found"));
} else { } else {
responseDispatcher.dispatch( lobby = lobbyManager.getLobbyByUsername(username);
new ErrorResponse(
request.getContext(), "NOT_IN_LOBBY", "User not in a lobby"));
}
return;
} }
GameController game = lobby.getGameController(); GameController game = lobby.getGameController();