diff --git a/client/pom.xml b/client/pom.xml index 509f836..3bd793a 100644 --- a/client/pom.xml +++ b/client/pom.xml @@ -118,18 +118,6 @@ compile - - org.slf4j - jul-to-slf4j - 2.0.17 - - - - ch.qos.logback - logback-classic - 1.5.20 - - diff --git a/client/src/main/java/client/Main.java b/client/src/main/java/client/Main.java index 0c22fda..a0bd716 100644 --- a/client/src/main/java/client/Main.java +++ b/client/src/main/java/client/Main.java @@ -15,17 +15,8 @@ */ package client; -import org.slf4j.bridge.SLF4JBridgeHandler; - public class Main { - static { - // Choose SLF4J Logger (Spring Boot) for JavaFX. - SLF4JBridgeHandler.removeHandlersForRootLogger(); - SLF4JBridgeHandler.install(); - } public static void main(String[] args){ - - UI.launch(UI.class, args); } } \ No newline at end of file diff --git a/client/src/main/java/client/scenes/FoodpalApplicationCtrl.java b/client/src/main/java/client/scenes/FoodpalApplicationCtrl.java index cdbd565..2453ccd 100644 --- a/client/src/main/java/client/scenes/FoodpalApplicationCtrl.java +++ b/client/src/main/java/client/scenes/FoodpalApplicationCtrl.java @@ -6,7 +6,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Optional; -import java.util.logging.Logger; import java.util.stream.Collectors; import client.exception.InvalidModificationException; @@ -46,7 +45,7 @@ public class FoodpalApplicationCtrl implements LocaleAware { private final WebSocketUtils webSocketUtils; private final LocaleManager localeManager; private final WebSocketDataService dataService; - private final Logger logger = Logger.getLogger(FoodpalApplicationCtrl.class.getName()); + @FXML private RecipeDetailCtrl recipeDetailController; @@ -94,31 +93,24 @@ public class FoodpalApplicationCtrl implements LocaleAware { this.configService = configService; this.dataService = recipeDataService; setupDataService(); - logger.info("WebSocket processor initialized."); initializeWebSocket(); - logger.info("WebSocket connection handler initialized."); - logger.info("Main application controller initialized."); } private void setupDataService() { dataService.setMessageParser((msg) -> switch (msg) { case CreateRecipeMessage _ -> (m) -> { CreateRecipeMessage crm = (CreateRecipeMessage) m; - logger.info("Server informs us of creation of recipe: " + crm.getRecipe()); return handleCreateRecipeMessage(crm); }; case UpdateRecipeMessage _ -> (m) -> { UpdateRecipeMessage urm = (UpdateRecipeMessage) m; - logger.info("Server informs us of update for recipe: " + urm.getRecipe()); return handleUpdateRecipeMessage(urm); }; case DeleteRecipeMessage _ -> (m) -> { DeleteRecipeMessage drm = (DeleteRecipeMessage) m; - logger.info("Server informs us of the deletion of recipe with ID: " + drm.getRecipeId()); return handleDeleteRecipeMessage(drm); }; case FavouriteRecipeMessage _ -> (m) -> { FavouriteRecipeMessage frm = (FavouriteRecipeMessage) m; - logger.info("Server informs us of a favourite recipe being deleted: " + frm.getRecipeId()); return handleFavouriteRecipeMessage(frm); }; default -> throw new IllegalStateException("Unexpected value: " + msg); @@ -193,7 +185,7 @@ public class FoodpalApplicationCtrl implements LocaleAware { this.recipeList.getItems().setAll(recipes); - logger.info("Search returned " + recipes.size() + " recipes."); + System.out.println("Search returned " + recipes.size() + " recipes."); // Restore selection, if possible if (newIndex != -1) { @@ -271,9 +263,7 @@ public class FoodpalApplicationCtrl implements LocaleAware { recipes = server.getRecipesFiltered(searchBarController.getFilter()); } catch (IOException | InterruptedException e) { recipes = Collections.emptyList(); - String msg = "Failed to load recipes: " + e.getMessage(); - logger.severe(msg); - printError(msg); + System.err.println("Failed to load recipes: " + e.getMessage()); } allRecipes = new ArrayList<>(recipes); @@ -305,10 +295,7 @@ public class FoodpalApplicationCtrl implements LocaleAware { dataService.add(newRecipe.getId(), recipe -> { this.recipeList.getSelectionModel().select(recipe); openSelectedRecipe(); - Platform.runLater(() -> { - logger.info("Focused recipe title edit box."); - this.recipeDetailController.editRecipeTitle(); - }); + Platform.runLater(() -> this.recipeDetailController.editRecipeTitle()); }); recipeList.refresh(); } catch (IOException | InterruptedException e) { diff --git a/client/src/main/java/client/scenes/LangSelectMenuCtrl.java b/client/src/main/java/client/scenes/LangSelectMenuCtrl.java index 41df1bd..1df3e54 100644 --- a/client/src/main/java/client/scenes/LangSelectMenuCtrl.java +++ b/client/src/main/java/client/scenes/LangSelectMenuCtrl.java @@ -15,7 +15,6 @@ import javafx.util.StringConverter; import java.io.InputStream; import java.util.Locale; -import java.util.logging.Logger; /** * The language selection menu controller. @@ -23,7 +22,6 @@ import java.util.logging.Logger; * getLocaleString(String) function is available. */ public class LangSelectMenuCtrl implements LocaleAware { - private final Logger logger = Logger.getLogger(LangSelectMenuCtrl.class.getName()); public ComboBox langSelectMenu; private final LocaleManager manager; @@ -39,7 +37,6 @@ public class LangSelectMenuCtrl implements LocaleAware { @FXML private void switchLocale(ActionEvent event) { String lang = langSelectMenu.getSelectionModel().getSelectedItem(); - logger.info("Switching locale to " + lang); manager.setLocale(Locale.of(lang)); } diff --git a/client/src/main/java/client/scenes/recipe/RecipeDetailCtrl.java b/client/src/main/java/client/scenes/recipe/RecipeDetailCtrl.java index 716a128..0675407 100644 --- a/client/src/main/java/client/scenes/recipe/RecipeDetailCtrl.java +++ b/client/src/main/java/client/scenes/recipe/RecipeDetailCtrl.java @@ -207,7 +207,7 @@ public class RecipeDetailCtrl implements LocaleAware { try { server.updateRecipe(this.recipe); - // this.refresh(); + this.refresh(); } catch (IOException | InterruptedException e) { // throw a nice blanket UpdateException throw new UpdateException("Error occurred when updating recipe name!"); diff --git a/client/src/main/java/client/utils/ConfigService.java b/client/src/main/java/client/utils/ConfigService.java index 54c7036..d1d70c6 100644 --- a/client/src/main/java/client/utils/ConfigService.java +++ b/client/src/main/java/client/utils/ConfigService.java @@ -7,12 +7,10 @@ import com.fasterxml.jackson.databind.ObjectMapper; import java.nio.file.Path; import java.io.File; import java.io.IOException; -import java.util.logging.Logger; public class ConfigService { private final Path configPath; private final ObjectMapper mapper = new ObjectMapper(); - private final Logger logger = Logger.getLogger(ConfigService.class.getName()); private Config config; @@ -72,10 +70,9 @@ public class ConfigService { try { File file = configPath.toFile(); // file is the config file here mapper.writeValue(file, config); // here we edit the value of the file using config - logger.info("Config saved to " + file.getAbsolutePath()); + } - catch (Exception e) { - logger.severe("Something bad happened while saving the config: " + e.getMessage()); + catch (Exception e){ throw new RuntimeException(e); } } diff --git a/client/src/main/java/client/utils/ServerUtils.java b/client/src/main/java/client/utils/ServerUtils.java index 9c89508..cb91e76 100644 --- a/client/src/main/java/client/utils/ServerUtils.java +++ b/client/src/main/java/client/utils/ServerUtils.java @@ -18,14 +18,12 @@ import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.util.ArrayList; import java.util.List; -import java.util.logging.Logger; import static jakarta.ws.rs.core.MediaType.APPLICATION_JSON; public class ServerUtils { private static final String SERVER = "http://localhost:8080/api"; - private Logger logger = Logger.getLogger(ServerUtils.class.getName()); private final HttpClient client; private final ObjectMapper objectMapper = new ObjectMapper(); private final int statusOK = 200; @@ -50,10 +48,9 @@ public class ServerUtils { throw new IOException("No recipe to get. Server responds with " + response.body()); } - List list = objectMapper.readValue(response.body(), new TypeReference>() { - }); - logger.info("Received response from server: " + list); - return list; // JSON string-> List (Jackson) + + return objectMapper.readValue(response.body(), new TypeReference>() { + });// JSON string-> List (Jackson) } public List getRecipesFiltered(String filter) throws IOException, InterruptedException { diff --git a/client/src/main/java/client/utils/WebSocketDataService.java b/client/src/main/java/client/utils/WebSocketDataService.java index 52d0b1f..659d91b 100644 --- a/client/src/main/java/client/utils/WebSocketDataService.java +++ b/client/src/main/java/client/utils/WebSocketDataService.java @@ -10,10 +10,8 @@ import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; import java.util.function.Function; -import java.util.logging.Logger; public class WebSocketDataService { - private Logger logger = Logger.getLogger(WebSocketDataService.class.getName()); public WebSocketDataService() { } @@ -51,11 +49,7 @@ public class WebSocketDataService { */ public boolean add(ID id, Consumer onComplete) { CompletableFuture future = new CompletableFuture<>(); - future.thenAccept(onComplete.andThen(_ -> { - logger.info("Item " + id + " resolved. Removing from pending register."); - pendingRegister.remove(id); - })); - logger.info("Item " + id + " pending propagation. Adding to pending register."); + future.thenAccept(onComplete.andThen(_ -> pendingRegister.remove(id))); return pendingRegister.putIfAbsent(id, future) == null; } public boolean add(ID id) { diff --git a/client/src/main/java/client/utils/WebSocketUtils.java b/client/src/main/java/client/utils/WebSocketUtils.java index bb070be..ed16b37 100644 --- a/client/src/main/java/client/utils/WebSocketUtils.java +++ b/client/src/main/java/client/utils/WebSocketUtils.java @@ -14,13 +14,11 @@ import java.lang.reflect.Type; import java.util.function.Consumer; import javax.annotation.Nullable; import java.util.concurrent.CompletableFuture; -import java.util.logging.Logger; public class WebSocketUtils { private static final String WS_URL = "ws://localhost:8080/updates"; private WebSocketStompClient stompClient; private StompSession stompSession; - private Logger logger = Logger.getLogger(WebSocketUtils.class.getName()); /** * Connect to the websocket server. @@ -38,19 +36,21 @@ public class WebSocketUtils { @Override public void afterConnected(StompSession session, StompHeaders connectedHeaders) { stompSession = session; - logger.info("WebSocket connected with session ID: " + session.getSessionId()); + System.out.println("WebSocket connected: " + session.getSessionId()); } @Override public void handleException(StompSession session, @Nullable StompCommand command, StompHeaders headers, byte[] payload, Throwable exception) { - logger.severe("STOMP error: " + exception.getMessage()); + System.err.println("STOMP error: " + exception.getMessage()); + exception.printStackTrace(); } @Override public void handleTransportError(StompSession session, Throwable exception) { - logger.severe("STOMP transport error: " + exception.getMessage()); + System.err.println("STOMP transport error: " + exception.getMessage()); + exception.printStackTrace(); } } ); diff --git a/commons/src/main/java/commons/Ingredient.java b/commons/src/main/java/commons/Ingredient.java index 5704b74..dd93aab 100644 --- a/commons/src/main/java/commons/Ingredient.java +++ b/commons/src/main/java/commons/Ingredient.java @@ -103,14 +103,6 @@ public class Ingredient { public int hashCode() { return Objects.hash(id, name, proteinPer100g, fatPer100g, carbsPer100g); } - - @Override - public String toString() { - return "Ingredient " + id + " - " + name + - "= P:" + proteinPer100g + - "/F:" + fatPer100g + - "/C:" + carbsPer100g + " per 100g"; - } } diff --git a/commons/src/main/java/commons/Recipe.java b/commons/src/main/java/commons/Recipe.java index 5c9b19e..1ae1f83 100644 --- a/commons/src/main/java/commons/Recipe.java +++ b/commons/src/main/java/commons/Recipe.java @@ -157,10 +157,12 @@ public class Recipe { @Override public String toString() { - return "Recipe " + id + - " - " + name + - ": " + ingredients.size() + " ingredients / " + - preparationSteps.size() + " steps"; + return "Recipe{" + + "id=" + id + + ", name='" + name + '\'' + + ", ingredientsCount=" + ingredients.size() + + ", preparationStepsCount=" + preparationSteps.size() + + "}"; } @SuppressWarnings("unused") diff --git a/server/src/main/java/server/api/RecipeController.java b/server/src/main/java/server/api/RecipeController.java index e2143e7..37a2a78 100644 --- a/server/src/main/java/server/api/RecipeController.java +++ b/server/src/main/java/server/api/RecipeController.java @@ -24,19 +24,16 @@ import server.service.RecipeService; import java.util.List; import java.util.Optional; -import java.util.logging.Logger; @RestController @RequestMapping("/api") public class RecipeController { - private static final Logger logger = Logger.getLogger(RecipeController.class.getName()); private final SimpMessagingTemplate messagingTemplate; private final RecipeService recipeService; public RecipeController(RecipeService recipeService, SimpMessagingTemplate messagingTemplate) { this.recipeService = recipeService; this.messagingTemplate = messagingTemplate; - logger.info("Initialized controller."); } /** @@ -49,7 +46,6 @@ public class RecipeController { */ @GetMapping("/recipe/{id}") public ResponseEntity getRecipe(@PathVariable Long id) { - logger.info("GET /recipe/" + id + " called."); return recipeService.findById(id) .map(ResponseEntity::ok) .orElseGet(() -> ResponseEntity.notFound().build()); @@ -64,7 +60,6 @@ public class RecipeController { */ @GetMapping("/recipes") public ResponseEntity> getRecipes(@RequestParam Optional limit) { - logger.info("GET /recipes called."); return ResponseEntity.ok( // Choose the right overload. One has a limit, other doesn't. limit.map(recipeService::findAll).orElseGet(recipeService::findAll) @@ -81,7 +76,6 @@ public class RecipeController { */ @PostMapping("/recipe/{id}") public ResponseEntity updateRecipe(@PathVariable Long id, @RequestBody Recipe recipe) { - logger.info("POST /recipe/" + id + " called."); return recipeService.update(id, recipe) .map(saved -> { messagingTemplate.convertAndSend(Topics.RECIPES, new UpdateRecipeMessage(saved)); // Send to WS. @@ -102,7 +96,6 @@ public class RecipeController { */ @PutMapping("/recipe/new") public ResponseEntity createRecipe(@RequestBody Recipe recipe) { - logger.info("POST /recipe/new called."); return recipeService.create(recipe) .map(saved -> { messagingTemplate.convertAndSend(Topics.RECIPES, new CreateRecipeMessage(saved)); // Send to WS. @@ -121,7 +114,6 @@ public class RecipeController { */ @DeleteMapping("/recipe/{id}") public ResponseEntity deleteRecipe(@PathVariable Long id) { - logger.info("DELETE /recipe/" + id + " called."); if (!recipeService.delete(id)) { return ResponseEntity.badRequest().build(); }