Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions src/main/java/com/gatomalvado/todo/circularqueue/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.gatomalvado.todo.circularqueue;

public class Main {
public static void main(String[] args) {

}
}
7 changes: 7 additions & 0 deletions src/main/java/com/gatomalvado/todo/filesharing/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.gatomalvado.todo.filesharing;

public class Main {
public static void main(String[] args) {

}
}
7 changes: 7 additions & 0 deletions src/main/java/com/gatomalvado/todo/filesystem/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.gatomalvado.todo.filesystem;

public class Main {
public static void main(String[] args) {

}
}
82 changes: 82 additions & 0 deletions src/main/java/com/gatomalvado/todo/foodkart/Main.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,91 @@
package com.gatomalvado.todo.foodkart;

import java.util.List;

import com.gatomalvado.todo.foodkart.entities.Customer;
import com.gatomalvado.todo.foodkart.entities.Menu;
import com.gatomalvado.todo.foodkart.entities.MenuItem;
import com.gatomalvado.todo.foodkart.entities.OrderItem;
import com.gatomalvado.todo.foodkart.entities.Restaurant;
import com.gatomalvado.todo.foodkart.repo.RestaurantRepository;
import com.gatomalvado.todo.foodkart.service.RestaurantService;

public class Main {

// add_restaurant(resta1, {‘king_burger’: 10, ‘samosa_pizza’: 20, ‘alu_pasta’: 19}, 15)

public static void main(String[] args) {
System.out.println("Hello Food Kart!");
Customer customer1 = Customer.builder().id("uId1").name("username-1").build();
Customer customer2 = Customer.builder().id("uId2").name("username-2").build();
Customer customer3 = Customer.builder().id("uId3").name("username-3").build();

List<MenuItem> menuList1 = List.of(MenuItem.builder().itemName("king_burger").price(10).id("m1").build(),
MenuItem.builder().itemName("samosa").price(40).id("m2").build(),
MenuItem.builder().itemName("pizza").price(60).id("m3").build(),
MenuItem.builder().itemName("kachori").price(90).id("m4").build());

List<MenuItem> menuList2 = List.of(MenuItem.builder().itemName("ladoo").price(10).id("m5").build(),
MenuItem.builder().itemName("peda").price(10).id("m6").build(),
MenuItem.builder().itemName("barfi").price(110).id("m7").build(),
MenuItem.builder().itemName("khaja").price(2000).id("m8").build(),
MenuItem.builder().itemName("chenna").price(10).id("m9").build());

List<MenuItem> menuList3 = List.of(MenuItem.builder().itemName("cake").price(10).id("m10").build(),
MenuItem.builder().itemName("choco_biscuit").price(10).id("m11").build(),
MenuItem.builder().itemName("bun").price(10).id("m12").build());

List<MenuItem> menuList4 = List.of(MenuItem.builder().itemName("white_bread").price(10).id("m13").build(),
MenuItem.builder().itemName("paneer_sandwich").price(80).id("m14").build(),
MenuItem.builder().itemName("chicken_sandwich").price(1000).id("m15").build(),
MenuItem.builder().itemName("greek_salad").price(10).id("m16").build());

List<MenuItem> menuList5 = List.of(MenuItem.builder().itemName("aloo_paratha").price(90).id("m17").build(),
MenuItem.builder().itemName("biryani").price(50).id("m18").build(),
MenuItem.builder().itemName("naan").price(400).id("m19").build(),
MenuItem.builder().itemName("butter_chicken").price(100).id("m20").build(),
MenuItem.builder().itemName("tandoori_chicken").price(40).id("m21").build());

Menu menu1 = Menu.builder().menuItems(menuList1).id("menu-1").build();
Menu menu2 = Menu.builder().menuItems(menuList2).id("menu-2").build();
Menu menu3 = Menu.builder().menuItems(menuList3).id("menu-3").build();
Menu menu4 = Menu.builder().menuItems(menuList4).id("menu-4").build();
Menu menu5 = Menu.builder().menuItems(menuList5).id("menu-5").build();

Restaurant restaurant1 = Restaurant.builder().name("rest1").id("r1").menu(menu1).maxCap(5).build();
Restaurant restaurant2 = Restaurant.builder().name("rest2").id("r2").menu(menu2).maxCap(5).build();
Restaurant restaurant3 = Restaurant.builder().name("rest3").id("r3").menu(menu3).maxCap(5).build();
Restaurant restaurant4 = Restaurant.builder().name("rest4").id("r4").menu(menu4).maxCap(5).build();
Restaurant restaurant5 = Restaurant.builder().name("rest5").id("r5").menu(menu5).maxCap(5).build();

RestaurantRepository repository = new RestaurantRepository();
RestaurantService restaurantService = new RestaurantService();

restaurantService.addRestaurant(restaurant1);
restaurantService.addRestaurant(restaurant2);
restaurantService.addRestaurant(restaurant3);
restaurantService.addRestaurant(restaurant4);
restaurantService.addRestaurant(restaurant5);

// Menu updatedMenu = Menu.builder().menuItems(List.of(MenuItem.builder().itemName("aloo_paratha").price(90).id("m17").build(),
// MenuItem.builder().itemName("biryani").price(50).id("m18").build())).id("menu-5").build();

// restaurantService.updateMenu(restaurant1, updatedMenu);
restaurantService.printAllRestaurant();
restaurantService.bookOrder("uId1", new OrderItem(List.of("aloo_paratha", "paneer_sandwich", "king_burger")));
restaurantService.bookOrder("uId2", new OrderItem(List.of("aloo_paratha", "paneer_sandwich", "king_burger")));
restaurantService.bookOrder("uId3", new OrderItem(List.of("aloo_paratha", "paneer_sandwich", "king_burger")));
restaurantService.bookOrder("uId4", new OrderItem(List.of("aloo_paratha", "paneer_sandwich", "king_burger")));
restaurantService.bookOrder("uId5", new OrderItem(List.of("aloo_paratha", "paneer_sandwich", "king_burger")));
restaurantService.bookOrder("uId2", new OrderItem(List.of("aloo_paratha", "paneer_sandwich", "king_burger")));
restaurantService.bookOrder("uId2", new OrderItem(List.of("aloo_paratha", "paneer_sandwich", "king_burger")));
restaurantService.updateOrderStatusDelivered("order-1");
restaurantService.updateOrderStatusDelivered("order-2");
restaurantService.updateOrderStatusDelivered("order-3");
restaurantService.updateOrderStatusDelivered("order-4");
restaurantService.updateOrderStatusDelivered("order-5");
restaurantService.bookOrder("uId4", new OrderItem(List.of("aloo_paratha", "paneer_sandwich", "king_burger")));
restaurantService.printAllOrders();
}

}
15 changes: 15 additions & 0 deletions src/main/java/com/gatomalvado/todo/foodkart/entities/Customer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.gatomalvado.todo.foodkart.entities;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Customer {
private String id;
private String name;
}
17 changes: 17 additions & 0 deletions src/main/java/com/gatomalvado/todo/foodkart/entities/Menu.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.gatomalvado.todo.foodkart.entities;

