Hexagonal pattern: Introduce lottery utils class

This commit is contained in:
Ilkka Seppälä 2016-09-17 09:20:33 +03:00
parent 6aa58e8ae6
commit b030cd4eba
3 changed files with 8 additions and 10 deletions

View File

@ -65,7 +65,7 @@ public class LotteryAdministration {
LotteryNumbers numbers = LotteryNumbers.createRandom();
Map<LotteryTicketId, LotteryTicket> tickets = getAllSubmittedTickets();
for (LotteryTicketId id : tickets.keySet()) {
LotteryTicketCheckResult result = new LotteryTicketChecker(repository).checkTicketForPrize(id, numbers);
LotteryTicketCheckResult result = LotteryUtils.checkTicketForPrize(repository, id, numbers);
if (result.getResult().equals(LotteryTicketCheckResult.CheckResult.WIN_PRIZE)) {
boolean transferred = wireTransfers.transferFunds(LotteryConstants.PRIZE_AMOUNT,
LotteryConstants.SERVICE_BANK_ACCOUNT, tickets.get(id).getPlayerDetails().getBankAccount());

View File

@ -72,6 +72,6 @@ public class LotteryService {
* Check if lottery ticket has won
*/
public LotteryTicketCheckResult checkTicketForPrize(LotteryTicketId id, LotteryNumbers winningNumbers) {
return new LotteryTicketChecker(repository).checkTicketForPrize(id, winningNumbers);
return LotteryUtils.checkTicketForPrize(repository, id, winningNumbers);
}
}

View File

@ -27,20 +27,18 @@ import com.iluwatar.hexagonal.database.LotteryTicketRepository;
import java.util.Optional;
/**
* Lottery ticket checker
* Lottery utilities
*/
public class LotteryTicketChecker {
public class LotteryUtils {
private final LotteryTicketRepository repository;
public LotteryTicketChecker(LotteryTicketRepository repository) {
this.repository = repository;
private LotteryUtils() {
}
/**
* Check if lottery ticket has won
* Checks if lottery ticket has won
*/
public LotteryTicketCheckResult checkTicketForPrize(LotteryTicketId id, LotteryNumbers winningNumbers) {
public static LotteryTicketCheckResult checkTicketForPrize(LotteryTicketRepository repository, LotteryTicketId id,
LotteryNumbers winningNumbers) {
Optional<LotteryTicket> optional = repository.findById(id);
if (optional.isPresent()) {
if (optional.get().getNumbers().equals(winningNumbers)) {