diff --git a/hexagonal/pom.xml b/hexagonal/pom.xml index 540e6f398..54f81cf14 100644 --- a/hexagonal/pom.xml +++ b/hexagonal/pom.xml @@ -32,11 +32,7 @@ java-design-patterns 1.12.0-SNAPSHOT - com.iluwatar.hexagonal hexagonal - 1.0-SNAPSHOT - hexagonal - http://maven.apache.org junit diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/LotteryAdministration.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/LotteryAdministration.java index 70b625aa2..bc625b230 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/LotteryAdministration.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/LotteryAdministration.java @@ -35,8 +35,19 @@ import com.iluwatar.hexagonal.domain.LotteryTicketId; */ public interface LotteryAdministration { + /** + * Get all the lottery tickets submitted for lottery + */ Map getAllSubmittedTickets(); + + /** + * Draw lottery numbers + */ LotteryNumbers performLottery(); + + /** + * Begin new lottery round + */ void resetLottery(); } diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/LotteryAdministrationImpl.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/LotteryAdministrationImpl.java index 5e457439b..a452600aa 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/LotteryAdministrationImpl.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/LotteryAdministrationImpl.java @@ -47,13 +47,9 @@ import com.iluwatar.hexagonal.service.LotteryServiceImpl; public class LotteryAdministrationImpl implements LotteryAdministration { private final LotteryTicketRepository repository; - private final LotteryService service = new LotteryServiceImpl(); - private final LotteryNotifications notifications = new LotteryNotificationsImpl(); - private final WireTransfers bank = new WireTransfersImpl(); - public LotteryAdministrationImpl() { repository = new LotteryTicketInMemoryRepository(); } diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/banking/WireTransfers.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/banking/WireTransfers.java index 61a6567ba..7d21e7bf3 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/banking/WireTransfers.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/banking/WireTransfers.java @@ -29,8 +29,19 @@ package com.iluwatar.hexagonal.banking; */ public interface WireTransfers { + /** + * Set amount of funds for bank account + */ void setFunds(String bankAccount, int amount); + + /** + * Get amount of funds for bank account + */ int getFunds(String bankAccount); + + /** + * Transfer funds from one bank account to another + */ boolean transferFunds(int amount, String sourceBackAccount, String destinationBankAccount); } diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/database/LotteryTicketRepository.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/database/LotteryTicketRepository.java index a531440b4..4c6522838 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/database/LotteryTicketRepository.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/database/LotteryTicketRepository.java @@ -35,9 +35,24 @@ import com.iluwatar.hexagonal.domain.LotteryTicketId; */ public interface LotteryTicketRepository { + /** + * Find lottery ticket by id + */ Optional findById(LotteryTicketId id); + + /** + * Save lottery ticket + */ Optional save(LotteryTicket ticket); + + /** + * Get all lottery tickets + */ Map findAll(); + + /** + * Delete all lottery tickets + */ void deleteAll(); } diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryTicketCheckResult.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryTicketCheckResult.java index 534dc685f..ded65d270 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryTicketCheckResult.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryTicketCheckResult.java @@ -32,7 +32,6 @@ public class LotteryTicketCheckResult { public enum CheckResult { WIN_PRIZE, NO_PRIZE, TICKET_NOT_SUBMITTED }; private final CheckResult checkResult; - private final int prizeAmount; /** diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryTicketId.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryTicketId.java index 358bdd05a..710091222 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryTicketId.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryTicketId.java @@ -24,6 +24,9 @@ package com.iluwatar.hexagonal.domain; import java.util.UUID; +/** + * Lottery ticked id + */ public class LotteryTicketId { private final UUID id; diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/notifications/LotteryNotifications.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/notifications/LotteryNotifications.java index cc9f9d6e5..d7a0cc870 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/notifications/LotteryNotifications.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/notifications/LotteryNotifications.java @@ -30,11 +30,30 @@ import com.iluwatar.hexagonal.domain.PlayerDetails; * */ public interface LotteryNotifications { - + + /** + * Notify lottery ticket was submitted + */ void notifyTicketSubmitted(PlayerDetails details); + + /** + * Notify there was an error submitting lottery ticket + */ void notifyTicketSubmitError(PlayerDetails details); + + /** + * Notify lottery ticket did not win + */ void notifyNoWin(PlayerDetails details); + + /** + * Notify that prize has been paid + */ void notifyPrize(PlayerDetails details, int prizeAmount); + + /** + * Notify that there was an error paying the prize + */ void notifyPrizeError(PlayerDetails details, int prizeAmount); } diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryService.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryService.java index 65270410a..0056e794b 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryService.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryService.java @@ -36,7 +36,13 @@ import com.iluwatar.hexagonal.domain.LotteryTicketId; */ public interface LotteryService { + /** + * Submit lottery ticket to participate in the lottery + */ Optional submitTicket(LotteryTicket ticket); + /** + * Check if lottery ticket has won + */ LotteryTicketCheckResult checkTicketForPrize(LotteryTicketId id, LotteryNumbers winningNumbers); } diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryServiceImpl.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryServiceImpl.java index d446e93be..58df1c7c8 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryServiceImpl.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryServiceImpl.java @@ -49,7 +49,10 @@ public class LotteryServiceImpl implements LotteryService { private final WireTransfers bank = new WireTransfersImpl(); private final LotteryNotifications notifications = new LotteryNotificationsImpl(); - + + /** + * Constructor + */ public LotteryServiceImpl() { repository = new LotteryTicketInMemoryRepository(); }