diff --git a/QorderWS/src/main/java/com/qorder/qorderws/dto/order/OrderViewDTO.java b/QorderWS/src/main/java/com/qorder/qorderws/dto/order/OrderViewDTO.java index 95e4507..9d4e285 100644 --- a/QorderWS/src/main/java/com/qorder/qorderws/dto/order/OrderViewDTO.java +++ b/QorderWS/src/main/java/com/qorder/qorderws/dto/order/OrderViewDTO.java @@ -11,6 +11,8 @@ public class OrderViewDTO { private String dateTime; + private String totalPrice; + private List orderedProducts = new ArrayList(); public void setId(Long id) { @@ -49,4 +51,14 @@ public void add(ProductHolderDTO productHolderDTO) { this.orderedProducts.add(productHolderDTO); } + public String getTotalPrice() { + return totalPrice; + } + + public void setTotalPrice(String totalPrice) { + this.totalPrice = totalPrice; + } + + + } diff --git a/QorderWS/src/main/java/com/qorder/qorderws/mapper/OrderToOrderViewDTOMapper.java b/QorderWS/src/main/java/com/qorder/qorderws/mapper/OrderToOrderViewDTOMapper.java index 9558771..38424a3 100644 --- a/QorderWS/src/main/java/com/qorder/qorderws/mapper/OrderToOrderViewDTOMapper.java +++ b/QorderWS/src/main/java/com/qorder/qorderws/mapper/OrderToOrderViewDTOMapper.java @@ -12,6 +12,7 @@ public OrderViewDTO map(Order source, OrderViewDTO target) { target.setId(source.getId()); target.setTableNumber(source.getTableNumber()); target.setDateTime(source.getDateTime()); + target.setTotalPrice(source.getTotalPrice().toString()); for(ProductHolder productHolder : source.getOrderList()) { ProductHolderDTO productHolderDTO = new ProductHolderToProductHolderDTOMapper().map(productHolder, new ProductHolderDTO()); diff --git a/QorderWS/src/main/java/com/qorder/qorderws/model/order/Order.java b/QorderWS/src/main/java/com/qorder/qorderws/model/order/Order.java index 96eb22c..2436f2d 100644 --- a/QorderWS/src/main/java/com/qorder/qorderws/model/order/Order.java +++ b/QorderWS/src/main/java/com/qorder/qorderws/model/order/Order.java @@ -1,5 +1,6 @@ package com.qorder.qorderws.model.order; +import java.math.BigDecimal; import java.text.DateFormat; import java.util.ArrayList; import java.util.Date; @@ -44,6 +45,9 @@ public class Order { @ManyToOne(targetEntity = Business.class) @JoinColumn(name = "BUSINESS_ID") private Business business; + + @Column(name = "TOTAL_PRICE") + private BigDecimal totalPrice = new BigDecimal(0); public long getId() { return id; @@ -89,4 +93,18 @@ public void add(ProductHolder productHolder) { orderList.add(productHolder); } + public BigDecimal getTotalPrice() { + for(ProductHolder productHolder : orderList) + { + totalPrice = totalPrice.add(productHolder.getProduct().getPrice()); + } + return totalPrice; + } + + public void setTotalPrice(BigDecimal totalPrice) { + this.totalPrice = totalPrice; + } + + + } diff --git a/QorderWS/src/main/java/com/qorder/qorderws/model/order/ProductHolder.java b/QorderWS/src/main/java/com/qorder/qorderws/model/order/ProductHolder.java index 86c02fe..20f8f64 100644 --- a/QorderWS/src/main/java/com/qorder/qorderws/model/order/ProductHolder.java +++ b/QorderWS/src/main/java/com/qorder/qorderws/model/order/ProductHolder.java @@ -47,5 +47,35 @@ public void setNotes(String notes) { this.notes = notes; } - + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((notes == null) ? 0 : notes.hashCode()); + result = prime * result + ((product == null) ? 0 : product.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + ProductHolder other = (ProductHolder) obj; + if (notes == null) { + if (other.notes != null) + return false; + } else if (!notes.equals(other.notes)) + return false; + if (product == null) { + if (other.product != null) + return false; + } else if (!product.equals(other.product)) + return false; + return true; + } } diff --git a/QorderWS/src/main/java/com/qorder/qorderws/model/product/Product.java b/QorderWS/src/main/java/com/qorder/qorderws/model/product/Product.java index ac566bb..40a6011 100644 --- a/QorderWS/src/main/java/com/qorder/qorderws/model/product/Product.java +++ b/QorderWS/src/main/java/com/qorder/qorderws/model/product/Product.java @@ -22,10 +22,10 @@ public class Product { @GeneratedValue @Column(name = "PRODUCT_ID") private long id; - + @Column(name = "NAME") private String name; - + @Column(name = "PRICE") private BigDecimal price; @@ -79,4 +79,41 @@ public void addDescription(String description) { this.descriptions.add(description); } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + + ((descriptions == null) ? 0 : descriptions.hashCode()); + result = prime * result + ((name == null) ? 0 : name.hashCode()); + result = prime * result + ((price == null) ? 0 : price.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Product other = (Product) obj; + if (descriptions == null) { + if (other.descriptions != null) + return false; + } else if (!descriptions.equals(other.descriptions)) + return false; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + if (price == null) { + if (other.price != null) + return false; + } else if (!price.equals(other.price)) + return false; + return true; + } } diff --git a/QorderWS/src/test/java/com/qorder/qorderws/entities/AllEntitiesEqualityTests.java b/QorderWS/src/test/java/com/qorder/qorderws/entities/AllEntitiesEqualityTests.java new file mode 100644 index 0000000..6b13da4 --- /dev/null +++ b/QorderWS/src/test/java/com/qorder/qorderws/entities/AllEntitiesEqualityTests.java @@ -0,0 +1,11 @@ +package com.qorder.qorderws.entities; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; + +@RunWith(Suite.class) +@SuiteClasses({ ProductEqualityTest.class, ProductHolderEqualityTest.class }) +public class AllEntitiesEqualityTests { + +} diff --git a/QorderWS/src/test/java/com/qorder/qorderws/entities/ProductEqualityTest.java b/QorderWS/src/test/java/com/qorder/qorderws/entities/ProductEqualityTest.java new file mode 100644 index 0000000..ca2b03f --- /dev/null +++ b/QorderWS/src/test/java/com/qorder/qorderws/entities/ProductEqualityTest.java @@ -0,0 +1,161 @@ +package com.qorder.qorderws.entities; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.math.BigDecimal; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import com.qorder.qorderws.model.product.Product; + +public class ProductEqualityTest { + + private Product product1; + + private Product product2; + + @Before + public void setUp() throws Exception { + product1 = new Product(); + product2 = new Product(); + } + + @After + public void tearDown() throws Exception { + product1 = null; + product2 = null; + } + + @Test + public void SuccessfulProductEqualitytest() { + System.out.println("Successful product equality test"); + + product1.setName("ProductName"); + product1.setPrice(BigDecimal.valueOf(1.1)); + product1.addDescription("Description 1"); + product1.addDescription("Description 2"); + + product2.setName("ProductName"); + product2.setPrice(BigDecimal.valueOf(1.1)); + product2.addDescription("Description 1"); + product2.addDescription("Description 2"); + + boolean equalityResult = product1.equals(product2); + assertTrue(equalityResult); + } + + @Test + public void FailProductEqualitytestByName() { + System.out.println("Failed product equality test by name"); + + product1.setName("ProductName"); + product1.setPrice(BigDecimal.valueOf(1.1)); + product1.addDescription("Description 1"); + product1.addDescription("Description 2"); + + + product2.setName("OtherProductName"); + product2.setPrice(BigDecimal.valueOf(1.1)); + product2.addDescription("Description 1"); + product2.addDescription("Description 2"); + + boolean equalityResult = product1.equals(product2); + assertFalse(equalityResult); + } + + @Test + public void FailProductEqualitytestByPrice() { + System.out.println("Failed product equality test by price"); + + product1.setName("ProductName"); + product1.setPrice(BigDecimal.valueOf(1.1)); + product1.addDescription("Description 1"); + product1.addDescription("Description 2"); + + product2.setName("ProductName"); + product2.setPrice(BigDecimal.valueOf(2.1)); + product2.addDescription("Description 1"); + product2.addDescription("Description 2"); + + boolean equalityResult = product1.equals(product2); + assertFalse(equalityResult); + } + + @Test + public void FailProductEqualitytestByOneMoreDescription() { + System.out.println("Failed product equality test by one more description"); + + product1.setName("ProductName"); + product1.setPrice(BigDecimal.valueOf(1.1)); + product1.addDescription("Description 1"); + product1.addDescription("Description 2"); + product1.addDescription("Description 3"); + + product2.setName("ProductName"); + product2.setPrice(BigDecimal.valueOf(1.1)); + product2.addDescription("Description 1"); + product2.addDescription("Description 2"); + + boolean equalityResult = product1.equals(product2); + assertFalse(equalityResult); + } + + @Test + public void FailProductEqualitytestByOneLessDescription() { + System.out.println("Failed product equality test by one less description"); + + product1.setName("ProductName"); + product1.setPrice(BigDecimal.valueOf(1.1)); + product1.addDescription("Description 1"); + + product2.setName("ProductName"); + product2.setPrice(BigDecimal.valueOf(1.1)); + product2.addDescription("Description 1"); + product2.addDescription("Description 2"); + + boolean equalityResult = product1.equals(product2); + assertFalse(equalityResult); + } + + @Test + public void FailProductEqualitytestByNullProductName() { + System.out.println("Failed product equality test by one less description"); + + product1.setName(null); + product1.setPrice(BigDecimal.valueOf(1.1)); + product1.addDescription("Description 1"); + product1.addDescription("Description 2"); + + product2.setName("ProductName"); + product2.setPrice(BigDecimal.valueOf(1.1)); + product2.addDescription("Description 1"); + product2.addDescription("Description 2"); + + boolean equalityResult = product1.equals(product2); + assertFalse(equalityResult); + } + + @Test + public void FailProductEqualitytestByNullDescriptionList() { + System.out.println("Failed product equality test by one less description"); + + product1.setName(null); + product1.setPrice(BigDecimal.valueOf(1.1)); + product1.setDescriptions(null); + + product2.setName("ProductName"); + product2.setPrice(BigDecimal.valueOf(1.1)); + product2.addDescription("Description 1"); + product2.addDescription("Description 2"); + + boolean equalityResult = product1.equals(product2); + assertFalse(equalityResult); + } + + + + +} diff --git a/QorderWS/src/test/java/com/qorder/qorderws/entities/ProductHolderEqualityTest.java b/QorderWS/src/test/java/com/qorder/qorderws/entities/ProductHolderEqualityTest.java new file mode 100644 index 0000000..adca7f2 --- /dev/null +++ b/QorderWS/src/test/java/com/qorder/qorderws/entities/ProductHolderEqualityTest.java @@ -0,0 +1,134 @@ +package com.qorder.qorderws.entities; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.math.BigDecimal; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import com.qorder.qorderws.model.order.ProductHolder; +import com.qorder.qorderws.model.product.Product; + +public class ProductHolderEqualityTest { + + private ProductHolder productHolder1; + private ProductHolder productHolder2; + + @Before + public void setUp() throws Exception { + productHolder1 = new ProductHolder(); + productHolder2 = new ProductHolder(); + } + + @After + public void tearDown() throws Exception { + productHolder1 = null; + productHolder2 = null; + } + + @Test + public void SuccessfulProductHolderEqualitytest() { + System.out.println("Successful productHolder equality test"); + + productHolder1.setNotes("Customer notes"); + productHolder2.setNotes("Customer notes"); + + Product product = new Product(); + product.addDescription("Product description"); + product.setName("MyProduct"); + product.setPrice(BigDecimal.valueOf(1.99)); + + productHolder1.setProduct(product); + productHolder2.setProduct(product); + + boolean equalityResult = productHolder1.equals(productHolder2); + assertTrue(equalityResult); + } + + @Test + public void FailedProductHolderEqualitytestByDifNotes() { + System.out.println("Failed productHolder equality test by note difference"); + + productHolder1.setNotes("Customer notes"); + productHolder2.setNotes("Other customer notes"); + + Product product = new Product(); + product.addDescription("Product description"); + product.setName("MyProduct"); + product.setPrice(BigDecimal.valueOf(1.99)); + + productHolder1.setProduct(product); + productHolder2.setProduct(product); + + boolean equalityResult = productHolder1.equals(productHolder2); + assertFalse(equalityResult); + } + + @Test + public void FailedProductHolderEqualitytestByDifProduct() { + System.out.println("Failed productHolder equality test by product difference"); + + productHolder1.setNotes("Customer notes"); + productHolder2.setNotes("Customer notes"); + + Product product1 = new Product(); + product1.setName("MyProduct 1"); + product1.addDescription("Product description"); + product1.setPrice(BigDecimal.valueOf(1.99)); + + Product product2 = new Product(); + product2.setName("MyProduct 2"); + product2.addDescription("Product description"); + product2.setPrice(BigDecimal.valueOf(2.99)); + + productHolder1.setProduct(product1); + productHolder2.setProduct(product2); + + boolean equalityResult = productHolder1.equals(productHolder2); + assertFalse(equalityResult); + } + + @Test + public void FailedProductHolderEqualitytestByNullNote() { + System.out.println("Failed productHolder equality test by null note"); + + productHolder1.setNotes(null); + productHolder2.setNotes("Customer notes"); + + Product product = new Product(); + product.addDescription("Product description"); + product.setName("MyProduct"); + product.setPrice(BigDecimal.valueOf(1.99)); + + productHolder1.setProduct(product); + productHolder2.setProduct(product); + + boolean equalityResult = productHolder1.equals(productHolder2); + assertFalse(equalityResult); + } + + @Test + public void FailedProductHolderEqualitytestByNullProduct() { + System.out.println("Failed productHolder equality test by null product"); + + productHolder1.setNotes("Customer notes"); + productHolder2.setNotes("Customer notes"); + + Product product1 = new Product(); + product1.setName("MyProduct 1"); + product1.addDescription("Product description"); + product1.setPrice(BigDecimal.valueOf(1.99)); + + Product product2 = null; + + productHolder1.setProduct(product1); + productHolder2.setProduct(product2); + + boolean equalityResult = productHolder1.equals(productHolder2); + assertFalse(equalityResult); + } + +}