import java.util.List;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Menu {
private String id;
private List<MenuItem> menuItems;
}
16 changes: 16 additions & 0 deletions src/main/java/com/gatomalvado/todo/foodkart/entities/MenuItem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.gatomalvado.todo.foodkart.entities;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class MenuItem {
private String id;
private String itemName;
private double price;
}
19 changes: 19 additions & 0 deletions src/main/java/com/gatomalvado/todo/foodkart/entities/Order.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.gatomalvado.todo.foodkart.entities;

import java.util.List;
import java.util.Set;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Order {
private String orderId;
private Set<String> restName;
private OrderStatus orderStatus;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.gatomalvado.todo.foodkart.entities;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
public class OrderDetail {
private String itemName;
private int quantity;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.gatomalvado.todo.foodkart.entities;

import java.util.List;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class OrderItem {
private List<String> items;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.gatomalvado.todo.foodkart.entities;

public class OrderQuantity {
private String item;
private int price;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.gatomalvado.todo.foodkart.entities;

public enum OrderStatus {
PLACED,
DELIVERED,
CANCELLED;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.gatomalvado.todo.foodkart.entities;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Restaurant {
private String id;
private String name;
private Menu menu;
private int maxCap;
private int currentCapacity;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.gatomalvado.todo.foodkart.repo;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import com.gatomalvado.todo.foodkart.entities.Customer;
import com.gatomalvado.todo.foodkart.entities.Menu;
import com.gatomalvado.todo.foodkart.entities.MenuItem;
import com.gatomalvado.todo.foodkart.entities.Order;
import com.gatomalvado.todo.foodkart.entities.Restaurant;

public class RestaurantRepository {

private Map<String, Restaurant> restaurants;
private Map<String, Order> orders;
private Map<String, Customer> customers;
private Map<String, MenuItem> menuItems;
private Map<String, Menu> menus;

public RestaurantRepository() {
this.restaurants = new ConcurrentHashMap<>();
this.orders = new ConcurrentHashMap<>();
this.customers = new ConcurrentHashMap<>();
this.menuItems = new ConcurrentHashMap<>();
this.menus = new ConcurrentHashMap<>();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
package com.gatomalvado.todo.foodkart.service;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

import com.gatomalvado.todo.foodkart.entities.Customer;
import com.gatomalvado.todo.foodkart.entities.Menu;
import com.gatomalvado.todo.foodkart.entities.MenuItem;
import com.gatomalvado.todo.foodkart.entities.Order;
import com.gatomalvado.todo.foodkart.entities.OrderItem;
import com.gatomalvado.todo.foodkart.entities.OrderStatus;
import com.gatomalvado.todo.foodkart.entities.Restaurant;

public class RestaurantService {

private Map<String, Restaurant> restaurants;
private Map<String, Order> orders;
private Map<String, Customer> customers;
private Map<String, MenuItem> menuItems;
private Map<String, Menu> menus;
private Map<String, List<Order>> customerToOrderMap;

private int orderId = 0;

public RestaurantService() {
this.restaurants = new ConcurrentHashMap<>();
this.orders = new ConcurrentHashMap<>();
this.customers = new ConcurrentHashMap<>();
this.menuItems = new ConcurrentHashMap<>();
this.menus = new ConcurrentHashMap<>();
this.customerToOrderMap = new ConcurrentHashMap<>();
}

public void printAllRestaurant() {
System.out.println(restaurants);
}

public Order bookOrder(String userId, OrderItem orderItem) {
Set<String> itemNames = new HashSet<>(orderItem.getItems());
Set<String> prepNames = new HashSet<>();
Set<String> restaurantNames = new HashSet<>();
for(Restaurant r : restaurants.values()) {
List<MenuItem> currMenuItems = r.getMenu().getMenuItems();
for(MenuItem m : currMenuItems) {
if(itemNames.contains(m.getItemName()) && r.getCurrentCapacity() < r.getMaxCap()) {
itemNames.remove(m.getItemName());
prepNames.add(m.getItemName());
restaurantNames.add(r.getId());
r.setCurrentCapacity(r.getCurrentCapacity()+1);
}
}
}
if(!itemNames.isEmpty()) {
System.out.println("Could not place any order");
return null;
}
Order order = Order.builder().orderId("order-"+(++orderId)).build();
order.setRestName(restaurantNames);
System.out.println(order);
if(!customerToOrderMap.containsKey(userId)) {
customerToOrderMap.put(userId, new ArrayList<>());
}
orders.put(order.getOrderId(), order);
customerToOrderMap.get(userId).add(order);
return order;
}

public void updateOrderStatusDelivered(String id) {
Order order = orders.get(id);
if(order != null) {
Set<String> restaurantNames = order.getRestName();
for(String name : restaurantNames) {
Restaurant restaurant = restaurants.get(name);
restaurant.setCurrentCapacity(restaurant.getCurrentCapacity() - 1);
}
}
order.setOrderStatus(OrderStatus.DELIVERED);
}

public void printAllOrders() {
System.out.println(orders);
}

public void updateMenu(Restaurant restaurant, Menu updatedMenu) {
restaurant.setMenu(updatedMenu);
}

public void addRestaurant(Restaurant restaurant) {
restaurants.put(restaurant.getId(), restaurant);
}
}
7 changes: 7 additions & 0 deletions src/main/java/com/gatomalvado/todo/hitcounter/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.gatomalvado.todo.hitcounter;

public class Main {
public static void main(String[] args) {

}
}
7 changes: 7 additions & 0 deletions src/main/java/com/gatomalvado/todo/lfucache/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.gatomalvado.todo.lfucache;

public class Main {
public static void main(String[] args) {

}
}
Loading