From 187656814eb6b16813a6fd983ef489a43e713a05 Mon Sep 17 00:00:00 2001 From: Philipp Schweizer Date: Thu, 18 Jun 2020 00:50:43 +0200 Subject: [PATCH] String Error -> Enum ErrorHandling Logic removed from model class --- .../action/user/CreateDeliveryData.java | 49 +++++++++++++++ .../ecommerce/api/RestServiceForDelivery.java | 13 ++-- .../ecommerce/controller/UserController.java | 3 +- .../customers/CustomerOrderController.java | 5 +- .../hso/ecommerce/uimodel/DeliveryData.java | 60 +++++++------------ .../ecommerce/uimodel/DeliveryDataEnum.java | 7 +++ .../templates/intern/customerOrders/id.html | 9 ++- .../intern/customerOrders/index.html | 4 +- .../templates/user/orders/index.html | 9 ++- 9 files changed, 105 insertions(+), 54 deletions(-) create mode 100644 prototype/src/main/java/org/hso/ecommerce/action/user/CreateDeliveryData.java create mode 100644 prototype/src/main/java/org/hso/ecommerce/uimodel/DeliveryDataEnum.java diff --git a/prototype/src/main/java/org/hso/ecommerce/action/user/CreateDeliveryData.java b/prototype/src/main/java/org/hso/ecommerce/action/user/CreateDeliveryData.java new file mode 100644 index 0000000..64dcef7 --- /dev/null +++ b/prototype/src/main/java/org/hso/ecommerce/action/user/CreateDeliveryData.java @@ -0,0 +1,49 @@ +package org.hso.ecommerce.action.user; + +import org.hso.ecommerce.api.RestServiceForDelivery; +import org.hso.ecommerce.entities.shop.CustomerOrder; +import org.hso.ecommerce.repos.shop.CustomerOrderRepository; +import org.hso.ecommerce.uimodel.DeliveryData; +import org.hso.ecommerce.uimodel.DeliveryDataEnum; + +import java.sql.Timestamp; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.UUID; + +public class CreateDeliveryData { + + public static DeliveryData getDeliveryDataFromCustomerOrder(CustomerOrder customerOrder, CustomerOrderRepository customerOrderRepository, RestServiceForDelivery restServiceForDelivery) + { + if(customerOrder.trackingId == null) + return new DeliveryData("", "", DeliveryDataEnum.NO_TRACKING_ID); + + if(customerOrder.deliveredAt == null) + { + DeliveryData deliveryData = restServiceForDelivery.getDeliveryData(UUID.fromString(customerOrder.trackingId)); + + + if(deliveryData.isDelivered()) + { + Calendar calendar = Calendar.getInstance(); + + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy"); + + try { + calendar.setTime(simpleDateFormat.parse(deliveryData.getEstimatedArrival())); + } catch (ParseException e) { + e.printStackTrace(); + } + + customerOrder.deliveredAt = new Timestamp(calendar.getTimeInMillis()); + customerOrderRepository.save(customerOrder); + } + + return deliveryData; + } + + SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy"); + return new DeliveryData("Lieferung erfolgreich", formatter.format(customerOrder.deliveredAt), DeliveryDataEnum.OK); + } +} diff --git a/prototype/src/main/java/org/hso/ecommerce/api/RestServiceForDelivery.java b/prototype/src/main/java/org/hso/ecommerce/api/RestServiceForDelivery.java index 573eb42..3d4f9ce 100644 --- a/prototype/src/main/java/org/hso/ecommerce/api/RestServiceForDelivery.java +++ b/prototype/src/main/java/org/hso/ecommerce/api/RestServiceForDelivery.java @@ -2,6 +2,7 @@ package org.hso.ecommerce.api; import org.hso.ecommerce.entities.shop.CustomerOrder; import org.hso.ecommerce.uimodel.DeliveryData; +import org.hso.ecommerce.uimodel.DeliveryDataEnum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.http.*; @@ -19,10 +20,12 @@ public class RestServiceForDelivery { @Autowired private final RestTemplateBuilder restTemplateBuilder = null; + private final String DELIVERY_IP_ADDRESS = "http://[::1]:8082"; + public String getDeliveryID(CustomerOrder customerOrder) throws ResourceAccessException { - String url = "http://[::1]:8082/newDelivery"; + String url = DELIVERY_IP_ADDRESS + "/newDelivery"; RestTemplate restTemplate = restTemplateBuilder.build(); @@ -48,7 +51,7 @@ public class RestServiceForDelivery { public DeliveryData getDeliveryData(UUID trackingID) { - String url = "http://[::1]:8082/status"; + String url = DELIVERY_IP_ADDRESS + "/status"; RestTemplate restTemplate = restTemplateBuilder.build(); @@ -68,13 +71,13 @@ public class RestServiceForDelivery { { return response.getBody(); } else { - return new DeliveryData("DHL-Server ist gerade nicht erreichbar","--:--:----"); + + return new DeliveryData("","",DeliveryDataEnum.NO_DATA); } } catch (ResourceAccessException e) { - return new DeliveryData("DHL-Server gerade nicht erreichbar","--:--:----"); + return new DeliveryData("","",DeliveryDataEnum.NO_DATA); } - } } diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java index 1b493dd..0855f0a 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java @@ -1,5 +1,6 @@ package org.hso.ecommerce.controller; +import org.hso.ecommerce.action.user.CreateDeliveryData; import org.hso.ecommerce.action.user.UpdateUserSettingsAction; import org.hso.ecommerce.api.RestServiceForDelivery; import org.hso.ecommerce.entities.shop.CustomerOrder; @@ -58,7 +59,7 @@ public class UserController { List orders = customerOrderRepository.getAllOrders(); Map customerOrderDeliveryDataMap = orders.stream(). - collect(Collectors.toMap(Function.identity(), c -> DeliveryData.getDeliveryDataFromCustomerOrder(c, customerOrderRepository, restServiceForDelivery))); + collect(Collectors.toMap(Function.identity(), c -> CreateDeliveryData.getDeliveryDataFromCustomerOrder(c, customerOrderRepository, restServiceForDelivery))); model.addAttribute("orderDeliveryDataMap", customerOrderDeliveryDataMap); diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/intern/customers/CustomerOrderController.java b/prototype/src/main/java/org/hso/ecommerce/controller/intern/customers/CustomerOrderController.java index 8a5087e..1ab17b9 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/intern/customers/CustomerOrderController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/intern/customers/CustomerOrderController.java @@ -1,5 +1,6 @@ package org.hso.ecommerce.controller.intern.customers; +import org.hso.ecommerce.action.user.CreateDeliveryData; import org.hso.ecommerce.api.RestServiceForDelivery; import org.hso.ecommerce.entities.shop.CustomerOrder; import org.hso.ecommerce.repos.shop.CustomerOrderRepository; @@ -30,7 +31,7 @@ public class CustomerOrderController { Map customerOrderDeliveryDataMap = orders.stream().collect (Collectors.toMap - (Function.identity(), c-> DeliveryData.getDeliveryDataFromCustomerOrder(c,customerOrderRepository,restServiceForDelivery))); + (Function.identity(), c-> CreateDeliveryData.getDeliveryDataFromCustomerOrder(c,customerOrderRepository,restServiceForDelivery))); model.addAttribute("orderDeliveryDataMap", customerOrderDeliveryDataMap); return "intern/customerOrders/index"; @@ -41,7 +42,7 @@ public class CustomerOrderController { @PathVariable("id") String id ) { CustomerOrder order = customerOrderRepository.findById(Long.parseLong(id)).get(); - DeliveryData deliveryData = DeliveryData.getDeliveryDataFromCustomerOrder(order, customerOrderRepository,restServiceForDelivery); + DeliveryData deliveryData = CreateDeliveryData.getDeliveryDataFromCustomerOrder(order, customerOrderRepository,restServiceForDelivery); model.addAttribute("order", order); model.addAttribute("deliveryData", deliveryData); diff --git a/prototype/src/main/java/org/hso/ecommerce/uimodel/DeliveryData.java b/prototype/src/main/java/org/hso/ecommerce/uimodel/DeliveryData.java index fd8b176..262ff1e 100644 --- a/prototype/src/main/java/org/hso/ecommerce/uimodel/DeliveryData.java +++ b/prototype/src/main/java/org/hso/ecommerce/uimodel/DeliveryData.java @@ -1,15 +1,6 @@ package org.hso.ecommerce.uimodel; import com.fasterxml.jackson.annotation.JsonCreator; -import org.hso.ecommerce.api.RestServiceForDelivery; -import org.hso.ecommerce.entities.shop.CustomerOrder; -import org.hso.ecommerce.repos.shop.CustomerOrderRepository; - -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.UUID; public class DeliveryData @@ -17,6 +8,8 @@ public class DeliveryData private final String status; + private final DeliveryDataEnum deliveryDataEnum; + private final String estimatedArrival; private boolean isDelivered; @@ -25,39 +18,15 @@ public class DeliveryData public DeliveryData(String status, String estimatedArrival) { this.status = status; this.estimatedArrival = estimatedArrival; + this.deliveryDataEnum = DeliveryDataEnum.OK; isDelivered = status.equals("Lieferung erfolgreich"); } - public static DeliveryData getDeliveryDataFromCustomerOrder(CustomerOrder customerOrder, CustomerOrderRepository customerOrderRepository, RestServiceForDelivery restServiceForDelivery) - { - if(customerOrder.trackingId == null) - return new DeliveryData("Bestellung wurde elektronisch angekündigt",""); - - if(customerOrder.deliveredAt == null) - { - DeliveryData deliveryData = restServiceForDelivery.getDeliveryData(UUID.fromString(customerOrder.trackingId)); - - if(deliveryData.isDelivered()) - { - Calendar calendar = Calendar.getInstance(); - - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy"); - - try { - calendar.setTime(simpleDateFormat.parse(deliveryData.getEstimatedArrival())); - } catch (ParseException e) { - e.printStackTrace(); - } - - customerOrder.deliveredAt = new Timestamp(calendar.getTimeInMillis()); - customerOrderRepository.save(customerOrder); - } - - return deliveryData; - } - - SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy"); - return new DeliveryData("Lieferung erfolgreich",formatter.format(customerOrder.deliveredAt)); + public DeliveryData(String status, String estimatedArrival, DeliveryDataEnum deliveryDataEnum) { + this.status = status; + this.estimatedArrival = estimatedArrival; + this.deliveryDataEnum = deliveryDataEnum; + isDelivered = status.equals("Lieferung erfolgreich"); } public boolean isDelivered() { @@ -71,5 +40,18 @@ public class DeliveryData public String getEstimatedArrival() { return estimatedArrival; } + + public boolean allOk() { + return deliveryDataEnum == DeliveryDataEnum.OK; + } + + public boolean noTrackingID() { + return deliveryDataEnum == DeliveryDataEnum.NO_TRACKING_ID; + } + + public boolean noData() { + return deliveryDataEnum == DeliveryDataEnum.NO_DATA; + } + } diff --git a/prototype/src/main/java/org/hso/ecommerce/uimodel/DeliveryDataEnum.java b/prototype/src/main/java/org/hso/ecommerce/uimodel/DeliveryDataEnum.java new file mode 100644 index 0000000..5029a73 --- /dev/null +++ b/prototype/src/main/java/org/hso/ecommerce/uimodel/DeliveryDataEnum.java @@ -0,0 +1,7 @@ +package org.hso.ecommerce.uimodel; + +public enum DeliveryDataEnum { + OK, + NO_TRACKING_ID, + NO_DATA +} diff --git a/prototype/src/main/resources/templates/intern/customerOrders/id.html b/prototype/src/main/resources/templates/intern/customerOrders/id.html index b718b7e..c64a04e 100644 --- a/prototype/src/main/resources/templates/intern/customerOrders/id.html +++ b/prototype/src/main/resources/templates/intern/customerOrders/id.html @@ -25,7 +25,7 @@
-

+

@@ -34,11 +34,14 @@ - + + + - + + diff --git a/prototype/src/main/resources/templates/intern/customerOrders/index.html b/prototype/src/main/resources/templates/intern/customerOrders/index.html index 6b98741..e682721 100644 --- a/prototype/src/main/resources/templates/intern/customerOrders/index.html +++ b/prototype/src/main/resources/templates/intern/customerOrders/index.html @@ -45,7 +45,9 @@ - + + +
LieferstatusBestellung wurde elektronisch angekündigtDHL-Server ist gerade nicht erreichbar
Vorraussichtliche Ankunft: Vorraussichtliche Ankunft: Vorraussichtliche Ankunft: --:--:---- Angekommen Ankunft:
Bestellung wurde elektronisch angekündigtDHL-Server ist gerade nicht erreichbar Details
diff --git a/prototype/src/main/resources/templates/user/orders/index.html b/prototype/src/main/resources/templates/user/orders/index.html index 5083f0b..a30f064 100644 --- a/prototype/src/main/resources/templates/user/orders/index.html +++ b/prototype/src/main/resources/templates/user/orders/index.html @@ -22,16 +22,19 @@
-

+

- + + + - + +
LieferstatusBestellung wurde elektronisch angekündigtDHL-Server ist gerade nicht erreichbar
Vorraussichtliche Ankunft: Vorraussichtliche Ankunft: Vorraussichtliche Ankunft: --:--:---- Angekommen Ankunft: