fix delivery server crashing when tracking id not found #106
@ -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,13 +19,18 @@ 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());
|
||||||
}
|
}
|
||||||
|
@ -15,26 +15,29 @@ 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++) {
|
||||||
@ -59,7 +62,7 @@ public class Delivery {
|
|||||||
return cal.getTime();
|
return cal.getTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID getUuid() {
|
public String getUuid() {
|
||||||
return uuid;
|
return uuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,17 +1,15 @@
|
|||||||
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() {
|
||||||
@ -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();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user