From d974f31c850e8d2679adfc613280e86a38c6de6f Mon Sep 17 00:00:00 2001 From: jc-programs Date: Wed, 23 Oct 2024 17:20:35 +0200 Subject: [PATCH 01/10] Repository for EatInOrder --- .../restaurantManager/model/EatInOrderRestaurant.java | 2 ++ .../restaurantManager/repository/EatInOrderRepository.java | 7 +++++++ 2 files changed, 9 insertions(+) create mode 100644 src/main/java/dev/example/restaurantManager/repository/EatInOrderRepository.java diff --git a/src/main/java/dev/example/restaurantManager/model/EatInOrderRestaurant.java b/src/main/java/dev/example/restaurantManager/model/EatInOrderRestaurant.java index 692c186..adafdc4 100644 --- a/src/main/java/dev/example/restaurantManager/model/EatInOrderRestaurant.java +++ b/src/main/java/dev/example/restaurantManager/model/EatInOrderRestaurant.java @@ -1,5 +1,6 @@ package dev.example.restaurantManager.model; +import jakarta.persistence.Entity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -8,6 +9,7 @@ import java.util.Date; import java.util.stream.Collectors; +@Entity @Data @AllArgsConstructor @NoArgsConstructor diff --git a/src/main/java/dev/example/restaurantManager/repository/EatInOrderRepository.java b/src/main/java/dev/example/restaurantManager/repository/EatInOrderRepository.java new file mode 100644 index 0000000..df0de93 --- /dev/null +++ b/src/main/java/dev/example/restaurantManager/repository/EatInOrderRepository.java @@ -0,0 +1,7 @@ +package dev.example.restaurantManager.repository; + +import dev.example.restaurantManager.model.EatInOrderRestaurant; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface EatInOrderRepository extends JpaRepository { +} From 37361663af75f6b62cd9338fd19afc11fc0de41b Mon Sep 17 00:00:00 2001 From: jc-programs Date: Wed, 23 Oct 2024 17:31:58 +0200 Subject: [PATCH 02/10] added application-jc-local.properties --- .../model/EatInOrderRestaurant.java | 11 ++++++----- .../resources/application-jc-local.properties | 17 +++++++++++++++++ src/main/resources/application.properties | 3 ++- .../RelationshipsOrderRestaurantTest.java | 6 +++--- 4 files changed, 28 insertions(+), 9 deletions(-) create mode 100644 src/main/resources/application-jc-local.properties diff --git a/src/main/java/dev/example/restaurantManager/model/EatInOrderRestaurant.java b/src/main/java/dev/example/restaurantManager/model/EatInOrderRestaurant.java index adafdc4..403a16b 100644 --- a/src/main/java/dev/example/restaurantManager/model/EatInOrderRestaurant.java +++ b/src/main/java/dev/example/restaurantManager/model/EatInOrderRestaurant.java @@ -15,21 +15,22 @@ @NoArgsConstructor public class EatInOrderRestaurant extends OrderRestaurant { - private ArrayList tableRestaurants = new ArrayList<>(); - //private TableRestaurant orderedTableRestaurant; + //private ArrayList tableRestaurants = new ArrayList<>(); + private TableRestaurant tableEatInOrder; public EatInOrderRestaurant(String id, Date date, String waiter, int peopleQty, double totalPayment, boolean paid, ArrayList menus, - ArrayList tableRestaurants) { + TableRestaurant tableEatInOrder) { super(id, date, waiter, peopleQty, totalPayment, paid, menus); - this.tableRestaurants = tableRestaurants; + this.tableEatInOrder = tableEatInOrder; } @Override public String toString() { return super.toString() + "\n" + "Type: Eat In\n" + - "Tables: " + tableRestaurants.stream().map(TableRestaurant::getName).collect(Collectors.joining(", ")); + "Table EatInOrder: " + tableEatInOrder; +// "Tables: " + tableRestaurants.stream().map(TableRestaurant::getName).collect(Collectors.joining(", ")); } } diff --git a/src/main/resources/application-jc-local.properties b/src/main/resources/application-jc-local.properties new file mode 100644 index 0000000..10332da --- /dev/null +++ b/src/main/resources/application-jc-local.properties @@ -0,0 +1,17 @@ + + + +# H2 LOCAL DB SERVER +spring.datasource.url=jdbc:h2:/home/jc/Documents/restaurant-db/db +spring.datasource.username=jc +spring.datasource.password= + +# DDL OPTIONS: create-drop, create, update, none, validate +spring.jpa.hibernate.ddl-auto=create +# create ? Hibernate first drops existing tables and then creates new tables. +# update ? The object model created based on the mappings +# (annotations or XML) is compared with the existing schema, +# and then Hibernate updates the schema according to the diff. +# It never deletes the existing tables or columns +# even if they are no longer required by the application. +# https://albertprofe.dev/springboot/sblab0-5.html#ddl \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 56fa3b7..fc01ffd 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,7 +1,8 @@ spring.application.name=restaurantManager # application.properties -spring.profiles.active=memory +# spring.profiles.active=memory +spring.profiles.active=jc-local diff --git a/src/test/java/dev/example/restaurantManager/RelationshipsOrderRestaurantTest.java b/src/test/java/dev/example/restaurantManager/RelationshipsOrderRestaurantTest.java index 2e5c78b..87c7e07 100644 --- a/src/test/java/dev/example/restaurantManager/RelationshipsOrderRestaurantTest.java +++ b/src/test/java/dev/example/restaurantManager/RelationshipsOrderRestaurantTest.java @@ -50,9 +50,9 @@ public void TestCreateOrder() { OrderRestaurant shippingOrder3 = new ShippingOrderRestaurant("SO3", new Date(), "Emily", 3, 32.97, false, new ArrayList<>(Arrays.asList(menu1, menu2, menu3)), "789 Oak St", "Chicago", "Lisa"); // Create 3 EatInOrder objects - OrderRestaurant eatInOrder1 = new EatInOrderRestaurant("EO1", new Date(), "David", 4, 43.96, true, new ArrayList<>(Arrays.asList(menu1, menu1, menu2, menu2)), new ArrayList<>(Arrays.asList(table1))); - OrderRestaurant eatInOrder2 = new EatInOrderRestaurant("EO2", new Date(), "Anna", 2, 21.98, false, new ArrayList<>(Arrays.asList(menu2, menu3)), new ArrayList<>(Arrays.asList(table2))); - OrderRestaurant eatInOrder3 = new EatInOrderRestaurant("EO3", new Date(), "Mark", 6, 65.94, true, new ArrayList<>(Arrays.asList(menu1, menu1, menu2, menu2, menu3, menu3)), new ArrayList<>(Arrays.asList(table1, table2))); + OrderRestaurant eatInOrder1 = new EatInOrderRestaurant("EO1", new Date(), "David", 4, 43.96, true, new ArrayList<>(Arrays.asList(menu1, menu1, menu2, menu2)), table1); + OrderRestaurant eatInOrder2 = new EatInOrderRestaurant("EO2", new Date(), "Anna", 2, 21.98, false, new ArrayList<>(Arrays.asList(menu2, menu3)), table2); + OrderRestaurant eatInOrder3 = new EatInOrderRestaurant("EO3", new Date(), "Mark", 6, 65.94, true, new ArrayList<>(Arrays.asList(menu1, menu1, menu2, menu2, menu3, menu3)), table1); // Create 3 TakeAwayOrder objects OrderRestaurant takeAwayOrder1 = new TakeAwayOrder("TO1", new Date(), "Alice", 1, 10.99, true, new ArrayList<>(Arrays.asList(menu1)), customer1 ); From 88be2f163498a007b2471aaef7600dc77afbb86f Mon Sep 17 00:00:00 2001 From: jc-programs Date: Wed, 23 Oct 2024 17:42:52 +0200 Subject: [PATCH 03/10] @ManyToOne in tableEatInOrder attr. of EatInOrder --- .../model/EatInOrderRestaurant.java | 3 +++ .../restaurantManager/model/TableRestaurant.java | 13 +++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/dev/example/restaurantManager/model/EatInOrderRestaurant.java b/src/main/java/dev/example/restaurantManager/model/EatInOrderRestaurant.java index 403a16b..495eecd 100644 --- a/src/main/java/dev/example/restaurantManager/model/EatInOrderRestaurant.java +++ b/src/main/java/dev/example/restaurantManager/model/EatInOrderRestaurant.java @@ -1,6 +1,7 @@ package dev.example.restaurantManager.model; import jakarta.persistence.Entity; +import jakarta.persistence.ManyToOne; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -16,6 +17,8 @@ public class EatInOrderRestaurant extends OrderRestaurant { //private ArrayList tableRestaurants = new ArrayList<>(); + + @ManyToOne private TableRestaurant tableEatInOrder; diff --git a/src/main/java/dev/example/restaurantManager/model/TableRestaurant.java b/src/main/java/dev/example/restaurantManager/model/TableRestaurant.java index bbd18fd..5e4a6f6 100644 --- a/src/main/java/dev/example/restaurantManager/model/TableRestaurant.java +++ b/src/main/java/dev/example/restaurantManager/model/TableRestaurant.java @@ -4,14 +4,12 @@ import jakarta.persistence.Entity; import jakarta.persistence.Id; import jakarta.persistence.OneToMany; -import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.ArrayList; @Data -@AllArgsConstructor @NoArgsConstructor @Entity public class TableRestaurant { @@ -26,9 +24,20 @@ public class TableRestaurant { @OneToMany(mappedBy = "tableRestaurantMapped", cascade = CascadeType.ALL) private ArrayList bookings ; + public TableRestaurant(String id,String name, String description , int qty, boolean busy, ArrayList bookings) { + this.id=id; + this.name= name; + this.description=description; + this.qty=qty; + this.busy=busy; + this.bookings = bookings; + } + + // we must create a VERY CONCRETE constructor to RUN the OLD tests public TableRestaurant(String name, String description , int qty, boolean busy) { + this(name,name, description , qty, busy,new ArrayList<>()); } From 6eb0360d6964e8ebb5bb3f5e519cdcf43d281019 Mon Sep 17 00:00:00 2001 From: jc-programs Date: Wed, 23 Oct 2024 17:49:09 +0200 Subject: [PATCH 04/10] new constructor in TableRestaurant to pass test in BookingTableTest --- .../restaurantManager/model/TableRestaurant.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/dev/example/restaurantManager/model/TableRestaurant.java b/src/main/java/dev/example/restaurantManager/model/TableRestaurant.java index 5e4a6f6..e865269 100644 --- a/src/main/java/dev/example/restaurantManager/model/TableRestaurant.java +++ b/src/main/java/dev/example/restaurantManager/model/TableRestaurant.java @@ -24,20 +24,29 @@ public class TableRestaurant { @OneToMany(mappedBy = "tableRestaurantMapped", cascade = CascadeType.ALL) private ArrayList bookings ; - public TableRestaurant(String id,String name, String description , int qty, boolean busy, ArrayList bookings) { + @OneToMany(mappedBy = "tableEatInOrder", cascade = CascadeType.ALL) + private ArrayList eatInOrders ; + + + public TableRestaurant(String id,String name, String description , int qty, boolean busy, ArrayList bookings, ArrayList eatInOrders) { this.id=id; this.name= name; this.description=description; this.qty=qty; this.busy=busy; this.bookings = bookings; + this.eatInOrders = eatInOrders; } + // we must create a VERY CONCRETE constructor to RUN the OLD tests + public TableRestaurant(String id,String name, String description , int qty, boolean busy,ArrayList bookings) { + this(id,name, description , qty, busy,bookings,new ArrayList<>()); + } // we must create a VERY CONCRETE constructor to RUN the OLD tests public TableRestaurant(String name, String description , int qty, boolean busy) { - this(name,name, description , qty, busy,new ArrayList<>()); + this(name,name, description , qty, busy,new ArrayList<>(),new ArrayList<>()); } From 9f3be9ee1e70225b29e800bc1efb3891cbd9efef Mon Sep 17 00:00:00 2001 From: jc-programs Date: Wed, 23 Oct 2024 18:28:51 +0200 Subject: [PATCH 05/10] JPA working with EatInOrder. First test --- .../model/EatInOrderRestaurant.java | 2 + .../model/TableRestaurant.java | 5 +- .../restaurantManager/EatInOrderTest.java | 81 +++++++++++++++++++ 3 files changed, 84 insertions(+), 4 deletions(-) create mode 100644 src/test/java/dev/example/restaurantManager/EatInOrderTest.java diff --git a/src/main/java/dev/example/restaurantManager/model/EatInOrderRestaurant.java b/src/main/java/dev/example/restaurantManager/model/EatInOrderRestaurant.java index 495eecd..5c1eaa1 100644 --- a/src/main/java/dev/example/restaurantManager/model/EatInOrderRestaurant.java +++ b/src/main/java/dev/example/restaurantManager/model/EatInOrderRestaurant.java @@ -1,6 +1,7 @@ package dev.example.restaurantManager.model; import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import lombok.AllArgsConstructor; import lombok.Data; @@ -19,6 +20,7 @@ public class EatInOrderRestaurant extends OrderRestaurant { //private ArrayList tableRestaurants = new ArrayList<>(); @ManyToOne + @JoinColumn(name="TABLE_EIO_FK") private TableRestaurant tableEatInOrder; diff --git a/src/main/java/dev/example/restaurantManager/model/TableRestaurant.java b/src/main/java/dev/example/restaurantManager/model/TableRestaurant.java index e865269..23c8653 100644 --- a/src/main/java/dev/example/restaurantManager/model/TableRestaurant.java +++ b/src/main/java/dev/example/restaurantManager/model/TableRestaurant.java @@ -1,9 +1,6 @@ package dev.example.restaurantManager.model; -import jakarta.persistence.CascadeType; -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.OneToMany; +import jakarta.persistence.*; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/src/test/java/dev/example/restaurantManager/EatInOrderTest.java b/src/test/java/dev/example/restaurantManager/EatInOrderTest.java new file mode 100644 index 0000000..07546be --- /dev/null +++ b/src/test/java/dev/example/restaurantManager/EatInOrderTest.java @@ -0,0 +1,81 @@ +package dev.example.restaurantManager; + +import dev.example.restaurantManager.model.*; +import dev.example.restaurantManager.repository.EatInOrderRepository; +import dev.example.restaurantManager.repository.TableRestaurantRepository; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; + +@DataJpaTest +public class EatInOrderTest { + + @Autowired + private TableRestaurantRepository tableRestaurantRepository; + @Autowired + private EatInOrderRepository eatInOrderRepository; + + @Test + public void createEatInOrderTest() { + // Create sample menus + Menu menu1 = new Menu("Burger Menu", 10.99, "Burger, fries, and drink", true, true); + Menu menu2 = new Menu("Pizza Menu", 12.99, "Pizza and salad", true, false); + Menu menu3 = new Menu("Salad Menu", 8.99, "Mixed salad and dressing", true, true); + + // Create sample tables + TableRestaurant table1 = new TableRestaurant("T1", "Window Table", 4, false); + TableRestaurant table2 = new TableRestaurant("T2", "Corner Table", 2, true); + + // Create 3 ShippingOrder objects + OrderRestaurant eatInOrder1 = new EatInOrderRestaurant("EO1", new Date(), "David", 4, 43.96, true, new ArrayList<>(Arrays.asList(menu1, menu1, menu2, menu2)), table1); + OrderRestaurant eatInOrder2 = new EatInOrderRestaurant("EO2", new Date(), "Anna", 2, 21.98, false, new ArrayList<>(Arrays.asList(menu2, menu3)), table2); + OrderRestaurant eatInOrder3 = new EatInOrderRestaurant("EO3", new Date(), "Mark", 6, 65.94, true, new ArrayList<>(Arrays.asList(menu1, menu1, menu2, menu2, menu3, menu3)), table1); + + // Create a list of all orders + ArrayList orders = new ArrayList<>(); + orders.addAll(Arrays.asList(eatInOrder1, eatInOrder2, eatInOrder3)); + + // Print the number of orders + System.out.println("Orders"); + System.out.println("Total number of orders: " + orders.size() + " orders."); + System.out.println("--------------------"); + // Print all orders + for (OrderRestaurant order : orders) { + System.out.println("Order ID: " + order.getId()); + System.out.println(order); + System.out.println("--------------------"); + } + + + // let's create an order to save and test + // we do not create orderToSave as OrderRestaurant but + // as TakeAwayOrder to AVOID casting because + // in this test is easier to work with + EatInOrderRestaurant eatInOrderToSave = new EatInOrderRestaurant("EO1", new Date(), "David", 4, 43.96, true, new ArrayList<>(Arrays.asList(menu1, menu1, menu2, menu2)),table1); + eatInOrderToSave.setTableEatInOrder(table1); + // Save the table + tableRestaurantRepository.save(table1); + // Save the order with JPA Repository + eatInOrderRepository.save(eatInOrderToSave); + + // when + Optional found = eatInOrderRepository.findById("EO1"); + System.out.println("--------------------"); + System.out.println("EatInOrder ID: " + found.get().getId()); + System.out.println(found.get()); + // then + assertThat(found).isPresent(); + assertThat(found.get().getTableEatInOrder().equals(table1)); + + System.out.println("--------------------"); + } +} + + From 6b0a8c918dc7bc3bbc7ff2a893ae752fa76a5f4d Mon Sep 17 00:00:00 2001 From: jc-programs Date: Wed, 23 Oct 2024 18:43:01 +0200 Subject: [PATCH 06/10] Second test --- .../restaurantManager/EatInOrderTest.java | 71 +++++++++++++++++-- 1 file changed, 65 insertions(+), 6 deletions(-) diff --git a/src/test/java/dev/example/restaurantManager/EatInOrderTest.java b/src/test/java/dev/example/restaurantManager/EatInOrderTest.java index 07546be..0cc9a76 100644 --- a/src/test/java/dev/example/restaurantManager/EatInOrderTest.java +++ b/src/test/java/dev/example/restaurantManager/EatInOrderTest.java @@ -33,13 +33,13 @@ public void createEatInOrderTest() { TableRestaurant table1 = new TableRestaurant("T1", "Window Table", 4, false); TableRestaurant table2 = new TableRestaurant("T2", "Corner Table", 2, true); - // Create 3 ShippingOrder objects - OrderRestaurant eatInOrder1 = new EatInOrderRestaurant("EO1", new Date(), "David", 4, 43.96, true, new ArrayList<>(Arrays.asList(menu1, menu1, menu2, menu2)), table1); - OrderRestaurant eatInOrder2 = new EatInOrderRestaurant("EO2", new Date(), "Anna", 2, 21.98, false, new ArrayList<>(Arrays.asList(menu2, menu3)), table2); - OrderRestaurant eatInOrder3 = new EatInOrderRestaurant("EO3", new Date(), "Mark", 6, 65.94, true, new ArrayList<>(Arrays.asList(menu1, menu1, menu2, menu2, menu3, menu3)), table1); + // Create 3 EatInOrderRestaurant objects + EatInOrderRestaurant eatInOrder1 = new EatInOrderRestaurant("EO1", new Date(), "David", 4, 43.96, true, new ArrayList<>(Arrays.asList(menu1, menu1, menu2, menu2)), table1); + EatInOrderRestaurant eatInOrder2 = new EatInOrderRestaurant("EO2", new Date(), "Anna", 2, 21.98, false, new ArrayList<>(Arrays.asList(menu2, menu3)), table2); + EatInOrderRestaurant eatInOrder3 = new EatInOrderRestaurant("EO3", new Date(), "Mark", 6, 65.94, true, new ArrayList<>(Arrays.asList(menu1, menu1, menu2, menu2, menu3, menu3)), table1); // Create a list of all orders - ArrayList orders = new ArrayList<>(); + ArrayList orders = new ArrayList<>(); orders.addAll(Arrays.asList(eatInOrder1, eatInOrder2, eatInOrder3)); // Print the number of orders @@ -47,7 +47,7 @@ public void createEatInOrderTest() { System.out.println("Total number of orders: " + orders.size() + " orders."); System.out.println("--------------------"); // Print all orders - for (OrderRestaurant order : orders) { + for (EatInOrderRestaurant order : orders) { System.out.println("Order ID: " + order.getId()); System.out.println(order); System.out.println("--------------------"); @@ -76,6 +76,65 @@ public void createEatInOrderTest() { System.out.println("--------------------"); } + + + @Test + public void createEatInOrder2Test() { + // Create sample menus + Menu menu1 = new Menu("Burger Menu", 10.99, "Burger, fries, and drink", true, true); + Menu menu2 = new Menu("Pizza Menu", 12.99, "Pizza and salad", true, false); + Menu menu3 = new Menu("Salad Menu", 8.99, "Mixed salad and dressing", true, true); + + // Create & save to DB sample tables + TableRestaurant table1 = new TableRestaurant("T1", "Window Table", 4, false); + tableRestaurantRepository.save(table1); + TableRestaurant table2 = new TableRestaurant("T2", "Corner Table", 2, false); + tableRestaurantRepository.save(table2); + TableRestaurant table3 = new TableRestaurant("T3", "Corner Table", 4, false); + tableRestaurantRepository.save(table3); + + // Create 3 EatInOrderRestaurant objects & save them + EatInOrderRestaurant eatInOrder1 = new EatInOrderRestaurant("EO1", new Date(), "David", 4, 43.96, true, new ArrayList<>(Arrays.asList(menu1, menu1, menu2, menu2)), table1); + eatInOrderRepository.save(eatInOrder1); + EatInOrderRestaurant eatInOrder2 = new EatInOrderRestaurant("EO2", new Date(), "Anna", 2, 21.98, false, new ArrayList<>(Arrays.asList(menu2, menu3)), table2); + eatInOrderRepository.save(eatInOrder2); + EatInOrderRestaurant eatInOrder3 = new EatInOrderRestaurant("EO3", new Date(), "Mark", 6, 65.94, true, new ArrayList<>(Arrays.asList(menu1, menu1, menu2, menu2, menu3, menu3)), table3); + eatInOrderRepository.save(eatInOrder3); + + // Create a list of all orders + ArrayList orders = new ArrayList<>(); + orders.addAll(Arrays.asList(eatInOrder1, eatInOrder2, eatInOrder3)); + + // Print the number of orders + System.out.println("Orders"); + System.out.println("Total number of orders: " + orders.size() + " orders."); + System.out.println("--------------------"); + // Print all orders + for (OrderRestaurant order : orders) { + System.out.println("Order ID: " + order.getId()); + System.out.println(order); + System.out.println("--------------------"); + } + + // let's check table id by recovering EatOnOrders + for(String nId:Arrays.asList("1","2","3")){ + System.out.println("--------------------"); + String idEIO = "EO" + nId; + Optional found = eatInOrderRepository.findById(idEIO); + if(found.isEmpty()){ + System.out.println("EatInOrder with ID: " + idEIO + " not found"); + continue; + } + System.out.println("EatInOrder ID: " + found.get().getId()); + System.out.println(found.get()); + String idTable = "T" + nId; + assertThat(found.get().getTableEatInOrder().getId().equals(idTable)); + } + System.out.println("--------------------"); + + } + + } From 39aac03fec4aed9187fc508d5e959b62bd1b47f7 Mon Sep 17 00:00:00 2001 From: jc-programs Date: Wed, 23 Oct 2024 18:55:46 +0200 Subject: [PATCH 07/10] EatInOrderService y EatInOrderServiceImpl --- .../service/EatInOrderService.java | 14 +++++ .../service/EatInOrderServiceImpl.java | 51 +++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 src/main/java/dev/example/restaurantManager/service/EatInOrderService.java create mode 100644 src/main/java/dev/example/restaurantManager/service/EatInOrderServiceImpl.java diff --git a/src/main/java/dev/example/restaurantManager/service/EatInOrderService.java b/src/main/java/dev/example/restaurantManager/service/EatInOrderService.java new file mode 100644 index 0000000..986ec1c --- /dev/null +++ b/src/main/java/dev/example/restaurantManager/service/EatInOrderService.java @@ -0,0 +1,14 @@ +package dev.example.restaurantManager.service; + +import dev.example.restaurantManager.model.EatInOrderRestaurant; + +import java.util.List; + +public interface EatInOrderService { + List getAllEatInOrders(); + EatInOrderRestaurant createEatInOrder(EatInOrderRestaurant eatInOrder); + EatInOrderRestaurant getEatInOrderById(String id); + EatInOrderRestaurant updateEatInOrder(String id, EatInOrderRestaurant eatInOrderDetails); + boolean deleteEatInOrder(String id); + long countEatInOrders(); +} diff --git a/src/main/java/dev/example/restaurantManager/service/EatInOrderServiceImpl.java b/src/main/java/dev/example/restaurantManager/service/EatInOrderServiceImpl.java new file mode 100644 index 0000000..0f62f01 --- /dev/null +++ b/src/main/java/dev/example/restaurantManager/service/EatInOrderServiceImpl.java @@ -0,0 +1,51 @@ +package dev.example.restaurantManager.service; + +import dev.example.restaurantManager.model.EatInOrderRestaurant; +import dev.example.restaurantManager.repository.EatInOrderRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class EatInOrderServiceImpl implements EatInOrderService{ + + @Autowired + private EatInOrderRepository eatInOrderRepository; + + @Override + public List getAllEatInOrders() { + return eatInOrderRepository.findAll(); + } + + @Override + public EatInOrderRestaurant createEatInOrder(EatInOrderRestaurant eatInOrder) { + return eatInOrderRepository.save(eatInOrder); + } + + @Override + public EatInOrderRestaurant getEatInOrderById(String id) { + return eatInOrderRepository.findById(id).orElse(null); + } + + @Override + public EatInOrderRestaurant updateEatInOrder(String id, EatInOrderRestaurant eatInOrderDetails) { + EatInOrderRestaurant eatInOrder = getEatInOrderById(id); + if(eatInOrder== null){ + return null; + } + return eatInOrderRepository.save(eatInOrderDetails); + } + + @Override + public boolean deleteEatInOrder(String id) { + EatInOrderRestaurant eatInOrder = getEatInOrderById(id); + eatInOrderRepository.deleteById(id); + return eatInOrder != null; + } + + @Override + public long countEatInOrders() { + return eatInOrderRepository.count(); + } +} From cde7e274f8dd75dace5973635f2a28e90c0bf60b Mon Sep 17 00:00:00 2001 From: jc-programs Date: Wed, 23 Oct 2024 19:06:22 +0200 Subject: [PATCH 08/10] TableService y TableServiceImpl --- .../service/TableService.java | 14 +++++ .../service/TableServiceImpl.java | 54 +++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 src/main/java/dev/example/restaurantManager/service/TableService.java create mode 100644 src/main/java/dev/example/restaurantManager/service/TableServiceImpl.java diff --git a/src/main/java/dev/example/restaurantManager/service/TableService.java b/src/main/java/dev/example/restaurantManager/service/TableService.java new file mode 100644 index 0000000..68e3b7e --- /dev/null +++ b/src/main/java/dev/example/restaurantManager/service/TableService.java @@ -0,0 +1,14 @@ +package dev.example.restaurantManager.service; + +import dev.example.restaurantManager.model.TableRestaurant; + +import java.util.List; + +public interface TableService { + List getAllTables(); + TableRestaurant createTable(TableRestaurant table); + TableRestaurant getTableById(String id); + TableRestaurant updateTable(String id, TableRestaurant tableDetails); + boolean deleteTable(String id); + long countTables(); +} diff --git a/src/main/java/dev/example/restaurantManager/service/TableServiceImpl.java b/src/main/java/dev/example/restaurantManager/service/TableServiceImpl.java new file mode 100644 index 0000000..7d103ec --- /dev/null +++ b/src/main/java/dev/example/restaurantManager/service/TableServiceImpl.java @@ -0,0 +1,54 @@ +package dev.example.restaurantManager.service; + +import dev.example.restaurantManager.model.TableRestaurant; +import dev.example.restaurantManager.repository.TableRestaurantRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class TableServiceImpl implements TableService{ + + @Autowired + private TableRestaurantRepository tableRepository; + + @Override + public List getAllTables() { + return tableRepository.findAll(); + } + + @Override + public TableRestaurant createTable(TableRestaurant table) { + return tableRepository.save(table); + } + + @Override + public TableRestaurant getTableById(String id) { + return tableRepository.findById(id).orElse(null); + } + + @Override + public TableRestaurant updateTable(String id, TableRestaurant tableDetails) { + TableRestaurant table = getTableById(id); + if(table== null) { + return null; + } + return tableRepository.save(tableDetails); + } + + @Override + public boolean deleteTable(String id) { + TableRestaurant table = getTableById(id); + if(table== null) { + return false; + } + tableRepository.deleteById(id); + return true; + } + + @Override + public long countTables() { + return tableRepository.count(); + } +} From bed61c954054fb3811ff2128b65e29620261b931 Mon Sep 17 00:00:00 2001 From: jc-programs Date: Wed, 23 Oct 2024 19:13:30 +0200 Subject: [PATCH 09/10] TableController --- .../controller/TableController.java | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 src/main/java/dev/example/restaurantManager/controller/TableController.java diff --git a/src/main/java/dev/example/restaurantManager/controller/TableController.java b/src/main/java/dev/example/restaurantManager/controller/TableController.java new file mode 100644 index 0000000..81050aa --- /dev/null +++ b/src/main/java/dev/example/restaurantManager/controller/TableController.java @@ -0,0 +1,87 @@ +package dev.example.restaurantManager.controller; + +import dev.example.restaurantManager.model.TableRestaurant; +import dev.example.restaurantManager.service.TableService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +@RequestMapping("/api/v1/table") +@RestController +public class TableController { + + @Autowired + private TableService tableService; + + + // manage request by ResponseEntity with all tables + @GetMapping("/allTables") + public ResponseEntity> getAllTables( ) { + List tables = tableService.getAllTables(); + HttpHeaders headers = getCommonHeaders("Get all tables"); + + return tables != null && !tables.isEmpty() + ? new ResponseEntity<>(tables, headers, HttpStatus.OK) + : new ResponseEntity<>(headers, HttpStatus.NOT_FOUND); + } + + @PostMapping + public ResponseEntity createTable(@RequestBody TableRestaurant table) { + TableRestaurant createdTable = tableService.createTable(table); + HttpHeaders headers = getCommonHeaders("Create a new table"); + + return createdTable != null + ? new ResponseEntity<>(createdTable, headers, HttpStatus.CREATED) + : new ResponseEntity<>(headers, HttpStatus.BAD_REQUEST); + } + + @PutMapping("/{id}") + public ResponseEntity updateTable(@PathVariable String id, @RequestBody TableRestaurant tableDetails) { + TableRestaurant updatedTable = tableService.updateTable(id, tableDetails); + HttpHeaders headers = getCommonHeaders("Update a table"); + + return updatedTable != null + ? new ResponseEntity<>(updatedTable, headers, HttpStatus.OK) + : new ResponseEntity<>(headers, HttpStatus.NOT_FOUND); + } + + @DeleteMapping("/{id}") + public ResponseEntity deleteTable(@PathVariable String id) { + boolean deleted = tableService.deleteTable(id); + HttpHeaders headers = getCommonHeaders("Delete a table"); + headers.add("deleted", String.valueOf(deleted)); + + + return deleted + ? new ResponseEntity<>(headers, HttpStatus.NO_CONTENT) + : new ResponseEntity<>(headers, HttpStatus.NOT_FOUND); + } + + @GetMapping("/{id}") + public ResponseEntity getTableById(@PathVariable String id) { + TableRestaurant table = tableService.getTableById(id); + HttpHeaders headers = getCommonHeaders("Get a table by Id"); + + return table != null + ? new ResponseEntity<>(table, headers, HttpStatus.OK) + : new ResponseEntity<>(headers, HttpStatus.NOT_FOUND); + } + + private HttpHeaders getCommonHeaders(String description) { + HttpHeaders headers = new HttpHeaders(); + headers.add("desc", description); + headers.add("content-type", "application/json"); + headers.add("date", new Date().toString()); + headers.add("server", "H2 Database"); + headers.add("version", "1.0.0"); + headers.add("table-count", String.valueOf(tableService.countTables())); + headers.add("object", "tables"); + return headers; + } + +} From 291553395ee2e2a2b2fb91c06a29e25f5c2c9368 Mon Sep 17 00:00:00 2001 From: jc-programs Date: Wed, 23 Oct 2024 19:23:52 +0200 Subject: [PATCH 10/10] EatInOrderController --- .../controller/EatInOrderController.java | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 src/main/java/dev/example/restaurantManager/controller/EatInOrderController.java diff --git a/src/main/java/dev/example/restaurantManager/controller/EatInOrderController.java b/src/main/java/dev/example/restaurantManager/controller/EatInOrderController.java new file mode 100644 index 0000000..22c98e9 --- /dev/null +++ b/src/main/java/dev/example/restaurantManager/controller/EatInOrderController.java @@ -0,0 +1,89 @@ +package dev.example.restaurantManager.controller; + +import dev.example.restaurantManager.model.EatInOrderRestaurant; +import dev.example.restaurantManager.service.EatInOrderService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +@RequestMapping("/api/v1/eatinorder") +@RestController +public class EatInOrderController { + + @Autowired + private EatInOrderService eatInOrderService; + + + // manage request by ResponseEntity with all eatInOrders + @GetMapping("/allEatInOrders") + public ResponseEntity> getAllEatInOrders( ) { + List eatInOrders = eatInOrderService.getAllEatInOrders(); + HttpHeaders headers = getCommonHeaders("Get all eatInOrders"); + + return eatInOrders != null && !eatInOrders.isEmpty() + ? new ResponseEntity<>(eatInOrders, headers, HttpStatus.OK) + : new ResponseEntity<>(headers, HttpStatus.NOT_FOUND); + } + + @PostMapping + public ResponseEntity createEatInOrder(@RequestBody EatInOrderRestaurant eatInOrder) { + EatInOrderRestaurant createdEatInOrder = eatInOrderService.createEatInOrder(eatInOrder); + HttpHeaders headers = getCommonHeaders("Create a new eatInOrder"); + + return createdEatInOrder != null + ? new ResponseEntity<>(createdEatInOrder, headers, HttpStatus.CREATED) + : new ResponseEntity<>(headers, HttpStatus.BAD_REQUEST); + } + + @PutMapping("/{id}") + public ResponseEntity updateEatInOrder(@PathVariable String id, @RequestBody EatInOrderRestaurant eatInOrderDetails) { + EatInOrderRestaurant updatedEatInOrder = eatInOrderService.updateEatInOrder(id, eatInOrderDetails); + HttpHeaders headers = getCommonHeaders("Update a eatInOrder"); + + return updatedEatInOrder != null + ? new ResponseEntity<>(updatedEatInOrder, headers, HttpStatus.OK) + : new ResponseEntity<>(headers, HttpStatus.NOT_FOUND); + } + + @DeleteMapping("/{id}") + public ResponseEntity deleteEatInOrder(@PathVariable String id) { + boolean deleted = eatInOrderService.deleteEatInOrder(id); + HttpHeaders headers = getCommonHeaders("Delete a eatInOrder"); + headers.add("deleted", String.valueOf(deleted)); + + + return deleted + ? new ResponseEntity<>(headers, HttpStatus.NO_CONTENT) + : new ResponseEntity<>(headers, HttpStatus.NOT_FOUND); + } + + @GetMapping("/{id}") + public ResponseEntity getEatInOrderById(@PathVariable String id) { + EatInOrderRestaurant eatInOrder = eatInOrderService.getEatInOrderById(id); + HttpHeaders headers = getCommonHeaders("Get a eatInOrder by Id"); + + return eatInOrder != null + ? new ResponseEntity<>(eatInOrder, headers, HttpStatus.OK) + : new ResponseEntity<>(headers, HttpStatus.NOT_FOUND); + } + + private HttpHeaders getCommonHeaders(String description) { + HttpHeaders headers = new HttpHeaders(); + headers.add("desc", description); + headers.add("content-type", "application/json"); + headers.add("date", new Date().toString()); + headers.add("server", "H2 Database"); + headers.add("version", "1.0.0"); + headers.add("eatinorders-count", String.valueOf(eatInOrderService.countEatInOrders())); + headers.add("object", "eatinorder"); + return headers; + } + + + +}