From d179b264e641043776720ddd63e4a938531f0ac1 Mon Sep 17 00:00:00 2001 From: Rithvik Sriram Date: Fri, 28 Nov 2025 16:33:02 +0100 Subject: [PATCH 1/6] changes to skip tests and fixed checkstyle --- .../src/main/java/client/utils/Navigation.java | 0 .../java/client/scenes/ConfigServiceTest.java | 15 ++++++++++++--- .../src/test/java/client/scenes/ConfigTest.java | 17 +++++++++++++++-- 3 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 client/src/main/java/client/utils/Navigation.java diff --git a/client/src/main/java/client/utils/Navigation.java b/client/src/main/java/client/utils/Navigation.java new file mode 100644 index 0000000..e69de29 diff --git a/client/src/test/java/client/scenes/ConfigServiceTest.java b/client/src/test/java/client/scenes/ConfigServiceTest.java index d27f7c7..63c51a9 100644 --- a/client/src/test/java/client/scenes/ConfigServiceTest.java +++ b/client/src/test/java/client/scenes/ConfigServiceTest.java @@ -2,10 +2,13 @@ package client.scenes; import client.utils.Config; import client.utils.ConfigService; +import client.utils.ServerUtils; +import org.junit.jupiter.api.Assumptions; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import java.io.File; + import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -15,12 +18,18 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.*; public class ConfigServiceTest { + static ServerUtils dv = new ServerUtils(); + @BeforeEach + public void setup(){ + Assumptions.assumeTrue(dv.isServerAvailable(), "Server not available"); + } + /* Tests if the config file loads properly with a prewritten json file */ @Test - public void ConfigServiceFileLoadTest(@TempDir Path tempDir) throws IOException { + public void configServiceFileLoadTest(@TempDir Path tempDir) throws IOException { Path configPath = tempDir.resolve("config.json"); String json = """ @@ -56,7 +65,7 @@ public class ConfigServiceTest { Tests if the save method saves changes to the config file. */ @Test - public void ConfigSaveTest(@TempDir Path tempDir) throws IOException { + public void configSaveTest(@TempDir Path tempDir) throws IOException { Path configPath = tempDir.resolve("config.json"); ConfigService configService = new ConfigService(configPath); diff --git a/client/src/test/java/client/scenes/ConfigTest.java b/client/src/test/java/client/scenes/ConfigTest.java index a05f95d..34e27b5 100644 --- a/client/src/test/java/client/scenes/ConfigTest.java +++ b/client/src/test/java/client/scenes/ConfigTest.java @@ -1,6 +1,9 @@ package client.scenes; import client.utils.Config; +import client.utils.ServerUtils; +import org.junit.jupiter.api.Assumptions; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.util.ArrayList; @@ -8,9 +11,19 @@ import java.util.ArrayList; import static org.junit.jupiter.api.Assertions.*; public class ConfigTest { + static ServerUtils dv = new ServerUtils(); + + + + @BeforeEach + public void setup(){ + Assumptions.assumeTrue(dv.isServerAvailable(), "Server not available"); + } + @Test - public void ConfigDefaultValueTest(){ + public void configDefaultValueTest(){ + Config config = new Config(); assertEquals("en", config.getLanguage()); assertEquals("http://localhost:8080", config.getServerUrl()); @@ -19,7 +32,7 @@ public class ConfigTest { } @Test - public void ConfigGetterTest(){ + public void configGetterTest(){ Config config = new Config(); config.setLanguage("nl"); config.setServerUrl("http://localhost:8081"); From 244ec5ee10d190778106df770523288d2af8b79e Mon Sep 17 00:00:00 2001 From: Rithvik Sriram Date: Thu, 4 Dec 2025 17:07:48 +0100 Subject: [PATCH 2/6] Fixed all changes from comments from merge --- client/src/main/java/client/utils/Navigation.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 client/src/main/java/client/utils/Navigation.java diff --git a/client/src/main/java/client/utils/Navigation.java b/client/src/main/java/client/utils/Navigation.java deleted file mode 100644 index e69de29..0000000 From 26483e6d13b388fcc66882425293ac5c1be19572 Mon Sep 17 00:00:00 2001 From: Rithvik Sriram Date: Thu, 4 Dec 2025 17:28:02 +0100 Subject: [PATCH 3/6] Added all suggested changes from the comments by reviewers --- client/src/main/java/client/utils/Config.java | 11 ++++----- .../main/java/client/utils/ConfigService.java | 23 ++++++++----------- .../java/client/scenes/ConfigServiceTest.java | 6 ++--- .../test/java/client/scenes/ConfigTest.java | 7 ++++-- 4 files changed, 22 insertions(+), 25 deletions(-) diff --git a/client/src/main/java/client/utils/Config.java b/client/src/main/java/client/utils/Config.java index 1d879a0..c94dd4c 100644 --- a/client/src/main/java/client/utils/Config.java +++ b/client/src/main/java/client/utils/Config.java @@ -5,14 +5,11 @@ import java.util.List; public class Config { - /* - Sets parameters for what the config file needs with a config - Object that will be used in the ConfigService object - */ + private String language = "en"; private String serverUrl = "http://localhost:8080"; - private List favourites = new ArrayList<>(); + private List favourites = new ArrayList<>(); private List shoppingList = new ArrayList<>(); public Config(){} @@ -25,7 +22,7 @@ public class Config { return shoppingList; } - public List getFavourites() { + public List getFavourites() { return favourites; } @@ -41,7 +38,7 @@ public class Config { this.serverUrl = serverUrl; } - public void setFavourites(List favourites) { + public void setFavourites(List favourites) { this.favourites = favourites; } diff --git a/client/src/main/java/client/utils/ConfigService.java b/client/src/main/java/client/utils/ConfigService.java index 3abe0a5..0215d74 100644 --- a/client/src/main/java/client/utils/ConfigService.java +++ b/client/src/main/java/client/utils/ConfigService.java @@ -31,21 +31,18 @@ public class ConfigService { */ private void load(){ File file = configPath.toFile(); //reads the config file as file - if(file.exists()){ - try{ - config = mapper.readValue(file, Config.class); //uses Jackson to map the file to the config attribute + if (!file.exists()) { //if file doesn't exist then it creates a config object + config = new Config(); + return; + } - } catch (StreamReadException e) { - throw new RuntimeException(e); - } catch (DatabindException e) { - throw new RuntimeException(e); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - else{ - config = new Config(); // if file doesn't exist, it creates one + try{ + config = mapper.readValue(file, Config.class); //uses Jackson to map the file to the config attribute + + } catch (IOException e) { + throw new RuntimeException(e); } + } public Path getConfigPath() { diff --git a/client/src/test/java/client/scenes/ConfigServiceTest.java b/client/src/test/java/client/scenes/ConfigServiceTest.java index 63c51a9..31fa0a5 100644 --- a/client/src/test/java/client/scenes/ConfigServiceTest.java +++ b/client/src/test/java/client/scenes/ConfigServiceTest.java @@ -48,9 +48,9 @@ public class ConfigServiceTest { assertEquals("de", config.getLanguage()); assertEquals("http://exmple12.com", config.getServerUrl()); - List x = new ArrayList<>(); - x.add("banana bread"); - x.add("pineapple pie"); + List x = new ArrayList<>(); + x.add(23412L); + x.add(25412L); List y = new ArrayList<>(); y.add("milk"); diff --git a/client/src/test/java/client/scenes/ConfigTest.java b/client/src/test/java/client/scenes/ConfigTest.java index 34e27b5..d715839 100644 --- a/client/src/test/java/client/scenes/ConfigTest.java +++ b/client/src/test/java/client/scenes/ConfigTest.java @@ -39,8 +39,11 @@ public class ConfigTest { ArrayList x = new ArrayList<>(); x.add("Lava Cake"); x.add("Brownie"); - config.setFavourites(x); - assertEquals(config.getFavourites(), x); + ArrayList y = new ArrayList<>(); + y.add(1234L); + y.add(1235L); + config.setFavourites(y); + assertEquals(config.getFavourites(), y); config.setShoppingList(x); assertEquals(config.getShoppingList(), x); } From 1ad959b2381153f615a1d762fa54b23365a15378 Mon Sep 17 00:00:00 2001 From: Rithvik Sriram Date: Thu, 4 Dec 2025 18:09:30 +0100 Subject: [PATCH 4/6] fixed pipeline issues --- .../src/main/java/client/utils/ConfigService.java | 3 +-- .../test/java/client/scenes/ConfigServiceTest.java | 12 +++++++++--- client/src/test/java/client/scenes/ConfigTest.java | 13 ++++++------- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/client/src/main/java/client/utils/ConfigService.java b/client/src/main/java/client/utils/ConfigService.java index 0215d74..d1d70c6 100644 --- a/client/src/main/java/client/utils/ConfigService.java +++ b/client/src/main/java/client/utils/ConfigService.java @@ -1,8 +1,7 @@ package client.utils; -import com.fasterxml.jackson.core.exc.StreamReadException; -import com.fasterxml.jackson.databind.DatabindException; + import com.fasterxml.jackson.databind.ObjectMapper; import java.nio.file.Path; diff --git a/client/src/test/java/client/scenes/ConfigServiceTest.java b/client/src/test/java/client/scenes/ConfigServiceTest.java index 31fa0a5..8af3d78 100644 --- a/client/src/test/java/client/scenes/ConfigServiceTest.java +++ b/client/src/test/java/client/scenes/ConfigServiceTest.java @@ -19,6 +19,11 @@ import static org.junit.jupiter.api.Assertions.*; public class ConfigServiceTest { static ServerUtils dv = new ServerUtils(); + + + private static final long TEST_ID_A = 23412L; + private static final long TEST_ID_B = 25412L; + @BeforeEach public void setup(){ Assumptions.assumeTrue(dv.isServerAvailable(), "Server not available"); @@ -49,8 +54,9 @@ public class ConfigServiceTest { assertEquals("http://exmple12.com", config.getServerUrl()); List x = new ArrayList<>(); - x.add(23412L); - x.add(25412L); + + x.add(TEST_ID_A); + x.add(TEST_ID_B); List y = new ArrayList<>(); y.add("milk"); @@ -87,4 +93,4 @@ public class ConfigServiceTest { -} +} \ No newline at end of file diff --git a/client/src/test/java/client/scenes/ConfigTest.java b/client/src/test/java/client/scenes/ConfigTest.java index d715839..9c82d34 100644 --- a/client/src/test/java/client/scenes/ConfigTest.java +++ b/client/src/test/java/client/scenes/ConfigTest.java @@ -13,10 +13,12 @@ import static org.junit.jupiter.api.Assertions.*; public class ConfigTest { static ServerUtils dv = new ServerUtils(); + private static final long FAV_LIST_ID_1 = 1234L; + private static final long FAV_LIST_ID_2 = 1235L; @BeforeEach - public void setup(){ + public void setup(){ Assumptions.assumeTrue(dv.isServerAvailable(), "Server not available"); } @@ -40,14 +42,11 @@ public class ConfigTest { x.add("Lava Cake"); x.add("Brownie"); ArrayList y = new ArrayList<>(); - y.add(1234L); - y.add(1235L); + y.add(FAV_LIST_ID_1); + y.add(FAV_LIST_ID_2); config.setFavourites(y); assertEquals(config.getFavourites(), y); config.setShoppingList(x); assertEquals(config.getShoppingList(), x); } - - - -} +} \ No newline at end of file From 69ae19711b3f05b59bea7e5c093c2b0b4e4acf90 Mon Sep 17 00:00:00 2001 From: Rithvik Sriram Date: Thu, 4 Dec 2025 19:12:31 +0100 Subject: [PATCH 5/6] Code handling navigation done by a navigation class with one method --- .../src/main/java/client/utils/Navigation.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/client/src/main/java/client/utils/Navigation.java b/client/src/main/java/client/utils/Navigation.java index 6d76ad7..712b5c0 100644 --- a/client/src/main/java/client/utils/Navigation.java +++ b/client/src/main/java/client/utils/Navigation.java @@ -9,15 +9,25 @@ public class Navigation { private final MyFXML myFXML; private Pane screen; + /** + * Constructs a Navigation Object that uses a fxml object and Pane that will allow to switch UI screens + * @param x + * @param y + */ public Navigation(MyFXML x, Pane y){ this.myFXML = x; this.screen = y; } + /** + * The show function takes in an FxmlPath and changes the current pane to the value given by the path + * using the load function of the myFXML object + * @param fxmlpath + */ public void show(String fxmlpath){ - var result = myFXML.load(Object.class, fxmlpath); - Parent UIRoot = result.getValue(); - screen.getChildren().setAll(UIRoot); + var result = myFXML.load(Object.class, fxmlpath); //stores the result of the load method in result + Parent uiRoot = result.getValue(); + screen.getChildren().setAll(uiRoot); } From 4414328fe09b8998e70d9b4081780087d9475da7 Mon Sep 17 00:00:00 2001 From: Rithvik Sriram Date: Fri, 5 Dec 2025 14:12:05 +0100 Subject: [PATCH 6/6] changes from the reviewers implemented, some more error handling implemented with the load function of the show method --- .../main/java/client/utils/Navigation.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/client/src/main/java/client/utils/Navigation.java b/client/src/main/java/client/utils/Navigation.java index 712b5c0..50b4b89 100644 --- a/client/src/main/java/client/utils/Navigation.java +++ b/client/src/main/java/client/utils/Navigation.java @@ -11,8 +11,8 @@ public class Navigation { /** * Constructs a Navigation Object that uses a fxml object and Pane that will allow to switch UI screens - * @param x - * @param y + * @param x - a MyFXML Object + * @param y - a Pane Object */ public Navigation(MyFXML x, Pane y){ this.myFXML = x; @@ -22,14 +22,19 @@ public class Navigation { /** * The show function takes in an FxmlPath and changes the current pane to the value given by the path * using the load function of the myFXML object - * @param fxmlpath + * @param fxmlpath - FXML path provided to show the next pane */ public void show(String fxmlpath){ - var result = myFXML.load(Object.class, fxmlpath); //stores the result of the load method in result - Parent uiRoot = result.getValue(); - screen.getChildren().setAll(uiRoot); - + try{ + var result = myFXML.load(Object.class, fxmlpath); //stores the result of the load method in result + Parent uiRoot = result.getValue(); + screen.getChildren().setAll(uiRoot); + } + catch(Exception e) { //catches any failures thrown by the load method + System.err.println("Failed to load FXML file: " + fxmlpath); + throw new IllegalArgumentException("Cannot load FXML file: " + fxmlpath, e); + } }