Add OOP/Java/Assignments/FISAC/Q1.java
This commit is contained in:
		
							parent
							
								
									1f8964b3fd
								
							
						
					
					
						commit
						b15203dcf3
					
				
					 1 changed files with 98 additions and 0 deletions
				
			
		
							
								
								
									
										98
									
								
								OOP/Java/Assignments/FISAC/Q1.java
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								OOP/Java/Assignments/FISAC/Q1.java
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,98 @@
 | 
			
		|||
import java.util.*;
 | 
			
		||||
 | 
			
		||||
class Warehouse {
 | 
			
		||||
    String productId;
 | 
			
		||||
    int quantity;
 | 
			
		||||
    int unitCost;
 | 
			
		||||
 | 
			
		||||
    Warehouse(String productId, int quantity, int unitCost) {
 | 
			
		||||
        this.productId = productId;
 | 
			
		||||
        this.quantity = quantity;
 | 
			
		||||
        this.unitCost = unitCost;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class Order {
 | 
			
		||||
    int orderedQuantity;
 | 
			
		||||
    int orderId;
 | 
			
		||||
    String date;
 | 
			
		||||
 | 
			
		||||
    Order(int orderedQuantity, int orderId, String date) {
 | 
			
		||||
        this.orderedQuantity = orderedQuantity;
 | 
			
		||||
        this.orderId = orderId;
 | 
			
		||||
        this.date = date;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class BookOrderThread extends Thread {
 | 
			
		||||
        private Warehouse warehouse;
 | 
			
		||||
    private Order order;
 | 
			
		||||
    private static List<Order> orderList = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
    BookOrderThread(Warehouse warehouse, Order order) {
 | 
			
		||||
        this.warehouse = warehouse;
 | 
			
		||||
        this.order = order;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void run() {
 | 
			
		||||
        try {
 | 
			
		||||
                        checkAvailableQuantity();
 | 
			
		||||
            computeTotCost();
 | 
			
		||||
            orderList.add(order);
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            System.out.println(e.getMessage());
 | 
			
		||||
        } 
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void checkAvailableQuantity() throws Exception {
 | 
			
		||||
        if (warehouse.quantity == 0) {
 | 
			
		||||
            throw new Exception("Order cannot be placed");
 | 
			
		||||
        }
 | 
			
		||||
        if (order.orderedQuantity == 0) {
 | 
			
		||||
            throw new Exception("Order quantity is invalid");
 | 
			
		||||
        }
 | 
			
		||||
        if (order.orderedQuantity > warehouse.quantity) {
 | 
			
		||||
            throw new Exception("Out of Stock for " + warehouse.productId);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void computeTotCost() {
 | 
			
		||||
        warehouse.quantity -= order.orderedQuantity;
 | 
			
		||||
        int totalCost = order.orderedQuantity * warehouse.unitCost;
 | 
			
		||||
        System.out.println("OrderID: " + order.orderId + " Total Cost: " + totalCost);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static void displaySortedOrders() {
 | 
			
		||||
        orderList.sort(Comparator.comparing(o -> o.date));
 | 
			
		||||
        for (Order o : orderList) {
 | 
			
		||||
            System.out.println("OrderID: " + o.orderId + " Date: " + o.date);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
public class Main {
 | 
			
		||||
    public static void main(String[] args) {
 | 
			
		||||
        Warehouse warehouse = new Warehouse("P001", 50, 100);
 | 
			
		||||
        Order o1 = new Order(10, 101, "2023-10-01");
 | 
			
		||||
        Order o2 = new Order(20, 102, "2023-10-03");
 | 
			
		||||
        Order o3 = new Order(25, 103, "2023-10-02");
 | 
			
		||||
 | 
			
		||||
        Thread t1 = new BookOrderThread(warehouse, o1);
 | 
			
		||||
        Thread t2 = new BookOrderThread(warehouse, o2);
 | 
			
		||||
        Thread t3 = new BookOrderThread(warehouse, o3);
 | 
			
		||||
 | 
			
		||||
        t1.start();
 | 
			
		||||
        t2.start();
 | 
			
		||||
        t3.start();
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            t1.join();
 | 
			
		||||
            t2.join();
 | 
			
		||||
            t3.join();
 | 
			
		||||
        } catch (InterruptedException e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        BookOrderThread.displaySortedOrders();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue