use of com.iluwatar.hexagonal.domain.LotteryNumbers in project java-design-patterns by iluwatar.
the class ConsoleAdministration method main.
/**
* Program entry point
*/
public static void main(String[] args) {
MongoConnectionPropertiesLoader.load();
Injector injector = Guice.createInjector(new LotteryModule());
LotteryAdministration administartion = injector.getInstance(LotteryAdministration.class);
LotteryService service = injector.getInstance(LotteryService.class);
SampleData.submitTickets(service, 20);
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));
} 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?");
} else if ("3".equals(cmd)) {
administartion.resetLottery();
LOGGER.info("The lottery ticket database was cleared.");
} else if ("4".equals(cmd)) {
exit = true;
} else {
LOGGER.info("Unknown command: {}", cmd);
}
}
}
}
use of com.iluwatar.hexagonal.domain.LotteryNumbers in project java-design-patterns by iluwatar.
the class MongoTicketRepository method docToTicket.
private LotteryTicket docToTicket(Document doc) {
PlayerDetails playerDetails = new PlayerDetails(doc.getString("email"), doc.getString("bank"), doc.getString("phone"));
int[] numArray = Arrays.asList(doc.getString("numbers").split(",")).stream().mapToInt(Integer::parseInt).toArray();
Set<Integer> numbers = new HashSet<>();
for (int num : numArray) {
numbers.add(num);
}
LotteryNumbers lotteryNumbers = LotteryNumbers.create(numbers);
return new LotteryTicket(new LotteryTicketId(doc.getInteger("ticketId")), playerDetails, lotteryNumbers);
}
use of com.iluwatar.hexagonal.domain.LotteryNumbers in project java-design-patterns by iluwatar.
the class ConsoleLottery method submitTicket.
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<Integer> 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<LotteryTicketId> 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.");
}
}
use of com.iluwatar.hexagonal.domain.LotteryNumbers in project java-design-patterns by iluwatar.
the class MongoTicketRepositoryTest method testCrudOperations.
@Test
public void testCrudOperations() {
// create new lottery ticket and save it
PlayerDetails details = new PlayerDetails("foo@bar.com", "123-123", "07001234");
LotteryNumbers random = LotteryNumbers.createRandom();
LotteryTicket original = new LotteryTicket(new LotteryTicketId(), details, random);
Optional<LotteryTicketId> saved = repository.save(original);
assertEquals(1, repository.getTicketsCollection().count());
assertTrue(saved.isPresent());
// fetch the saved lottery ticket from database and check its contents
Optional<LotteryTicket> found = repository.findById(saved.get());
assertTrue(found.isPresent());
LotteryTicket ticket = found.get();
assertEquals("foo@bar.com", ticket.getPlayerDetails().getEmail());
assertEquals("123-123", ticket.getPlayerDetails().getBankAccount());
assertEquals("07001234", ticket.getPlayerDetails().getPhoneNumber());
assertEquals(original.getNumbers(), ticket.getNumbers());
// clear the collection
repository.deleteAll();
assertEquals(0, repository.getTicketsCollection().count());
}
use of com.iluwatar.hexagonal.domain.LotteryNumbers in project java-design-patterns by iluwatar.
the class LotteryTestUtils method createLotteryTicket.
/**
* @return lottery ticket
*/
public static LotteryTicket createLotteryTicket(String email, String account, String phone, Set<Integer> givenNumbers) {
PlayerDetails details = new PlayerDetails(email, account, phone);
LotteryNumbers numbers = LotteryNumbers.create(givenNumbers);
return new LotteryTicket(new LotteryTicketId(), details, numbers);
}
Aggregations