2020-05-19 20:38:22 +02:00
package org.hso.ecommerce.supplier.data ;
import java.text.SimpleDateFormat ;
import java.util.Calendar ;
import java.util.Date ;
import java.util.UUID ;
public class Delivery {
2020-06-21 18:25:33 +02:00
private String [ ] states = { " Bestellung eingegangen " , " Bestellung auf dem Weg " , " Lieferung erfolgreich " } ;
private int [ ] timeBorder = { 4 , 24 } ;
2020-05-19 20:38:22 +02:00
private String name ;
private String address ;
2020-06-21 18:25:33 +02:00
// Why is this a string and creationTime a Date?!
2020-05-19 20:38:22 +02:00
private String estimatedArrival ;
2020-06-21 18:25:33 +02:00
2020-05-19 20:38:22 +02:00
private Date creationTime ;
2020-06-21 16:13:48 +02:00
private String uuid ;
2020-05-19 20:38:22 +02:00
2020-06-21 16:13:48 +02:00
public Delivery ( String name , String address ) {
2020-05-19 20:38:22 +02:00
this . name = name ;
this . address = address ;
2020-06-21 16:13:48 +02:00
this . uuid = UUID . randomUUID ( ) . toString ( ) ;
2020-05-19 20:38:22 +02:00
this . creationTime = new Date ( ) ;
SimpleDateFormat formatter = new SimpleDateFormat ( " dd-MM-yyyy " ) ;
2020-06-21 16:13:48 +02:00
this . estimatedArrival = formatter . format ( addDays ( ( Date ) this . creationTime . clone ( ) , 1 ) ) ;
2020-05-19 20:38:22 +02:00
}
2020-06-21 16:13:48 +02:00
public static Delivery lostDelivery ( String uuid ) {
Delivery delivery = new Delivery ( " " , " " ) ;
delivery . uuid = uuid ;
2020-06-21 18:25:33 +02:00
delivery . creationTime = addDays ( new Date ( ) , - 1 ) ;
SimpleDateFormat formatter = new SimpleDateFormat ( " dd-MM-yyyy " ) ;
delivery . estimatedArrival = formatter . format ( addDays ( ( Date ) delivery . creationTime . clone ( ) , 1 ) ) ;
2020-06-21 16:13:48 +02:00
return delivery ;
}
2020-05-19 20:38:22 +02:00
2020-06-21 16:13:48 +02:00
public String getStatus ( ) {
2020-05-19 20:38:22 +02:00
Date now = new Date ( ) ;
2020-06-21 16:13:48 +02:00
long timeNow = now . getTime ( ) ;
long creationTime = this . creationTime . getTime ( ) ;
2020-05-19 20:38:22 +02:00
2020-06-21 18:25:33 +02:00
// Wow, that's how calculate date diffs.
2020-06-21 16:13:48 +02:00
long diff = timeNow - creationTime ;
2020-05-24 20:04:03 +02:00
double hour = ( ( ( diff / 1000 . 0 ) / 3600 . 0 ) ) ;
2020-05-19 20:38:22 +02:00
2020-06-21 16:13:48 +02:00
for ( int i = 0 ; i < timeBorder . length ; i + + ) {
2020-05-19 20:38:22 +02:00
2020-06-21 16:13:48 +02:00
if ( hour < timeBorder [ i ] )
2020-05-19 20:38:22 +02:00
return states [ i ] ;
}
return states [ timeBorder . length ] ;
}
public String getEstimatedArrival ( ) {
return estimatedArrival ;
}
2020-06-21 18:25:33 +02:00
private static Date addDays ( Date date , int days ) {
2020-05-19 20:38:22 +02:00
Calendar cal = Calendar . getInstance ( ) ;
cal . setTime ( date ) ;
cal . add ( Calendar . DATE , days ) ;
return cal . getTime ( ) ;
}
2020-06-21 16:13:48 +02:00
public String getUuid ( ) {
2020-05-19 20:38:22 +02:00
return uuid ;
}
public String getName ( ) {
return name ;
}
}