From c7bc2273d8ee1667e2c32566256b639968498cf5 Mon Sep 17 00:00:00 2001 From: Rasheed Date: Mon, 7 Apr 2025 15:56:41 +0000 Subject: [PATCH] updated existing code to add exceptions --- .../lesson14/ecommerce/EcommerceSystem.java | 37 ++++++++++++++----- .../lesson14/ecommerce/Order.java | 14 +++---- .../ecommerce/OrderNotFoundException.java | 11 +++--- .../ecommerce/ProductNotFoundException.java | 11 +++--- 4 files changed, 45 insertions(+), 28 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..162b589fb 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 @@ -5,12 +5,15 @@ import java.util.UUID; public class EcommerceSystem { + private Map products; private Map orders; + private Map productToOrderId; public EcommerceSystem() { products = new HashMap<>(); orders = new HashMap<>(); + productToOrderId = new HashMap<>(); } public void addProduct(String productId, String name) { @@ -19,8 +22,13 @@ public void addProduct(String productId, String name) { public String placeOrder(String productId, int quantity) { Product product = products.get(productId); + if (product == null) { + throw new ProductNotFoundException("Product with ID " + productId + " not found"); + } String orderId = UUID.randomUUID().toString(); - orders.put(orderId, new Order(orderId, product, quantity)); + Order order = new Order(orderId, product, quantity); + orders.put(orderId, order); + productToOrderId.put(productId, orderId); // so we can find the order by productId return orderId; } @@ -28,13 +36,24 @@ public void cancelOrder(String orderId) { orders.remove(orderId); } - public String checkOrderStatus(String orderId) { - Order order = orders.get(orderId); - return "Order ID: " - + orderId - + ", Product: " - + order.getProduct().getName() - + ", Quantity: " - + order.getQuantity(); + public String checkOrderStatus(String id) { + // Check if this is a real order ID + Order order = orders.get(id); + if (order != null) { + return "Order ID: " + + id + + ", Product: " + + order.getProduct().getName() + + ", Quantity: " + + order.getQuantity(); + } + + // If a product ID was passed instead of an order ID, and it had a cancelled order + if (productToOrderId.containsKey(id) && !orders.containsKey(productToOrderId.get(id))) { + throw new OrderNotFoundException("Order with ID " + id + " not found"); + } + + // If not found at all + throw new OrderNotFoundException("Order with ID " + id + " not found"); } } diff --git a/lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/Order.java b/lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/Order.java index ffd8c4aba..a8cc6358a 100644 --- a/lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/Order.java +++ b/lesson_14/exceptions/exceptions_app/src/main/java/com/codedifferently/lesson14/ecommerce/Order.java @@ -1,18 +1,18 @@ package com.codedifferently.lesson14.ecommerce; public class Order { - private String orderId; - private Product product; - private int quantity; + private final String id; + private final Product product; + private final int quantity; - public Order(String orderId, Product product, int quantity) { - this.orderId = orderId; + public Order(String id, Product product, int quantity) { + this.id = id; this.product = product; this.quantity = quantity; } - public String getOrderId() { - return orderId; + public String getId() { + return id; } public Product getProduct() { 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..a13f08280 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 @@ -1,8 +1,7 @@ -/* - * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license - * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template - */ - package com.codedifferently.lesson14.ecommerce; -class OrderNotFoundException {} +public class OrderNotFoundException extends RuntimeException { + 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/ProductNotFoundException.java index 25aa814eb..1cfb392bc 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/ProductNotFoundException.java @@ -1,8 +1,7 @@ -/* - * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license - * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template - */ - package com.codedifferently.lesson14.ecommerce; -class ProductNotFoundException {} +public class ProductNotFoundException extends RuntimeException { + public ProductNotFoundException(String message) { + super(message); + } +}