Consider a software application for managing an online food ordering store.
Each order contains the details of the customer, the products ordered, the time when the order is ready and the order state. The order can be either delivered, in that case a delivery address and the deliverer is needed or taken personally by the customer. The price of the order is computed from the price of the products and the delivery cost 3$ if the total cost is under 20$. The estimate finish time is computed from the products cooking time. The type of products ordered can be meal1, meal2, desert and drink. For each product we have a price, the name and a short description. For products that require cooking we also have an estimate cooking time. The user has to log in into the application using the username and password and based on its role it can perform specific actions. The customer can create an account, place and order and pick the order. The order manager can confirm the order and set it as ready and the deliverer can claim the order and set it as delivered. Implementation request: Write a Java console application that will map the above specifications and simulate some flows (example: user logs in and places a delivered order, user creates account, logs in and places a personally taken order etc.). At each step print out the action made and the order details. There is no need to implement any user interface (graphical or console menu), just hardcode the following flow: Order manager: logs in. Deliverer: log in. User: creates account with username jdoe jdoe: logs in. jdoe: places personal taken order1 (items: fries, cola; price: 20$; finishTime: 1PM; state: new). Order manager: confirms order1 (items: fries, cola; price: 20$; finishTime: 1PM; state: confirmed). Order manager: sets ready order1 (items: fries, cola; price: 20$; finishTime: now; state: ready). jdoe: picks the order1 (items: fries, cola; price: 20$; finishTime: 12:46 PM; state: picked). jdoe: places order2 with delivery (items: fries, cola; price,burger: 25$; finishTime: 1PM; state: new). jdoe: places order3 with delivery (items: fries, cola; price,burger: 15$; finishTime: 1PM; state: new).