-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Expand file tree
/
Copy pathLottoApplication.java
More file actions
62 lines (51 loc) · 2.26 KB
/
LottoApplication.java
File metadata and controls
62 lines (51 loc) · 2.26 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
package lotto;
import lotto.domain.LottoService;
import lotto.domain.model.game.LottoGameResult;
import lotto.domain.model.lotto.*;
import lotto.view.InputView;
import lotto.view.ResultView;
import java.util.List;
import java.util.Set;
public class LottoApplication {
private final InputView inputView;
private final ResultView resultView;
private final LottoService service;
public LottoApplication() {
this.inputView = new InputView();
this.resultView = new ResultView();
this.service = new LottoService();
}
public void start() {
try {
PurchaseAmount purchaseAmount = inputView.inputPurchaseAmount();
TotalTicketCount totalTicketCount = getPurchaseInformation(purchaseAmount);
List<LottoTicket> totalTickets = purchaseTickets(totalTicketCount);
LottoGameResult result = playLottoGame(totalTickets);
displayResults(purchaseAmount, result);
} finally {
inputView.close();
}
}
private TotalTicketCount getPurchaseInformation(PurchaseAmount amount) {
TicketCount purchasedTicketCount = TicketCount.from(amount, TicketPrice.standard());
TicketCount manualCount = inputView.inputManualTicketCount();
return new TotalTicketCount(purchasedTicketCount, manualCount);
}
private List<LottoTicket> purchaseTickets(TotalTicketCount totalTicketCount) {
List<LottoTicket> manualTickets = inputView.inputManualTicketNumbers(totalTicketCount.getManualTicketCount());
List<LottoTicket> totalTickets = service.purchaseTickets(manualTickets, totalTicketCount);
resultView.printTicketsWithManualCount(totalTickets, totalTicketCount);
return totalTickets;
}
private LottoGameResult playLottoGame(List<LottoTicket> totalTickets) {
Set<LottoNumber> winningNumbers = inputView.inputWinningNumbers();
BonusNumber bonusNumber = inputView.inputBonusNumber();
return service.draw(totalTickets, new WinningLottoTicket(winningNumbers, bonusNumber));
}
private void displayResults(PurchaseAmount amount, LottoGameResult result) {
resultView.printResult(amount, result);
}
public static void main(String[] args) {
new LottoApplication().start();
}
}