From ae0742347033310272f73033cdad592765ead589 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agust=C3=AD=20Becerra=20Mil=C3=A0?= Date: Sun, 1 Jul 2018 16:29:07 +0200 Subject: [PATCH 1/3] First proposal --- .../hexagonal/service/ConsoleLottery.java | 89 ++--------------- .../hexagonal/service/LotteryService.java | 17 ++++ .../hexagonal/service/LotteryServiceImpl.java | 99 +++++++++++++++++++ 3 files changed, 122 insertions(+), 83 deletions(-) create mode 100644 hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryService.java create mode 100644 hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryServiceImpl.java diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/ConsoleLottery.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/ConsoleLottery.java index f7f7b274d..c9fd05f13 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/ConsoleLottery.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/ConsoleLottery.java @@ -25,21 +25,12 @@ package com.iluwatar.hexagonal.service; import com.google.inject.Guice; import com.google.inject.Injector; import com.iluwatar.hexagonal.banking.WireTransfers; -import com.iluwatar.hexagonal.domain.LotteryNumbers; -import com.iluwatar.hexagonal.domain.LotteryService; -import com.iluwatar.hexagonal.domain.LotteryTicket; -import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult; -import com.iluwatar.hexagonal.domain.LotteryTicketId; -import com.iluwatar.hexagonal.domain.PlayerDetails; import com.iluwatar.hexagonal.module.LotteryModule; import com.iluwatar.hexagonal.mongo.MongoConnectionPropertiesLoader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.HashSet; -import java.util.Optional; import java.util.Scanner; -import java.util.Set; /** * Console interface for lottery players @@ -54,21 +45,22 @@ public class ConsoleLottery { public static void main(String[] args) { MongoConnectionPropertiesLoader.load(); Injector injector = Guice.createInjector(new LotteryModule()); - LotteryService service = injector.getInstance(LotteryService.class); + com.iluwatar.hexagonal.domain.LotteryService service = injector.getInstance( com.iluwatar.hexagonal.domain.LotteryService.class); WireTransfers bank = injector.getInstance(WireTransfers.class); try (final Scanner scanner = new Scanner(System.in)) { boolean exit = false; while (!exit) { printMainMenu(); String cmd = readString(scanner); + LotteryService lotteryService = new LotteryServiceImpl(LOGGER); if ("1".equals(cmd)) { - queryLotteryAccountFunds(bank, scanner); + lotteryService.queryLotteryAccountFunds(bank, scanner); } else if ("2".equals(cmd)) { - addFundsToLotteryAccount(bank, scanner); + lotteryService.addFundsToLotteryAccount(bank, scanner); } else if ("3".equals(cmd)) { - submitTicket(service, scanner); + lotteryService.submitTicket(service, scanner); } else if ("4".equals(cmd)) { - checkTicket(service, scanner); + lotteryService.checkTicket(service, scanner); } else if ("5".equals(cmd)) { exit = true; } else { @@ -78,75 +70,6 @@ public class ConsoleLottery { } } - private static void checkTicket(LotteryService service, Scanner scanner) { - LOGGER.info("What is the ID of the lottery ticket?"); - String id = readString(scanner); - LOGGER.info("Give the 4 comma separated winning numbers?"); - String numbers = readString(scanner); - try { - String[] parts = numbers.split(","); - Set winningNumbers = new HashSet<>(); - for (int i = 0; i < 4; i++) { - winningNumbers.add(Integer.parseInt(parts[i])); - } - LotteryTicketCheckResult result = service.checkTicketForPrize( - new LotteryTicketId(Integer.parseInt(id)), LotteryNumbers.create(winningNumbers)); - if (result.getResult().equals(LotteryTicketCheckResult.CheckResult.WIN_PRIZE)) { - LOGGER.info("Congratulations! The lottery ticket has won!"); - } else if (result.getResult().equals(LotteryTicketCheckResult.CheckResult.NO_PRIZE)) { - LOGGER.info("Unfortunately the lottery ticket did not win."); - } else { - LOGGER.info("Such lottery ticket has not been submitted."); - } - } catch (Exception e) { - LOGGER.info("Failed checking the lottery ticket - please try again."); - } - } - - private static void submitTicket(LotteryService service, Scanner scanner) { - LOGGER.info("What is your email address?"); - String email = readString(scanner); - LOGGER.info("What is your bank account number?"); - String account = readString(scanner); - LOGGER.info("What is your phone number?"); - String phone = readString(scanner); - PlayerDetails details = new PlayerDetails(email, account, phone); - LOGGER.info("Give 4 comma separated lottery numbers?"); - String numbers = readString(scanner); - try { - String[] parts = numbers.split(","); - Set chosen = new HashSet<>(); - for (int i = 0; i < 4; i++) { - chosen.add(Integer.parseInt(parts[i])); - } - LotteryNumbers lotteryNumbers = LotteryNumbers.create(chosen); - LotteryTicket lotteryTicket = new LotteryTicket(new LotteryTicketId(), details, lotteryNumbers); - Optional id = service.submitTicket(lotteryTicket); - if (id.isPresent()) { - LOGGER.info("Submitted lottery ticket with id: {}", id.get()); - } else { - LOGGER.info("Failed submitting lottery ticket - please try again."); - } - } catch (Exception e) { - LOGGER.info("Failed submitting lottery ticket - please try again."); - } - } - - private static void addFundsToLotteryAccount(WireTransfers bank, Scanner scanner) { - LOGGER.info("What is the account number?"); - String account = readString(scanner); - LOGGER.info("How many credits do you want to deposit?"); - String amount = readString(scanner); - bank.setFunds(account, Integer.parseInt(amount)); - LOGGER.info("The account {} now has {} credits.", account, bank.getFunds(account)); - } - - private static void queryLotteryAccountFunds(WireTransfers bank, Scanner scanner) { - LOGGER.info("What is the account number?"); - String account = readString(scanner); - LOGGER.info("The account {} has {} credits.", account, bank.getFunds(account)); - } - private static void printMainMenu() { LOGGER.info(""); LOGGER.info("### Lottery Service Console ###"); diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryService.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryService.java new file mode 100644 index 000000000..951119cc7 --- /dev/null +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryService.java @@ -0,0 +1,17 @@ +package com.iluwatar.hexagonal.service; + +import com.iluwatar.hexagonal.banking.WireTransfers; + +import java.util.Scanner; + +public interface LotteryService { + void checkTicket(com.iluwatar.hexagonal.domain.LotteryService service, Scanner scanner); + + void submitTicket(com.iluwatar.hexagonal.domain.LotteryService service, Scanner scanner); + + void addFundsToLotteryAccount(WireTransfers bank, Scanner scanner); + + + void queryLotteryAccountFunds(WireTransfers bank, Scanner scanner); + +} diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryServiceImpl.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryServiceImpl.java new file mode 100644 index 000000000..7964e0d9b --- /dev/null +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryServiceImpl.java @@ -0,0 +1,99 @@ +package com.iluwatar.hexagonal.service; + +import com.iluwatar.hexagonal.banking.WireTransfers; +import com.iluwatar.hexagonal.domain.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashSet; +import java.util.Optional; +import java.util.Scanner; +import java.util.Set; + +public class LotteryServiceImpl implements LotteryService { + + private final Logger logger; + + public LotteryServiceImpl(Logger logger) { + + this.logger = logger; + } + + @Override + public void checkTicket(com.iluwatar.hexagonal.domain.LotteryService service, Scanner scanner) { + logger.info("What is the ID of the lottery ticket?"); + String id = readString(scanner); + logger.info("Give the 4 comma separated winning numbers?"); + String numbers = readString(scanner); + try { + String[] parts = numbers.split(","); + Set winningNumbers = new HashSet<>(); + for (int i = 0; i < 4; i++) { + winningNumbers.add(Integer.parseInt(parts[i])); + } + LotteryTicketCheckResult result = service.checkTicketForPrize( + new LotteryTicketId(Integer.parseInt(id)), LotteryNumbers.create(winningNumbers)); + if (result.getResult().equals(LotteryTicketCheckResult.CheckResult.WIN_PRIZE)) { + logger.info("Congratulations! The lottery ticket has won!"); + } else if (result.getResult().equals(LotteryTicketCheckResult.CheckResult.NO_PRIZE)) { + logger.info("Unfortunately the lottery ticket did not win."); + } else { + logger.info("Such lottery ticket has not been submitted."); + } + } catch (Exception e) { + logger.info("Failed checking the lottery ticket - please try again."); + } + } + + @Override + public void submitTicket(com.iluwatar.hexagonal.domain.LotteryService service, Scanner scanner) { + logger.info("What is your email address?"); + String email = readString(scanner); + logger.info("What is your bank account number?"); + String account = readString(scanner); + logger.info("What is your phone number?"); + String phone = readString(scanner); + PlayerDetails details = new PlayerDetails(email, account, phone); + logger.info("Give 4 comma separated lottery numbers?"); + String numbers = readString(scanner); + try { + String[] parts = numbers.split(","); + Set chosen = new HashSet<>(); + for (int i = 0; i < 4; i++) { + chosen.add(Integer.parseInt(parts[i])); + } + LotteryNumbers lotteryNumbers = LotteryNumbers.create(chosen); + LotteryTicket lotteryTicket = new LotteryTicket(new LotteryTicketId(), details, lotteryNumbers); + Optional id = service.submitTicket(lotteryTicket); + if (id.isPresent()) { + logger.info("Submitted lottery ticket with id: {}", id.get()); + } else { + logger.info("Failed submitting lottery ticket - please try again."); + } + } catch (Exception e) { + logger.info("Failed submitting lottery ticket - please try again."); + } + } + + @Override + public void addFundsToLotteryAccount(WireTransfers bank, Scanner scanner) { + logger.info("What is the account number?"); + String account = readString(scanner); + logger.info("How many credits do you want to deposit?"); + String amount = readString(scanner); + bank.setFunds(account, Integer.parseInt(amount)); + logger.info("The account {} now has {} credits.", account, bank.getFunds(account)); + } + + @Override + public void queryLotteryAccountFunds(WireTransfers bank, Scanner scanner) { + logger.info("What is the account number?"); + String account = readString(scanner); + logger.info("The account {} has {} credits.", account, bank.getFunds(account)); + } + + private String readString(Scanner scanner) { + System.out.print("> "); + return scanner.next(); + } +} From d2b900b524ad189c42a4f2ebc99f667e507ef0dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agust=C3=AD=20Becerra=20Mil=C3=A0?= Date: Sun, 8 Jul 2018 19:25:42 +0200 Subject: [PATCH 2/3] Fix checkstyle & update interface services --- .../administration/ConsoleAdministration.java | 13 +-- .../ConsoleAdministrationSrv.java | 22 ++++ .../ConsoleAdministrationSrvImpl.java | 39 +++++++ .../hexagonal/service/ConsoleLottery.java | 13 ++- .../service/LotteryConsoleService.java | 32 ++++++ .../service/LotteryConsoleServiceImpl.java | 107 ++++++++++++++++++ .../hexagonal/service/LotteryService.java | 17 --- .../hexagonal/service/LotteryServiceImpl.java | 99 ---------------- 8 files changed, 212 insertions(+), 130 deletions(-) create mode 100644 hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministrationSrv.java create mode 100644 hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministrationSrvImpl.java create mode 100644 hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleService.java create mode 100644 hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleServiceImpl.java delete mode 100644 hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryService.java delete mode 100644 hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryServiceImpl.java diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministration.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministration.java index 9dc20f87c..f1f701570 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministration.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministration.java @@ -25,7 +25,6 @@ package com.iluwatar.hexagonal.administration; import com.google.inject.Guice; import com.google.inject.Injector; import com.iluwatar.hexagonal.domain.LotteryAdministration; -import com.iluwatar.hexagonal.domain.LotteryNumbers; import com.iluwatar.hexagonal.domain.LotteryService; import com.iluwatar.hexagonal.module.LotteryModule; import com.iluwatar.hexagonal.mongo.MongoConnectionPropertiesLoader; @@ -48,23 +47,21 @@ public class ConsoleAdministration { public static void main(String[] args) { MongoConnectionPropertiesLoader.load(); Injector injector = Guice.createInjector(new LotteryModule()); - LotteryAdministration administartion = injector.getInstance(LotteryAdministration.class); + LotteryAdministration administration = injector.getInstance(LotteryAdministration.class); LotteryService service = injector.getInstance(LotteryService.class); SampleData.submitTickets(service, 20); + ConsoleAdministrationSrv consoleAdministration = new ConsoleAdministrationSrvImpl(administration, LOGGER); try (Scanner scanner = new Scanner(System.in)) { boolean exit = false; while (!exit) { printMainMenu(); String cmd = readString(scanner); if ("1".equals(cmd)) { - administartion.getAllSubmittedTickets().forEach((k, v) -> LOGGER.info("Key: {}, Value: {}", k, v)); + consoleAdministration.getAllSubmittedTickets(); } else if ("2".equals(cmd)) { - LotteryNumbers numbers = administartion.performLottery(); - LOGGER.info("The winning numbers: {}", numbers.getNumbersAsString()); - LOGGER.info("Time to reset the database for next round, eh?"); + consoleAdministration.performLottery(); } else if ("3".equals(cmd)) { - administartion.resetLottery(); - LOGGER.info("The lottery ticket database was cleared."); + consoleAdministration.resetLottery(); } else if ("4".equals(cmd)) { exit = true; } else { diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministrationSrv.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministrationSrv.java new file mode 100644 index 000000000..907a462b7 --- /dev/null +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministrationSrv.java @@ -0,0 +1,22 @@ +package com.iluwatar.hexagonal.administration; + +/** + * Console interface for lottery administration + */ +public interface ConsoleAdministrationSrv { + + /** + * Get all submitted tickets + */ + void getAllSubmittedTickets(); + + /** + * Draw lottery numbers + */ + void performLottery(); + + /** + * Begin new lottery round + */ + void resetLottery(); +} diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministrationSrvImpl.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministrationSrvImpl.java new file mode 100644 index 000000000..6f9a141bb --- /dev/null +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministrationSrvImpl.java @@ -0,0 +1,39 @@ +package com.iluwatar.hexagonal.administration; + +import com.iluwatar.hexagonal.domain.LotteryAdministration; +import com.iluwatar.hexagonal.domain.LotteryNumbers; +import org.slf4j.Logger; + +/** + * Console implementation for lottery administration + */ +public class ConsoleAdministrationSrvImpl implements ConsoleAdministrationSrv { + private final LotteryAdministration administration; + private final Logger logger; + + /** + * Constructor + */ + public ConsoleAdministrationSrvImpl(LotteryAdministration administration, Logger logger) { + this.administration = administration; + this.logger = logger; + } + + @Override + public void getAllSubmittedTickets() { + administration.getAllSubmittedTickets().forEach((k, v) -> logger.info("Key: {}, Value: {}", k, v)); + } + + @Override + public void performLottery() { + LotteryNumbers numbers = administration.performLottery(); + logger.info("The winning numbers: {}", numbers.getNumbersAsString()); + logger.info("Time to reset the database for next round, eh?"); + } + + @Override + public void resetLottery() { + administration.resetLottery(); + logger.info("The lottery ticket database was cleared."); + } +} diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/ConsoleLottery.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/ConsoleLottery.java index c9fd05f13..9956788ad 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/ConsoleLottery.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/ConsoleLottery.java @@ -25,6 +25,7 @@ package com.iluwatar.hexagonal.service; import com.google.inject.Guice; import com.google.inject.Injector; import com.iluwatar.hexagonal.banking.WireTransfers; +import com.iluwatar.hexagonal.domain.LotteryService; import com.iluwatar.hexagonal.module.LotteryModule; import com.iluwatar.hexagonal.mongo.MongoConnectionPropertiesLoader; import org.slf4j.Logger; @@ -45,22 +46,22 @@ public class ConsoleLottery { public static void main(String[] args) { MongoConnectionPropertiesLoader.load(); Injector injector = Guice.createInjector(new LotteryModule()); - com.iluwatar.hexagonal.domain.LotteryService service = injector.getInstance( com.iluwatar.hexagonal.domain.LotteryService.class); + LotteryService service = injector.getInstance( LotteryService.class); WireTransfers bank = injector.getInstance(WireTransfers.class); try (final Scanner scanner = new Scanner(System.in)) { boolean exit = false; while (!exit) { printMainMenu(); String cmd = readString(scanner); - LotteryService lotteryService = new LotteryServiceImpl(LOGGER); + LotteryConsoleService lotteryConsoleService = new LotteryConsoleServiceImpl(LOGGER); if ("1".equals(cmd)) { - lotteryService.queryLotteryAccountFunds(bank, scanner); + lotteryConsoleService.queryLotteryAccountFunds(bank, scanner); } else if ("2".equals(cmd)) { - lotteryService.addFundsToLotteryAccount(bank, scanner); + lotteryConsoleService.addFundsToLotteryAccount(bank, scanner); } else if ("3".equals(cmd)) { - lotteryService.submitTicket(service, scanner); + lotteryConsoleService.submitTicket(service, scanner); } else if ("4".equals(cmd)) { - lotteryService.checkTicket(service, scanner); + lotteryConsoleService.checkTicket(service, scanner); } else if ("5".equals(cmd)) { exit = true; } else { diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleService.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleService.java new file mode 100644 index 000000000..628266b53 --- /dev/null +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleService.java @@ -0,0 +1,32 @@ +package com.iluwatar.hexagonal.service; + +import com.iluwatar.hexagonal.banking.WireTransfers; +import com.iluwatar.hexagonal.domain.LotteryService; + +import java.util.Scanner; + + +/** + * Console interface for lottery service + */ +public interface LotteryConsoleService { + + void checkTicket(LotteryService service, Scanner scanner); + + /** + * Submit lottery ticket to participate in the lottery + */ + void submitTicket(LotteryService service, Scanner scanner); + + /** + * Add funds to lottery account + */ + void addFundsToLotteryAccount(WireTransfers bank, Scanner scanner); + + + /** + * Recovery funds from lottery account + */ + void queryLotteryAccountFunds(WireTransfers bank, Scanner scanner); + +} diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleServiceImpl.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleServiceImpl.java new file mode 100644 index 000000000..de107c773 --- /dev/null +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleServiceImpl.java @@ -0,0 +1,107 @@ +package com.iluwatar.hexagonal.service; + +import com.google.inject.Inject; +import com.iluwatar.hexagonal.banking.WireTransfers; +import com.iluwatar.hexagonal.domain.*; +import org.slf4j.Logger; + +import java.util.HashSet; +import java.util.Optional; +import java.util.Scanner; +import java.util.Set; + +/** + * Console implementation for lottery console service + */ +public class LotteryConsoleServiceImpl implements LotteryConsoleService { + + private final Logger logger; + + /** + * Constructor + */ + public LotteryConsoleServiceImpl(Logger logger) { + this.logger = logger; + } + + @Override + public void checkTicket(LotteryService service, Scanner scanner) { + logger.info( "What is the ID of the lottery ticket?" ); + String id = readString( scanner ); + logger.info( "Give the 4 comma separated winning numbers?" ); + String numbers = readString( scanner ); + try { + String[] parts = numbers.split( "," ); + Set winningNumbers = new HashSet<>(); + for (int i = 0; i < 4; i++) { + winningNumbers.add( Integer.parseInt( parts[i] ) ); + } + + final LotteryTicketId lotteryTicketId = new LotteryTicketId( Integer.parseInt( id ) ); + final LotteryNumbers lotteryNumbers = LotteryNumbers.create( winningNumbers ); + LotteryTicketCheckResult result = service.checkTicketForPrize( lotteryTicketId, lotteryNumbers ); + + if (result.getResult().equals( LotteryTicketCheckResult.CheckResult.WIN_PRIZE )) { + logger.info( "Congratulations! The lottery ticket has won!" ); + } else if (result.getResult().equals( LotteryTicketCheckResult.CheckResult.NO_PRIZE )) { + logger.info( "Unfortunately the lottery ticket did not win." ); + } else { + logger.info( "Such lottery ticket has not been submitted." ); + } + } catch (Exception e) { + logger.info( "Failed checking the lottery ticket - please try again." ); + } + } + + @Override + public void submitTicket(LotteryService service, Scanner scanner) { + logger.info( "What is your email address?" ); + String email = readString( scanner ); + logger.info( "What is your bank account number?" ); + String account = readString( scanner ); + logger.info( "What is your phone number?" ); + String phone = readString( scanner ); + PlayerDetails details = new PlayerDetails( email, account, phone ); + logger.info( "Give 4 comma separated lottery numbers?" ); + String numbers = readString( scanner ); + try { + String[] parts = numbers.split( "," ); + Set chosen = new HashSet<>(); + for (int i = 0; i < 4; i++) { + chosen.add( Integer.parseInt( parts[i] ) ); + } + LotteryNumbers lotteryNumbers = LotteryNumbers.create( chosen ); + LotteryTicket lotteryTicket = new LotteryTicket( new LotteryTicketId(), details, lotteryNumbers ); + Optional id = service.submitTicket( lotteryTicket ); + if (id.isPresent()) { + logger.info( "Submitted lottery ticket with id: {}", id.get() ); + } else { + logger.info( "Failed submitting lottery ticket - please try again." ); + } + } catch (Exception e) { + logger.info( "Failed submitting lottery ticket - please try again." ); + } + } + + @Override + public void addFundsToLotteryAccount(WireTransfers bank, Scanner scanner) { + logger.info( "What is the account number?" ); + String account = readString( scanner ); + logger.info( "How many credits do you want to deposit?" ); + String amount = readString( scanner ); + bank.setFunds( account, Integer.parseInt( amount ) ); + logger.info( "The account {} now has {} credits.", account, bank.getFunds( account ) ); + } + + @Override + public void queryLotteryAccountFunds(WireTransfers bank, Scanner scanner) { + logger.info( "What is the account number?" ); + String account = readString( scanner ); + logger.info( "The account {} has {} credits.", account, bank.getFunds( account ) ); + } + + private String readString(Scanner scanner) { + System.out.print( "> " ); + return scanner.next(); + } +} diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryService.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryService.java deleted file mode 100644 index 951119cc7..000000000 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryService.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.iluwatar.hexagonal.service; - -import com.iluwatar.hexagonal.banking.WireTransfers; - -import java.util.Scanner; - -public interface LotteryService { - void checkTicket(com.iluwatar.hexagonal.domain.LotteryService service, Scanner scanner); - - void submitTicket(com.iluwatar.hexagonal.domain.LotteryService service, Scanner scanner); - - void addFundsToLotteryAccount(WireTransfers bank, Scanner scanner); - - - void queryLotteryAccountFunds(WireTransfers bank, Scanner scanner); - -} diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryServiceImpl.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryServiceImpl.java deleted file mode 100644 index 7964e0d9b..000000000 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryServiceImpl.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.iluwatar.hexagonal.service; - -import com.iluwatar.hexagonal.banking.WireTransfers; -import com.iluwatar.hexagonal.domain.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.HashSet; -import java.util.Optional; -import java.util.Scanner; -import java.util.Set; - -public class LotteryServiceImpl implements LotteryService { - - private final Logger logger; - - public LotteryServiceImpl(Logger logger) { - - this.logger = logger; - } - - @Override - public void checkTicket(com.iluwatar.hexagonal.domain.LotteryService service, Scanner scanner) { - logger.info("What is the ID of the lottery ticket?"); - String id = readString(scanner); - logger.info("Give the 4 comma separated winning numbers?"); - String numbers = readString(scanner); - try { - String[] parts = numbers.split(","); - Set winningNumbers = new HashSet<>(); - for (int i = 0; i < 4; i++) { - winningNumbers.add(Integer.parseInt(parts[i])); - } - LotteryTicketCheckResult result = service.checkTicketForPrize( - new LotteryTicketId(Integer.parseInt(id)), LotteryNumbers.create(winningNumbers)); - if (result.getResult().equals(LotteryTicketCheckResult.CheckResult.WIN_PRIZE)) { - logger.info("Congratulations! The lottery ticket has won!"); - } else if (result.getResult().equals(LotteryTicketCheckResult.CheckResult.NO_PRIZE)) { - logger.info("Unfortunately the lottery ticket did not win."); - } else { - logger.info("Such lottery ticket has not been submitted."); - } - } catch (Exception e) { - logger.info("Failed checking the lottery ticket - please try again."); - } - } - - @Override - public void submitTicket(com.iluwatar.hexagonal.domain.LotteryService service, Scanner scanner) { - logger.info("What is your email address?"); - String email = readString(scanner); - logger.info("What is your bank account number?"); - String account = readString(scanner); - logger.info("What is your phone number?"); - String phone = readString(scanner); - PlayerDetails details = new PlayerDetails(email, account, phone); - logger.info("Give 4 comma separated lottery numbers?"); - String numbers = readString(scanner); - try { - String[] parts = numbers.split(","); - Set chosen = new HashSet<>(); - for (int i = 0; i < 4; i++) { - chosen.add(Integer.parseInt(parts[i])); - } - LotteryNumbers lotteryNumbers = LotteryNumbers.create(chosen); - LotteryTicket lotteryTicket = new LotteryTicket(new LotteryTicketId(), details, lotteryNumbers); - Optional id = service.submitTicket(lotteryTicket); - if (id.isPresent()) { - logger.info("Submitted lottery ticket with id: {}", id.get()); - } else { - logger.info("Failed submitting lottery ticket - please try again."); - } - } catch (Exception e) { - logger.info("Failed submitting lottery ticket - please try again."); - } - } - - @Override - public void addFundsToLotteryAccount(WireTransfers bank, Scanner scanner) { - logger.info("What is the account number?"); - String account = readString(scanner); - logger.info("How many credits do you want to deposit?"); - String amount = readString(scanner); - bank.setFunds(account, Integer.parseInt(amount)); - logger.info("The account {} now has {} credits.", account, bank.getFunds(account)); - } - - @Override - public void queryLotteryAccountFunds(WireTransfers bank, Scanner scanner) { - logger.info("What is the account number?"); - String account = readString(scanner); - logger.info("The account {} has {} credits.", account, bank.getFunds(account)); - } - - private String readString(Scanner scanner) { - System.out.print("> "); - return scanner.next(); - } -} From b4537537904a9b65acc1c8279de217535dd42290 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agust=C3=AD=20Becerra=20Mil=C3=A0?= Date: Sun, 8 Jul 2018 19:38:54 +0200 Subject: [PATCH 3/3] Fix import not used --- .../iluwatar/hexagonal/service/LotteryConsoleServiceImpl.java | 1 - 1 file changed, 1 deletion(-) diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleServiceImpl.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleServiceImpl.java index de107c773..d1c7fa04a 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleServiceImpl.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleServiceImpl.java @@ -1,6 +1,5 @@ package com.iluwatar.hexagonal.service; -import com.google.inject.Inject; import com.iluwatar.hexagonal.banking.WireTransfers; import com.iluwatar.hexagonal.domain.*; import org.slf4j.Logger;