Skip to content

Commit c4c5e78

Browse files
committed
Hexagonal pattern: Improve error handling in console lottery
1 parent 3cf2b34 commit c4c5e78

File tree

1 file changed

+32
-24
lines changed

1 file changed

+32
-24
lines changed

hexagonal/src/main/java/com/iluwatar/hexagonal/service/ConsoleLottery.java

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -79,37 +79,45 @@ public static void main(String[] args) {
7979
PlayerDetails details = PlayerDetails.create(email, account, phone);
8080
System.out.println("Give 4 comma separated lottery numbers?");
8181
String numbers = readString(scanner);
82-
String[] parts = numbers.split(",");
83-
Set<Integer> chosen = new HashSet<>();
84-
for (int i = 0; i < 4; i++) {
85-
chosen.add(Integer.parseInt(parts[i]));
86-
}
87-
LotteryNumbers lotteryNumbers = LotteryNumbers.create(chosen);
88-
LotteryTicket lotteryTicket = LotteryTicket.create(new LotteryTicketId(), details, lotteryNumbers);
89-
Optional<LotteryTicketId> id = service.submitTicket(lotteryTicket);
90-
if (id.isPresent()) {
91-
System.out.println("Submitted lottery ticket with id: " + id.get());
92-
} else {
82+
try {
83+
String[] parts = numbers.split(",");
84+
Set<Integer> chosen = new HashSet<>();
85+
for (int i = 0; i < 4; i++) {
86+
chosen.add(Integer.parseInt(parts[i]));
87+
}
88+
LotteryNumbers lotteryNumbers = LotteryNumbers.create(chosen);
89+
LotteryTicket lotteryTicket = LotteryTicket.create(new LotteryTicketId(), details, lotteryNumbers);
90+
Optional<LotteryTicketId> id = service.submitTicket(lotteryTicket);
91+
if (id.isPresent()) {
92+
System.out.println("Submitted lottery ticket with id: " + id.get());
93+
} else {
94+
System.out.println("Failed submitting lottery ticket - please try again.");
95+
}
96+
} catch (Exception e) {
9397
System.out.println("Failed submitting lottery ticket - please try again.");
9498
}
9599
} else if (cmd.equals("4")) {
96100
System.out.println("What is the ID of the lottery ticket?");
97101
String id = readString(scanner);
98102
System.out.println("Give the 4 comma separated winning numbers?");
99103
String numbers = readString(scanner);
100-
String[] parts = numbers.split(",");
101-
Set<Integer> winningNumbers = new HashSet<>();
102-
for (int i = 0; i < 4; i++) {
103-
winningNumbers.add(Integer.parseInt(parts[i]));
104-
}
105-
LotteryTicketCheckResult result = service.checkTicketForPrize(
106-
new LotteryTicketId(Integer.parseInt(id)), LotteryNumbers.create(winningNumbers));
107-
if (result.getResult().equals(LotteryTicketCheckResult.CheckResult.WIN_PRIZE)) {
108-
System.out.println("Congratulations! The lottery ticket has won!");
109-
} else if (result.getResult().equals(LotteryTicketCheckResult.CheckResult.NO_PRIZE)) {
110-
System.out.println("Unfortunately the lottery ticket did not win.");
111-
} else {
112-
System.out.println("Such lottery ticket has not been submitted.");
104+
try {
105+
String[] parts = numbers.split(",");
106+
Set<Integer> winningNumbers = new HashSet<>();
107+
for (int i = 0; i < 4; i++) {
108+
winningNumbers.add(Integer.parseInt(parts[i]));
109+
}
110+
LotteryTicketCheckResult result = service.checkTicketForPrize(
111+
new LotteryTicketId(Integer.parseInt(id)), LotteryNumbers.create(winningNumbers));
112+
if (result.getResult().equals(LotteryTicketCheckResult.CheckResult.WIN_PRIZE)) {
113+
System.out.println("Congratulations! The lottery ticket has won!");
114+
} else if (result.getResult().equals(LotteryTicketCheckResult.CheckResult.NO_PRIZE)) {
115+
System.out.println("Unfortunately the lottery ticket did not win.");
116+
} else {
117+
System.out.println("Such lottery ticket has not been submitted.");
118+
}
119+
} catch (Exception e) {
120+
System.out.println("Failed checking the lottery ticket - please try again.");
113121
}
114122
} else if (cmd.equals("5")) {
115123
exit = true;

0 commit comments

Comments
 (0)