@@ -56,80 +56,97 @@ public static void main(String[] args) {
56
56
Injector injector =Guice .createInjector (new LotteryModule ());
57
57
LotteryService service =injector .getInstance (LotteryService .class );
58
58
WireTransfers bank =injector .getInstance (WireTransfers .class );
59
- Scanner scanner =new Scanner (System .in );
60
- boolean exit =false ;
61
- while (!exit ) {
62
- printMainMenu ();
63
- String cmd =readString (scanner );
64
- if (cmd .equals ("1" )) {
65
- LOGGER .info ("What is the account number?" );
66
- String account =readString (scanner );
67
- LOGGER .info ("The account {} has {} credits." ,account ,bank .getFunds (account ));
68
- }else if (cmd .equals ("2" )) {
69
- LOGGER .info ("What is the account number?" );
70
- String account =readString (scanner );
71
- LOGGER .info ("How many credits do you want to deposit?" );
72
- String amount =readString (scanner );
73
- bank .setFunds (account ,Integer .parseInt (amount ));
74
- LOGGER .info ("The account {} now has {} credits." ,account ,bank .getFunds (account ));
75
- }else if (cmd .equals ("3" )) {
76
- LOGGER .info ("What is your email address?" );
77
- String email =readString (scanner );
78
- LOGGER .info ("What is your bank account number?" );
79
- String account =readString (scanner );
80
- LOGGER .info ("What is your phone number?" );
81
- String phone =readString (scanner );
82
- PlayerDetails details =new PlayerDetails (email ,account ,phone );
83
- LOGGER .info ("Give 4 comma separated lottery numbers?" );
84
- String numbers =readString (scanner );
85
- try {
86
- String []parts =numbers .split ("," );
87
- Set <Integer >chosen =new HashSet <>();
88
- for (int i =0 ;i <4 ;i ++) {
89
- chosen .add (Integer .parseInt (parts [i ]));
90
- }
91
- LotteryNumbers lotteryNumbers =LotteryNumbers .create (chosen );
92
- LotteryTicket lotteryTicket =new LotteryTicket (new LotteryTicketId (),details ,lotteryNumbers );
93
- Optional <LotteryTicketId >id =service .submitTicket (lotteryTicket );
94
- if (id .isPresent ()) {
95
- LOGGER .info ("Submitted lottery ticket with id: {}" ,id .get ());
96
- }else {
97
- LOGGER .info ("Failed submitting lottery ticket - please try again." );
98
- }
99
- }catch (Exception e ) {
100
- LOGGER .info ("Failed submitting lottery ticket - please try again." );
59
+ try (final Scanner scanner =new Scanner (System .in )) {
60
+ boolean exit =false ;
61
+ while (!exit ) {
62
+ printMainMenu ();
63
+ String cmd =readString (scanner );
64
+ if ("1" .equals (cmd )) {
65
+ queryLotteryAccountFunds (bank ,scanner );
66
+ }else if ("2" .equals (cmd )) {
67
+ addFundsToLotteryAccount (bank ,scanner );
68
+ }else if ("3" .equals (cmd )) {
69
+ submitTicket (service ,scanner );
70
+ }else if ("4" .equals (cmd )) {
71
+ checkTicket (service ,scanner );
72
+ }else if ("5" .equals (cmd )) {
73
+ exit =true ;
74
+ }else {
75
+ LOGGER .info ("Unknown command" );
101
76
}
102
- }else if (cmd .equals ("4" )) {
103
- LOGGER .info ("What is the ID of the lottery ticket?" );
104
- String id =readString (scanner );
105
- LOGGER .info ("Give the 4 comma separated winning numbers?" );
106
- String numbers =readString (scanner );
107
- try {
108
- String []parts =numbers .split ("," );
109
- Set <Integer >winningNumbers =new HashSet <>();
110
- for (int i =0 ;i <4 ;i ++) {
111
- winningNumbers .add (Integer .parseInt (parts [i ]));
112
- }
113
- LotteryTicketCheckResult result =service .checkTicketForPrize (
114
- new LotteryTicketId (Integer .parseInt (id )),LotteryNumbers .create (winningNumbers ));
115
- if (result .getResult ().equals (LotteryTicketCheckResult .CheckResult .WIN_PRIZE )) {
116
- LOGGER .info ("Congratulations! The lottery ticket has won!" );
117
- }else if (result .getResult ().equals (LotteryTicketCheckResult .CheckResult .NO_PRIZE )) {
118
- LOGGER .info ("Unfortunately the lottery ticket did not win." );
119
- }else {
120
- LOGGER .info ("Such lottery ticket has not been submitted." );
121
- }
122
- }catch (Exception e ) {
123
- LOGGER .info ("Failed checking the lottery ticket - please try again." );
124
- }
125
- }else if (cmd .equals ("5" )) {
126
- exit =true ;
77
+ }
78
+ }
79
+ }
80
+
81
+ private static void checkTicket (LotteryService service ,Scanner scanner ) {
82
+ LOGGER .info ("What is the ID of the lottery ticket?" );
83
+ String id =readString (scanner );
84
+ LOGGER .info ("Give the 4 comma separated winning numbers?" );
85
+ String numbers =readString (scanner );
86
+ try {
87
+ String []parts =numbers .split ("," );
88
+ Set <Integer >winningNumbers =new HashSet <>();
89
+ for (int i =0 ;i <4 ;i ++) {
90
+ winningNumbers .add (Integer .parseInt (parts [i ]));
91
+ }
92
+ LotteryTicketCheckResult result =service .checkTicketForPrize (
93
+ new LotteryTicketId (Integer .parseInt (id )),LotteryNumbers .create (winningNumbers ));
94
+ if (result .getResult ().equals (LotteryTicketCheckResult .CheckResult .WIN_PRIZE )) {
95
+ LOGGER .info ("Congratulations! The lottery ticket has won!" );
96
+ }else if (result .getResult ().equals (LotteryTicketCheckResult .CheckResult .NO_PRIZE )) {
97
+ LOGGER .info ("Unfortunately the lottery ticket did not win." );
98
+ }else {
99
+ LOGGER .info ("Such lottery ticket has not been submitted." );
100
+ }
101
+ }catch (Exception e ) {
102
+ LOGGER .info ("Failed checking the lottery ticket - please try again." );
103
+ }
104
+ }
105
+
106
+ private static void submitTicket (LotteryService service ,Scanner scanner ) {
107
+ LOGGER .info ("What is your email address?" );
108
+ String email =readString (scanner );
109
+ LOGGER .info ("What is your bank account number?" );
110
+ String account =readString (scanner );
111
+ LOGGER .info ("What is your phone number?" );
112
+ String phone =readString (scanner );
113
+ PlayerDetails details =new PlayerDetails (email ,account ,phone );
114
+ LOGGER .info ("Give 4 comma separated lottery numbers?" );
115
+ String numbers =readString (scanner );
116
+ try {
117
+ String []parts =numbers .split ("," );
118
+ Set <Integer >chosen =new HashSet <>();
119
+ for (int i =0 ;i <4 ;i ++) {
120
+ chosen .add (Integer .parseInt (parts [i ]));
121
+ }
122
+ LotteryNumbers lotteryNumbers =LotteryNumbers .create (chosen );
123
+ LotteryTicket lotteryTicket =new LotteryTicket (new LotteryTicketId (),details ,lotteryNumbers );
124
+ Optional <LotteryTicketId >id =service .submitTicket (lotteryTicket );
125
+ if (id .isPresent ()) {
126
+ LOGGER .info ("Submitted lottery ticket with id: {}" ,id .get ());
127
127
}else {
128
- LOGGER .info ("Unknown command " );
128
+ LOGGER .info ("Failed submitting lottery ticket - please try again. " );
129
129
}
130
+ }catch (Exception e ) {
131
+ LOGGER .info ("Failed submitting lottery ticket - please try again." );
130
132
}
131
133
}
132
134
135
+ private static void addFundsToLotteryAccount (WireTransfers bank ,Scanner scanner ) {
136
+ LOGGER .info ("What is the account number?" );
137
+ String account =readString (scanner );
138
+ LOGGER .info ("How many credits do you want to deposit?" );
139
+ String amount =readString (scanner );
140
+ bank .setFunds (account ,Integer .parseInt (amount ));
141
+ LOGGER .info ("The account {} now has {} credits." ,account ,bank .getFunds (account ));
142
+ }
143
+
144
+ private static void queryLotteryAccountFunds (WireTransfers bank ,Scanner scanner ) {
145
+ LOGGER .info ("What is the account number?" );
146
+ String account =readString (scanner );
147
+ LOGGER .info ("The account {} has {} credits." ,account ,bank .getFunds (account ));
148
+ }
149
+
133
150
private static void printMainMenu () {
134
151
LOGGER .info ("" );
135
152
LOGGER .info ("### Lottery Service Console ###" );
@@ -142,7 +159,6 @@ private static void printMainMenu() {
142
159
143
160
private static String readString (Scanner scanner ) {
144
161
System .out .print ("> " );
145
- String cmd =scanner .next ();
146
- return cmd ;
162
+ return scanner .next ();
147
163
}
148
164
}