From 4462f911d7b291369e6ae71a0de7a543bdc2b2ef Mon Sep 17 00:00:00 2001 From: haldanek Date: Mon, 28 Oct 2024 01:58:23 +0000 Subject: [PATCH 1/2] feat: adds Kimberlee's Exception and Error Handling first Draft --- .../lesson14/ecommerce/EcommerceSystem.java | 39 ++++++++++++++++--- 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/EcommerceSystem.java b/lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/EcommerceSystem.java index 77cf26937..d91ebe01a 100644 --- a/lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/EcommerceSystem.java +++ b/lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/EcommerceSystem.java @@ -17,24 +17,51 @@ public void addProduct(String productId, String name) { products.put(productId, new Product(productId, name)); } - public String placeOrder(String productId, int quantity) { - Product product = products.get(productId); + public String placeOrder(String productId, int quantity) throws ProductNotFoundException, InvalidOrderQuantityException { + Product product = products.get(productId); { String orderId = UUID.randomUUID().toString(); orders.put(orderId, new Order(orderId, product, quantity)); return orderId; + + if (! products.containsKey(productId)); + throw new ProductNotFoundException("Product with ID " + productId + "not found"); } + if (quantity < 1); { + throw new InvalidOrderQuantityException("Quantity must be at least 1"); +} + +} - public void cancelOrder(String orderId) { - orders.remove(orderId); + public void cancelOrder(String orderId) throws OrderNotFoundException { + orders.remove(orderId); { + + Order order = orders.get(orderId); + if (order == null) { + throw new OrderNotFoundException("Order with ID " + orderId + "not found"); + } + if (order.getStatus().equals("Canceled")) { + throw new OrderNotFoundException("Order has already been canceled"); + } + if (order.getStatus().equals("Processed")) { + throw new OrderNotFoundException("Order has already been processed"); + } + } } - public String checkOrderStatus(String orderId) { - Order order = orders.get(orderId); + public String checkOrderStatus(String orderId) throws OrderNotFoundException { + Order order = orders.get(orderId); return "Order ID: " + orderId + ", Product: " + order.getProduct().getName() + ", Quantity: " + order.getQuantity(); + + if (orders.get(orderId) == null) { + throw new OrderNotFoundException("Order with ID " + orderId + "not found"); } + if (orders.remove(orderId)) { + throw new OrderNotFoundException("Order with ID " + orderId + "not found"); + } +} } From 281f9d707567f845547fc6d970aaafa7636128a1 Mon Sep 17 00:00:00 2001 From: haldanek Date: Mon, 28 Oct 2024 14:31:25 +0000 Subject: [PATCH 2/2] chore: added custom exceptions --- .../lesson14/ecommerce/EcommerceSystem.java | 43 ++++++------------- .../ecommerce/OrderNotFoundException.java | 6 ++- ...oductNotFoundException.java => Produ.java} | 7 ++- 3 files changed, 23 insertions(+), 33 deletions(-) rename lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/{ProductNotFoundException.java => Produ.java} (65%) diff --git a/lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/EcommerceSystem.java b/lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/EcommerceSystem.java index d91ebe01a..fef04d64a 100644 --- a/lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/EcommerceSystem.java +++ b/lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/EcommerceSystem.java @@ -17,51 +17,32 @@ public void addProduct(String productId, String name) { products.put(productId, new Product(productId, name)); } - public String placeOrder(String productId, int quantity) throws ProductNotFoundException, InvalidOrderQuantityException { - Product product = products.get(productId); { + public String placeOrder(String productId, int quantity) throws ProductNotFoundException { + Product product = products.get(productId); + + if (!products.containsKey(productId)) { + + throw new ProductNotFoundException("Product with ID " + productId + " not found"); + } String orderId = UUID.randomUUID().toString(); orders.put(orderId, new Order(orderId, product, quantity)); return orderId; - - if (! products.containsKey(productId)); - throw new ProductNotFoundException("Product with ID " + productId + "not found"); } - if (quantity < 1); { - throw new InvalidOrderQuantityException("Quantity must be at least 1"); -} - -} public void cancelOrder(String orderId) throws OrderNotFoundException { - orders.remove(orderId); { - - Order order = orders.get(orderId); - if (order == null) { - throw new OrderNotFoundException("Order with ID " + orderId + "not found"); - } - if (order.getStatus().equals("Canceled")) { - throw new OrderNotFoundException("Order has already been canceled"); - } - if (order.getStatus().equals("Processed")) { - throw new OrderNotFoundException("Order has already been processed"); - } - } + orders.remove(orderId); } public String checkOrderStatus(String orderId) throws OrderNotFoundException { - Order order = orders.get(orderId); + Order order = orders.get(orderId); + if (orders.get(orderId) == null) { + throw new OrderNotFoundException("Order with ID " + orderId + " not found"); + } return "Order ID: " + orderId + ", Product: " + order.getProduct().getName() + ", Quantity: " + order.getQuantity(); - - if (orders.get(orderId) == null) { - throw new OrderNotFoundException("Order with ID " + orderId + "not found"); } - if (orders.remove(orderId)) { - throw new OrderNotFoundException("Order with ID " + orderId + "not found"); - } -} } diff --git a/lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/OrderNotFoundException.java b/lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/OrderNotFoundException.java index 0104e0ab8..50607ed33 100644 --- a/lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/OrderNotFoundException.java +++ b/lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/OrderNotFoundException.java @@ -5,4 +5,8 @@ package com.codedifferently.lesson14.ecommerce; -class OrderNotFoundException {} +class OrderNotFoundException extends Exception { + public OrderNotFoundException(String message) { + super(message); + } +} diff --git a/lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/ProductNotFoundException.java b/lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/Produ.java similarity index 65% rename from lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/ProductNotFoundException.java rename to lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/Produ.java index 25aa814eb..96fd7a9f7 100644 --- a/lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/ProductNotFoundException.java +++ b/lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/Produ.java @@ -5,4 +5,9 @@ package com.codedifferently.lesson14.ecommerce; -class ProductNotFoundException {} +class ProductNotFoundException extends Exception { + + public ProductNotFoundException(String message) { + super(message); + } +}