forked from SeungwonVictorOh/RefactoringB1
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Rental.java
88 lines (74 loc) · 1.67 KB
/
Rental.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import java.util.Date;
public class Rental {
private Video video ;
private int status ; // 0 for Rented, 1 for Returned
private Date rentDate ;
private Date returnDate ;
public Rental(Video video) {
this.video = video ;
status = 0 ;
rentDate = new Date() ;
}
public Video getVideo() {
return video;
}
public void setVideo(Video video) {
this.video = video;
}
public int getStatus() {
return status;
}
public void returnVideo() {
if ( status == 1 ) {
this.status = 1;
returnDate = new Date() ;
}
}
public Date getRentDate() {
return rentDate;
}
public void setRentDate(Date rentDate) {
this.rentDate = rentDate;
}
public Date getReturnDate() {
return returnDate;
}
public void setReturnDate(Date returnDate) {
this.returnDate = returnDate;
}
public int getDaysRentedLimit() {
int limit = 0 ;
if ( getRentedDays() <= 2) return limit ;
// switch
switch ( video.getVideoType() ) {
case Video.VHS: limit = 5 ; break ;
case Video.CD: limit = 3 ; break ;
case Video.DVD: limit = 2 ; break ;
}
return limit ;
}
public int getRentedDays() {
int daysRented;
long diff;
if (getStatus() == 1) {
diff = returnDate.getTime() - rentDate.getTime();
} else {
diff = new Date().getTime() - rentDate.getTime();
}
daysRented = (int) (diff / (1000 * 60 * 60 * 24)) + 1;
return daysRented;
}
public double calcCharge(double eachCharge, int daysRented) {
switch (getVideo().getPriceCode()) {
case Video.REGULAR:
eachCharge += 2;
if (daysRented > 2)
eachCharge += (daysRented - 2) * 1.5;
break;
case Video.NEW_RELEASE:
eachCharge = daysRented * 3;
break;
}
return eachCharge;
}
}