-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStatement.java
More file actions
77 lines (61 loc) · 1.94 KB
/
Copy pathStatement.java
File metadata and controls
77 lines (61 loc) · 1.94 KB
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
package com.example.cleancoder.functionstructure.movie;
import java.util.ArrayList;
import java.util.List;
public class Statement {
private String customerName;
private List<Rental> rentals = new ArrayList<Rental>();
private double total;
private int frequentRenterPoints;
private double totalAmount;
public Statement(String customerName) {
this.customerName = customerName;
}
public void addRental(Rental arg) {
rentals.add(arg);
}
public String getCustomerName() {
return customerName;
}
public String generate() {
clearTotals();
String statementText = header();
statementText += rentalLines();
statementText += footer();
return statementText;
}
private void clearTotals() {
totalAmount = 0;
frequentRenterPoints = 0;
}
private String header() {
return String.format("Rental Record for %s\n", customerName);
}
private String rentalLines() {
String rentalLines = "";
for (Rental rental : rentals) {
rentalLines += rentalLine(rental);
}
return rentalLines;
}
private String rentalLine(Rental rental) {
double rentalAmount = rental.determineAmount();
frequentRenterPoints += rental.determineFrequentRentalPoint();
totalAmount += rentalAmount;
return formatRentalLine(rental, rentalAmount);
}
private String formatRentalLine(Rental rental, double rentalAmount) {
return String.format("\t%s\t%.1f\n", rental.getTitle(), rentalAmount);
}
private String footer() {
return String.format(
"Amount owed is %.1f\n" +
"You earned %d frequent renter points",
totalAmount, frequentRenterPoints);
}
public double getTotal() {
return totalAmount;
}
public int getFrequentRenterPoints() {
return frequentRenterPoints;
}
}