Skip to content

Commit fedaf23

Browse files
author
Pierre Levesque
committed
Pierre's changes #2
1 parent 3942744 commit fedaf23

1 file changed

Lines changed: 36 additions & 27 deletions

File tree

  • src/main/java/victor/training/cleancode/kata/videostore

src/main/java/victor/training/cleancode/kata/videostore/Customer.java

Lines changed: 36 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -23,45 +23,54 @@ public String statement() {
2323
// loop over each movie rental
2424
double totalDue = 0;
2525
for (Rental rental : rentals) {
26-
double balanceDue = 0;
27-
// determine amounts for every line
28-
int daysRented = rental.rentalDays();
29-
30-
Movie movie = rental.movie();
31-
switch ( movie.getCategory()) {
32-
case REGULAR:
33-
balanceDue += 2;
34-
if ( daysRented > 2)
35-
balanceDue += ( daysRented - 2) * 1.5;
36-
break;
37-
case NEW_RELEASE:
38-
balanceDue += daysRented * 3;
39-
break;
40-
case CHILDREN:
41-
balanceDue += 1.5;
42-
if ( daysRented > 3)
43-
balanceDue += ( daysRented - 3) * 1.5;
44-
break;
45-
}
4626

27+
double balanceDue = getBalanceDue(rental);
4728
// show figures line for this rental
48-
result += "\t" + movie.getTitle() + "\t" + balanceDue + "\n";
29+
result += "\t" + rental.movie().getTitle() + "\t" + balanceDue + "\n";
4930
totalDue += balanceDue;
5031
}
5132

33+
int frequentRenterPoints = getFrequentRenterPoints( rentals );
34+
// add footer lines
35+
result += "Amount owed is " + totalDue + "\n";
36+
result += "You earned " + frequentRenterPoints + " frequent renter points";
37+
return result;
38+
}
39+
40+
private double getBalanceDue( Rental rental )
41+
{
42+
double balanceDue = 0;
43+
int daysRented = rental.rentalDays();
44+
Movie movie = rental.movie();
45+
switch ( movie.getCategory()) {
46+
case REGULAR:
47+
balanceDue += 2;
48+
if ( daysRented > 2)
49+
balanceDue += ( daysRented - 2) * 1.5;
50+
return balanceDue;
51+
case NEW_RELEASE:
52+
balanceDue += daysRented * 3;
53+
return balanceDue;
54+
case CHILDREN:
55+
balanceDue += 1.5;
56+
if ( daysRented > 3)
57+
balanceDue += ( daysRented - 3) * 1.5;
58+
return balanceDue;
59+
}
60+
return balanceDue;
61+
}
62+
63+
private int getFrequentRenterPoints( List<Rental> rentals )
64+
{
5265
int frequentRenterPoints = 0;
5366
for (Rental rental : rentals) {
5467
Movie movie = rental.movie();
55-
int daysRented = rental.rentalDays();
5668
// add frequent renter points
5769
frequentRenterPoints++;
5870
// add bonus for a two day new release rental
59-
if ( movie.getCategory() == Category.NEW_RELEASE && daysRented > 1 )
71+
if ( movie.getCategory() == Category.NEW_RELEASE && rental.rentalDays() > 1 )
6072
frequentRenterPoints++;
6173
}
62-
// add footer lines
63-
result += "Amount owed is " + totalDue + "\n";
64-
result += "You earned " + frequentRenterPoints + " frequent renter points";
65-
return result;
74+
return frequentRenterPoints;
6675
}
6776
}

0 commit comments

Comments
 (0)