fix delivery server crashing when tracking id not found

This commit is contained in:
CodeSteak 2020-06-21 16:13:48 +02:00
parent deaf283a98
commit c1a0ecdcf3
3 changed files with 32 additions and 29 deletions

View File

@ -7,7 +7,6 @@ import org.hso.ecommerce.supplier.data.ReturnStatus;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -20,14 +19,19 @@ public class RequestController {
public String supplier(HttpServletResponse response, HttpServletRequest request, @RequestBody Delivery delivery) { public String supplier(HttpServletResponse response, HttpServletRequest request, @RequestBody Delivery delivery) {
DeliveryManager.getInstance().add(delivery); DeliveryManager.getInstance().add(delivery);
return delivery.getUuid().toString(); return delivery.getUuid();
} }
@GetMapping(value = "/status", produces = MediaType.APPLICATION_JSON_VALUE) @GetMapping(value = "/status", produces = MediaType.APPLICATION_JSON_VALUE)
public ReturnStatus searchArticles(@RequestParam(value = "trackingID") String trackingID, HttpServletRequest request, HttpServletResponse response) { public ReturnStatus searchArticles(@RequestParam(value = "trackingID") String trackingID, HttpServletRequest request, HttpServletResponse response) {
Delivery delivery = DeliveryManager.getInstance().getDeliveryByeID(trackingID); Delivery delivery = DeliveryManager.getInstance().getDeliveryByID(trackingID);
if (delivery == null) {
Delivery lostDelivery = Delivery.lostDelivery(trackingID);
DeliveryManager.getInstance().add(lostDelivery);
delivery = lostDelivery;
}
return new ReturnStatus(delivery.getStatus(),delivery.getEstimatedArrival()); return new ReturnStatus(delivery.getStatus(), delivery.getEstimatedArrival());
} }
} }

View File

@ -15,31 +15,34 @@ public class Delivery {
private String address; private String address;
private String estimatedArrival; private String estimatedArrival;
private Date creationTime; private Date creationTime;
private UUID uuid; private String uuid;
public Delivery(String name, String address) public Delivery(String name, String address) {
{
this.name = name; this.name = name;
this.address = address; this.address = address;
this.uuid = UUID.randomUUID(); this.uuid = UUID.randomUUID().toString();
this.creationTime = new Date(); this.creationTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy"); SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
this.estimatedArrival = formatter.format(addDays((Date)this.creationTime.clone(),1)); this.estimatedArrival = formatter.format(addDays((Date) this.creationTime.clone(), 1));
} }
public static Delivery lostDelivery(String uuid) {
Delivery delivery = new Delivery("", "");
delivery.uuid = uuid;
return delivery;
}
public String getStatus() public String getStatus() {
{
Date now = new Date(); Date now = new Date();
Long timeNow = now.getTime(); long timeNow = now.getTime();
Long creationTime = this.creationTime.getTime(); long creationTime = this.creationTime.getTime();
Long diff = timeNow - creationTime; long diff = timeNow - creationTime;
double hour = (((diff / 1000.0) / 3600.0)); double hour = (((diff / 1000.0) / 3600.0));
for (int i = 0; i < timeBorder.length; i++) { for (int i = 0; i < timeBorder.length; i++) {
if(hour < timeBorder[i]) if (hour < timeBorder[i])
return states[i]; return states[i];
} }
@ -59,7 +62,7 @@ public class Delivery {
return cal.getTime(); return cal.getTime();
} }
public UUID getUuid() { public String getUuid() {
return uuid; return uuid;
} }

View File

@ -1,20 +1,18 @@
package org.hso.ecommerce.supplier.data; package org.hso.ecommerce.supplier.data;
import java.util.ArrayList; import java.util.HashMap;
import java.util.List;
import java.util.UUID;
public class DeliveryManager { public class DeliveryManager {
private List<Delivery> deliveryList; private HashMap<String, Delivery> deliveryList;
private static DeliveryManager deliveryManager; private static DeliveryManager deliveryManager;
private DeliveryManager() private DeliveryManager()
{ {
deliveryList = new ArrayList<>(); deliveryList = new HashMap<>();
} }
public static DeliveryManager getInstance () { public static DeliveryManager getInstance() {
if (DeliveryManager.deliveryManager == null) { if (DeliveryManager.deliveryManager == null) {
DeliveryManager.deliveryManager = new DeliveryManager(); DeliveryManager.deliveryManager = new DeliveryManager();
@ -22,13 +20,11 @@ public class DeliveryManager {
return DeliveryManager.deliveryManager; return DeliveryManager.deliveryManager;
} }
public boolean add(Delivery delivery) public void add(Delivery delivery) {
{ deliveryList.put(delivery.getUuid(), delivery);
return deliveryList.add(delivery);
} }
public Delivery getDeliveryByeID(String uuid) public Delivery getDeliveryByID(String uuid) {
{ return deliveryList.getOrDefault(uuid, null);
return deliveryList.parallelStream().filter(d -> d.getUuid().equals(UUID.fromString(uuid))).findAny().get();
} }
} }