-
Notifications
You must be signed in to change notification settings - Fork 566
Expand file tree
/
Copy pathStudyCafePassMachine.java
More file actions
54 lines (43 loc) · 1.84 KB
/
StudyCafePassMachine.java
File metadata and controls
54 lines (43 loc) · 1.84 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
package cleancode.studycafe.tobe;
import cleancode.studycafe.tobe.exception.AppException;
import cleancode.studycafe.tobe.io.InputHandler;
import cleancode.studycafe.tobe.io.OutputHandler;
import cleancode.studycafe.tobe.model.*;
import java.util.List;
public class StudyCafePassMachine {
private final InputHandler inputHandler = new InputHandler();
private final OutputHandler outputHandler = new OutputHandler();
private final StudyCafePassRepository passRepository;
public StudyCafePassMachine(StudyCafePassRepository passRepository) {
this.passRepository = passRepository;
}
public void run() {
try {
outputHandler.showWelcomeMessage();
outputHandler.showAnnouncement();
outputHandler.askPassTypeSelection();
//입장권 조회
StudyCafePassType studyCafePassType = inputHandler.getPassTypeSelectingUserAction();
List<StudyCafePass> hourlyPasses = passRepository.find(studyCafePassType);
//입장권 선택
outputHandler.showPassListForSelection(hourlyPasses);
StudyCafePass selectedPass = inputHandler.getSelectPass(hourlyPasses);
//사물함 이용
askForUsingLockerPass(selectedPass);
//금액 출력
outputHandler.showPassOrderSummary(selectedPass);
} catch (AppException e) {
outputHandler.showSimpleMessage(e.getMessage());
} catch (Exception e) {
outputHandler.showSimpleMessage("알 수 없는 오류가 발생했습니다.");
}
}
private void askForUsingLockerPass(StudyCafePass pass) {
assert pass != null;
if (pass.isNotUsingLocker()) return;
outputHandler.askLockerPass(pass);
if (inputHandler.getLockerSelection()) {
pass.selectLocker();
}
}
}