Fix: Correct fxml imports and restore branch state #300

Merged
jona.walpert merged 4 commits from chore/122-fix-long-file-imports into main 2026-04-22 18:33:48 +02:00
16 changed files with 37 additions and 40 deletions
@@ -1,5 +1,6 @@
package ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui; package ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui;
import ch.unibas.dmi.dbis.cs108.casono.client.ClientApp;
import ch.unibas.dmi.dbis.cs108.casono.client.game.GameService; import ch.unibas.dmi.dbis.cs108.casono.client.game.GameService;
import ch.unibas.dmi.dbis.cs108.casono.client.game.PlayerId; import ch.unibas.dmi.dbis.cs108.casono.client.game.PlayerId;
import ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService; import ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService;
@@ -77,8 +78,7 @@ public class CasinoGameUI extends Application {
public void start(Stage stage) throws IOException { public void start(Stage stage) throws IOException {
if (clientService == null) { if (clientService == null) {
clientService = clientService = ClientApp.getSharedClientService();
ch.unibas.dmi.dbis.cs108.casono.client.ClientApp.getSharedClientService();
} }
if (clientService == null) { if (clientService == null) {
throw new IllegalStateException( throw new IllegalStateException(
@@ -90,8 +90,7 @@ public class CasinoGameUI extends Application {
String effectiveUsername = normalize(username); String effectiveUsername = normalize(username);
if (effectiveUsername == null) { if (effectiveUsername == null) {
effectiveUsername = effectiveUsername = normalize(ClientApp.getSharedUsername());
normalize(ch.unibas.dmi.dbis.cs108.casono.client.ClientApp.getSharedUsername());
} }
if (effectiveUsername == null) { if (effectiveUsername == null) {
@@ -105,7 +104,7 @@ public class CasinoGameUI extends Application {
+ "', injectedUsername='" + "', injectedUsername='"
+ username + username
+ "', sharedUsername='" + "', sharedUsername='"
+ ch.unibas.dmi.dbis.cs108.casono.client.ClientApp.getSharedUsername() + ClientApp.getSharedUsername()
+ "', hasClientService=" + "', hasClientService="
+ (clientService != null)); + (clientService != null));
@@ -55,9 +55,9 @@ public class CasinomainuiController {
} }
/** /**
* Initializes the UI components and sets default values. If a shared {@link * Initializes the UI components and sets default values. If a shared {@link ClientService}
* ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService} exists (created at application * exists (created at application start), the controller reuses it so the connection remains
* start), the controller reuses it so the connection remains open and already-logged-in. * open and already-logged-in.
*/ */
@FXML @FXML
public void initialize() { public void initialize() {
@@ -1,7 +1,9 @@
package ch.unibas.dmi.dbis.cs108.casono.client.ui.lobbyui; package ch.unibas.dmi.dbis.cs108.casono.client.ui.lobbyui;
import ch.unibas.dmi.dbis.cs108.casono.client.ClientApp;
import ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService; import ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService;
import ch.unibas.dmi.dbis.cs108.casono.client.network.LobbyClient; import ch.unibas.dmi.dbis.cs108.casono.client.network.LobbyClient;
import ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui.CasinoGameUI;
import ch.unibas.dmi.dbis.cs108.casono.server.network.command.parsing.RequestParameter; import ch.unibas.dmi.dbis.cs108.casono.server.network.command.parsing.RequestParameter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@@ -553,14 +555,10 @@ public class LobbyButtonGridManager {
try { try {
var cs = lobbyClient.getClientService(); var cs = lobbyClient.getClientService();
ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui.CasinoGameUI CasinoGameUI.setClientService(cs);
.setClientService(cs); CasinoGameUI.setLobbyId(lobbyId);
ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui.CasinoGameUI.setLobbyId(
lobbyId);
String username = String username = ClientApp.getSharedUsername();
ch.unibas.dmi.dbis.cs108.casono.client.ClientApp
.getSharedUsername();
if (username == null || username.isBlank()) { if (username == null || username.isBlank()) {
username = username =
"Guest-" "Guest-"
@@ -570,11 +568,9 @@ public class LobbyButtonGridManager {
.toString() .toString()
.substring(0, GUEST_ID_LENGTH); .substring(0, GUEST_ID_LENGTH);
} }
ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui.CasinoGameUI.setUsername( CasinoGameUI.setUsername(username);
username);
new ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui.CasinoGameUI() new CasinoGameUI().start(gameStage);
.start(gameStage);
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("Game UI failed: {}", e.getMessage()); LOGGER.error("Game UI failed: {}", e.getMessage());
@@ -4,6 +4,7 @@ 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.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.UserRegistry; import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry;
import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler; import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler;
import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse; import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse;
@@ -58,8 +59,7 @@ public class PlayerBetHandler extends CommandHandler<PlayerBetRequest> {
return; return;
} }
Optional<ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User> opt = Optional<User> opt = userRegistry.getBySessionId(request.getSessionId());
userRegistry.getBySessionId(request.getSessionId());
if (opt.isEmpty()) { if (opt.isEmpty()) {
responseDispatcher.dispatch( responseDispatcher.dispatch(
new ErrorResponse(request.getContext(), "NOT_LOGGED_IN", "User not logged in")); new ErrorResponse(request.getContext(), "NOT_LOGGED_IN", "User not logged in"));
@@ -4,6 +4,7 @@ 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.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.UserRegistry; import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry;
import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler; import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler;
import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse; import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse;
@@ -46,8 +47,7 @@ public class PlayerCallHandler extends CommandHandler<PlayerCallRequest> {
*/ */
@Override @Override
public void execute(PlayerCallRequest request) { public void execute(PlayerCallRequest request) {
Optional<ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User> opt = Optional<User> opt = userRegistry.getBySessionId(request.getSessionId());
userRegistry.getBySessionId(request.getSessionId());
if (opt.isEmpty()) { if (opt.isEmpty()) {
responseDispatcher.dispatch( responseDispatcher.dispatch(
new ErrorResponse(request.getContext(), "NOT_LOGGED_IN", "User not logged in")); new ErrorResponse(request.getContext(), "NOT_LOGGED_IN", "User not logged in"));
@@ -4,6 +4,7 @@ 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.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.UserRegistry; import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry;
import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler; import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler;
import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse; import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse;
@@ -46,8 +47,7 @@ public class PlayerFoldHandler extends CommandHandler<PlayerFoldRequest> {
*/ */
@Override @Override
public void execute(PlayerFoldRequest request) { public void execute(PlayerFoldRequest request) {
Optional<ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User> opt = Optional<User> opt = userRegistry.getBySessionId(request.getSessionId());
userRegistry.getBySessionId(request.getSessionId());
if (opt.isEmpty()) { if (opt.isEmpty()) {
responseDispatcher.dispatch( responseDispatcher.dispatch(
new ErrorResponse(request.getContext(), "NOT_LOGGED_IN", "User not logged in")); new ErrorResponse(request.getContext(), "NOT_LOGGED_IN", "User not logged in"));
@@ -4,6 +4,7 @@ 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.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.UserRegistry; import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry;
import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler; import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler;
import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse; import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse;
@@ -60,8 +61,7 @@ public class PlayerRaiseHandler extends CommandHandler<PlayerRaiseRequest> {
return; return;
} }
Optional<ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User> opt = Optional<User> opt = userRegistry.getBySessionId(request.getSessionId());
userRegistry.getBySessionId(request.getSessionId());
if (opt.isEmpty()) { if (opt.isEmpty()) {
responseDispatcher.dispatch( responseDispatcher.dispatch(
new ErrorResponse(request.getContext(), "NOT_LOGGED_IN", "User not logged in")); new ErrorResponse(request.getContext(), "NOT_LOGGED_IN", "User not logged in"));
@@ -1,5 +1,6 @@
package ch.unibas.dmi.dbis.cs108.casono.server.app.commands.lobby.get_lobby_list; package ch.unibas.dmi.dbis.cs108.casono.server.app.commands.lobby.get_lobby_list;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.Lobby;
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.network.command.execution.CommandHandler; import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler;
import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.dispatcher.ResponseDispatcher; import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.dispatcher.ResponseDispatcher;
@@ -21,8 +22,7 @@ public class GetLobbyListHandler extends CommandHandler<GetLobbyListRequest> {
@Override @Override
public void execute(GetLobbyListRequest request) { public void execute(GetLobbyListRequest request) {
Collection<ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.Lobby> l = Collection<Lobby> l = lobbyManager.getAllLobbies();
lobbyManager.getAllLobbies();
responseDispatcher.dispatch(new GetLobbyListResponse(request.getContext(), l)); responseDispatcher.dispatch(new GetLobbyListResponse(request.getContext(), l));
} }
} }
@@ -11,6 +11,7 @@ import ch.unibas.dmi.dbis.cs108.casono.server.domain.game.state.GameState;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.Lobby; 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.UserRegistry; import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry;
import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler; import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler;
import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse; import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse;
@@ -38,8 +39,7 @@ public class StartGameHandler extends CommandHandler<StartGameRequest> {
@Override @Override
public void execute(StartGameRequest request) { public void execute(StartGameRequest request) {
Optional<ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User> opt = Optional<User> opt = userRegistry.getBySessionId(request.getSessionId());
userRegistry.getBySessionId(request.getSessionId());
if (opt.isEmpty()) { if (opt.isEmpty()) {
// Guard: UserLoggedInCheck should normally handle this // Guard: UserLoggedInCheck should normally handle this
responseDispatcher.dispatch( responseDispatcher.dispatch(
@@ -5,6 +5,7 @@ import ch.unibas.dmi.dbis.cs108.casono.client.chat.Message;
import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.Lobby; 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.UserRegistry; import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry;
import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler; import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.CommandHandler;
import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.OkResponse; import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.OkResponse;
@@ -40,8 +41,7 @@ public class SendMessageHandler extends CommandHandler<SendMessageRequest> {
@Override @Override
public void execute(SendMessageRequest request) { public void execute(SendMessageRequest request) {
Message message = request.getMessage(); Message message = request.getMessage();
Optional<ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User> senderUser = Optional<User> senderUser = userRegistry.getBySessionId(request.getSessionId());
userRegistry.getBySessionId(request.getSessionId());
if (senderUser.isPresent()) { if (senderUser.isPresent()) {
message.sender = senderUser.get().getName(); message.sender = senderUser.get().getName();
} }
@@ -5,6 +5,7 @@
<?import javafx.geometry.Insets?> <?import javafx.geometry.Insets?>
<?import javafx.scene.image.*?> <?import javafx.scene.image.*?>
<!-- Main container: Links the UI to the CasinoGameController and loads Casinogameui.css --> <!-- Main container: Links the UI to the CasinoGameController and loads Casinogameui.css -->
<AnchorPane xmlns="http://javafx.com/javafx/21" <AnchorPane xmlns="http://javafx.com/javafx/21"
xmlns:fx="http://javafx.com/fxml/1" xmlns:fx="http://javafx.com/fxml/1"
@@ -7,6 +7,7 @@
<?import javafx.scene.layout.HBox?> <?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<VBox fx:id="highscoreRoot" <VBox fx:id="highscoreRoot"
xmlns="http://javafx.com/javafx/21" xmlns="http://javafx.com/javafx/21"
xmlns:fx="http://javafx.com/fxml/1" xmlns:fx="http://javafx.com/fxml/1"
@@ -3,7 +3,6 @@
<?import javafx.scene.control.*?> <?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?> <?import javafx.scene.layout.*?>
<?import javafx.geometry.Insets?> <?import javafx.geometry.Insets?>
<!-- movable taskbar --> <!-- movable taskbar -->
<HBox xmlns="http://javafx.com/javafx/21" <HBox xmlns="http://javafx.com/javafx/21"
xmlns:fx="http://javafx.com/fxml/1" xmlns:fx="http://javafx.com/fxml/1"
@@ -4,6 +4,7 @@
<?import javafx.scene.control.*?> <?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?> <?import javafx.scene.layout.*?>
<!-- <!--
Dieses Fenster wird später mit den Serveranfragen verknüpft, Dieses Fenster wird später mit den Serveranfragen verknüpft,
um Nachrichten von Mitspielern und Systemmeldungen in Echtzeit anzuzeigen. um Nachrichten von Mitspielern und Systemmeldungen in Echtzeit anzuzeigen.
@@ -1,6 +1,7 @@
package ch.unibas.dmi.dbis.cs108.casono.client.ui.lobbyui; package ch.unibas.dmi.dbis.cs108.casono.client.ui.lobbyui;
import ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService; import ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService;
import ch.unibas.dmi.dbis.cs108.casono.client.network.TestServer;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
import org.junit.jupiter.api.*; import org.junit.jupiter.api.*;
@@ -8,15 +9,14 @@ class LobbyButtonGridManagerTest {
LobbyButtonGridManager gridManager; LobbyButtonGridManager gridManager;
LobbyButtonTranslationManager translationManager; LobbyButtonTranslationManager translationManager;
GridPane gridPane; GridPane gridPane;
ch.unibas.dmi.dbis.cs108.casono.client.network.TestServer testServer; TestServer testServer;
@BeforeEach @BeforeEach
void setUp() throws Exception { void setUp() throws Exception {
gridPane = new GridPane(); gridPane = new GridPane();
translationManager = LobbyButtonTranslationManager.getInstance(); translationManager = LobbyButtonTranslationManager.getInstance();
translationManager.getButtonIdToLobbyId().clear(); translationManager.getButtonIdToLobbyId().clear();
// Start an in-process test server and connect a real ClientService to it. testServer = new TestServer();
testServer = new ch.unibas.dmi.dbis.cs108.casono.client.network.TestServer();
String host = "127.0.0.1"; String host = "127.0.0.1";
int port = testServer.getPort(); int port = testServer.getPort();
ClientService clientService = new ClientService(host, port); ClientService clientService = new ClientService(host, port);