Hexagonal pattern: Remove unnecessary factories
This commit is contained in:
parent
914d1353a1
commit
6aa58e8ae6
@ -180,7 +180,7 @@ public class MongoTicketRepository implements LotteryTicketRepository {
|
||||
}
|
||||
|
||||
private LotteryTicket docToTicket(Document doc) {
|
||||
PlayerDetails playerDetails = PlayerDetails.create(doc.getString("email"), doc.getString("bank"),
|
||||
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();
|
||||
HashSet<Integer> numbers = new HashSet<>();
|
||||
@ -188,6 +188,6 @@ public class MongoTicketRepository implements LotteryTicketRepository {
|
||||
numbers.add(num);
|
||||
}
|
||||
LotteryNumbers lotteryNumbers = LotteryNumbers.create(numbers);
|
||||
return LotteryTicket.create(new LotteryTicketId(doc.getInteger("ticketId")), playerDetails, lotteryNumbers);
|
||||
return new LotteryTicket(new LotteryTicketId(doc.getInteger("ticketId")), playerDetails, lotteryNumbers);
|
||||
}
|
||||
}
|
||||
|
@ -39,7 +39,6 @@ public class LotteryAdministration {
|
||||
private final LotteryTicketRepository repository;
|
||||
private final LotteryEventLog notifications;
|
||||
private final WireTransfers wireTransfers;
|
||||
private final LotteryTicketChecker checker;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
@ -50,7 +49,6 @@ public class LotteryAdministration {
|
||||
this.repository = repository;
|
||||
this.notifications = notifications;
|
||||
this.wireTransfers = wireTransfers;
|
||||
this.checker = new LotteryTicketChecker(this.repository);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -67,7 +65,7 @@ public class LotteryAdministration {
|
||||
LotteryNumbers numbers = LotteryNumbers.createRandom();
|
||||
Map<LotteryTicketId, LotteryTicket> tickets = getAllSubmittedTickets();
|
||||
for (LotteryTicketId id : tickets.keySet()) {
|
||||
LotteryTicketCheckResult result = checker.checkTicketForPrize(id, numbers);
|
||||
LotteryTicketCheckResult result = new LotteryTicketChecker(repository).checkTicketForPrize(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());
|
||||
|
@ -29,6 +29,9 @@ package com.iluwatar.hexagonal.domain;
|
||||
*/
|
||||
public class LotteryConstants {
|
||||
|
||||
private LotteryConstants() {
|
||||
}
|
||||
|
||||
public static final int PRIZE_AMOUNT = 100000;
|
||||
public static final String SERVICE_BANK_ACCOUNT = "123-123";
|
||||
public static final int TICKET_PRIZE = 3;
|
||||
|
@ -39,7 +39,6 @@ public class LotteryService {
|
||||
private final LotteryTicketRepository repository;
|
||||
private final LotteryEventLog notifications;
|
||||
private final WireTransfers wireTransfers;
|
||||
private final LotteryTicketChecker checker;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
@ -50,7 +49,6 @@ public class LotteryService {
|
||||
this.repository = repository;
|
||||
this.notifications = notifications;
|
||||
this.wireTransfers = wireTransfers;
|
||||
this.checker = new LotteryTicketChecker(this.repository);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -74,6 +72,6 @@ public class LotteryService {
|
||||
* Check if lottery ticket has won
|
||||
*/
|
||||
public LotteryTicketCheckResult checkTicketForPrize(LotteryTicketId id, LotteryNumbers winningNumbers) {
|
||||
return checker.checkTicketForPrize(id, winningNumbers);
|
||||
return new LotteryTicketChecker(repository).checkTicketForPrize(id, winningNumbers);
|
||||
}
|
||||
}
|
||||
|
@ -36,19 +36,12 @@ public class LotteryTicket {
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
private LotteryTicket(LotteryTicketId id, PlayerDetails details, LotteryNumbers numbers) {
|
||||
public LotteryTicket(LotteryTicketId id, PlayerDetails details, LotteryNumbers numbers) {
|
||||
this.id = id;
|
||||
playerDetails = details;
|
||||
lotteryNumbers = numbers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Factory for creating lottery tickets;
|
||||
*/
|
||||
public static LotteryTicket create(LotteryTicketId id, PlayerDetails details, LotteryNumbers numbers) {
|
||||
return new LotteryTicket(id, details, numbers);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return player details
|
||||
*/
|
||||
|
@ -36,19 +36,12 @@ public class PlayerDetails {
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
private PlayerDetails(String email, String bankAccount, String phone) {
|
||||
public PlayerDetails(String email, String bankAccount, String phone) {
|
||||
emailAddress = email;
|
||||
bankAccountNumber = bankAccount;
|
||||
phoneNumber = phone;
|
||||
}
|
||||
|
||||
/**
|
||||
* Factory for creating new objects.
|
||||
*/
|
||||
public static PlayerDetails create(String email, String bankAccount, String phone) {
|
||||
return new PlayerDetails(email, bankAccount, phone);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return email
|
||||
*/
|
||||
|
@ -43,45 +43,45 @@ public class SampleData {
|
||||
|
||||
static {
|
||||
PLAYERS = new ArrayList<>();
|
||||
PLAYERS.add(PlayerDetails.create("john@google.com", "312-342", "+3242434242"));
|
||||
PLAYERS.add(PlayerDetails.create("mary@google.com", "234-987", "+23452346"));
|
||||
PLAYERS.add(PlayerDetails.create("steve@google.com", "833-836", "+63457543"));
|
||||
PLAYERS.add(PlayerDetails.create("wayne@google.com", "319-826", "+24626"));
|
||||
PLAYERS.add(PlayerDetails.create("johnie@google.com", "983-322", "+3635635"));
|
||||
PLAYERS.add(PlayerDetails.create("andy@google.com", "934-734", "+0898245"));
|
||||
PLAYERS.add(PlayerDetails.create("richard@google.com", "536-738", "+09845325"));
|
||||
PLAYERS.add(PlayerDetails.create("kevin@google.com", "453-936", "+2423532"));
|
||||
PLAYERS.add(PlayerDetails.create("arnold@google.com", "114-988", "+5646346524"));
|
||||
PLAYERS.add(PlayerDetails.create("ian@google.com", "663-765", "+928394235"));
|
||||
PLAYERS.add(PlayerDetails.create("robin@google.com", "334-763", "+35448"));
|
||||
PLAYERS.add(PlayerDetails.create("ted@google.com", "735-964", "+98752345"));
|
||||
PLAYERS.add(PlayerDetails.create("larry@google.com", "734-853", "+043842423"));
|
||||
PLAYERS.add(PlayerDetails.create("calvin@google.com", "334-746", "+73294135"));
|
||||
PLAYERS.add(PlayerDetails.create("jacob@google.com", "444-766", "+358042354"));
|
||||
PLAYERS.add(PlayerDetails.create("edwin@google.com", "895-345", "+9752435"));
|
||||
PLAYERS.add(PlayerDetails.create("mary@google.com", "760-009", "+34203542"));
|
||||
PLAYERS.add(PlayerDetails.create("lolita@google.com", "425-907", "+9872342"));
|
||||
PLAYERS.add(PlayerDetails.create("bruno@google.com", "023-638", "+673824122"));
|
||||
PLAYERS.add(PlayerDetails.create("peter@google.com", "335-886", "+5432503945"));
|
||||
PLAYERS.add(PlayerDetails.create("warren@google.com", "225-946", "+9872341324"));
|
||||
PLAYERS.add(PlayerDetails.create("monica@google.com", "265-748", "+134124"));
|
||||
PLAYERS.add(PlayerDetails.create("ollie@google.com", "190-045", "+34453452"));
|
||||
PLAYERS.add(PlayerDetails.create("yngwie@google.com", "241-465", "+9897641231"));
|
||||
PLAYERS.add(PlayerDetails.create("lars@google.com", "746-936", "+42345298345"));
|
||||
PLAYERS.add(PlayerDetails.create("bobbie@google.com", "946-384", "+79831742"));
|
||||
PLAYERS.add(PlayerDetails.create("tyron@google.com", "310-992", "+0498837412"));
|
||||
PLAYERS.add(PlayerDetails.create("tyrell@google.com", "032-045", "+67834134"));
|
||||
PLAYERS.add(PlayerDetails.create("nadja@google.com", "000-346", "+498723"));
|
||||
PLAYERS.add(PlayerDetails.create("wendy@google.com", "994-989", "+987324454"));
|
||||
PLAYERS.add(PlayerDetails.create("luke@google.com", "546-634", "+987642435"));
|
||||
PLAYERS.add(PlayerDetails.create("bjorn@google.com", "342-874", "+7834325"));
|
||||
PLAYERS.add(PlayerDetails.create("lisa@google.com", "024-653", "+980742154"));
|
||||
PLAYERS.add(PlayerDetails.create("anton@google.com", "834-935", "+876423145"));
|
||||
PLAYERS.add(PlayerDetails.create("bruce@google.com", "284-936", "+09843212345"));
|
||||
PLAYERS.add(PlayerDetails.create("ray@google.com", "843-073", "+678324123"));
|
||||
PLAYERS.add(PlayerDetails.create("ron@google.com", "637-738", "+09842354"));
|
||||
PLAYERS.add(PlayerDetails.create("xavier@google.com", "143-947", "+375245"));
|
||||
PLAYERS.add(PlayerDetails.create("harriet@google.com", "842-404", "+131243252"));
|
||||
PLAYERS.add(new PlayerDetails("john@google.com", "312-342", "+3242434242"));
|
||||
PLAYERS.add(new PlayerDetails("mary@google.com", "234-987", "+23452346"));
|
||||
PLAYERS.add(new PlayerDetails("steve@google.com", "833-836", "+63457543"));
|
||||
PLAYERS.add(new PlayerDetails("wayne@google.com", "319-826", "+24626"));
|
||||
PLAYERS.add(new PlayerDetails("johnie@google.com", "983-322", "+3635635"));
|
||||
PLAYERS.add(new PlayerDetails("andy@google.com", "934-734", "+0898245"));
|
||||
PLAYERS.add(new PlayerDetails("richard@google.com", "536-738", "+09845325"));
|
||||
PLAYERS.add(new PlayerDetails("kevin@google.com", "453-936", "+2423532"));
|
||||
PLAYERS.add(new PlayerDetails("arnold@google.com", "114-988", "+5646346524"));
|
||||
PLAYERS.add(new PlayerDetails("ian@google.com", "663-765", "+928394235"));
|
||||
PLAYERS.add(new PlayerDetails("robin@google.com", "334-763", "+35448"));
|
||||
PLAYERS.add(new PlayerDetails("ted@google.com", "735-964", "+98752345"));
|
||||
PLAYERS.add(new PlayerDetails("larry@google.com", "734-853", "+043842423"));
|
||||
PLAYERS.add(new PlayerDetails("calvin@google.com", "334-746", "+73294135"));
|
||||
PLAYERS.add(new PlayerDetails("jacob@google.com", "444-766", "+358042354"));
|
||||
PLAYERS.add(new PlayerDetails("edwin@google.com", "895-345", "+9752435"));
|
||||
PLAYERS.add(new PlayerDetails("mary@google.com", "760-009", "+34203542"));
|
||||
PLAYERS.add(new PlayerDetails("lolita@google.com", "425-907", "+9872342"));
|
||||
PLAYERS.add(new PlayerDetails("bruno@google.com", "023-638", "+673824122"));
|
||||
PLAYERS.add(new PlayerDetails("peter@google.com", "335-886", "+5432503945"));
|
||||
PLAYERS.add(new PlayerDetails("warren@google.com", "225-946", "+9872341324"));
|
||||
PLAYERS.add(new PlayerDetails("monica@google.com", "265-748", "+134124"));
|
||||
PLAYERS.add(new PlayerDetails("ollie@google.com", "190-045", "+34453452"));
|
||||
PLAYERS.add(new PlayerDetails("yngwie@google.com", "241-465", "+9897641231"));
|
||||
PLAYERS.add(new PlayerDetails("lars@google.com", "746-936", "+42345298345"));
|
||||
PLAYERS.add(new PlayerDetails("bobbie@google.com", "946-384", "+79831742"));
|
||||
PLAYERS.add(new PlayerDetails("tyron@google.com", "310-992", "+0498837412"));
|
||||
PLAYERS.add(new PlayerDetails("tyrell@google.com", "032-045", "+67834134"));
|
||||
PLAYERS.add(new PlayerDetails("nadja@google.com", "000-346", "+498723"));
|
||||
PLAYERS.add(new PlayerDetails("wendy@google.com", "994-989", "+987324454"));
|
||||
PLAYERS.add(new PlayerDetails("luke@google.com", "546-634", "+987642435"));
|
||||
PLAYERS.add(new PlayerDetails("bjorn@google.com", "342-874", "+7834325"));
|
||||
PLAYERS.add(new PlayerDetails("lisa@google.com", "024-653", "+980742154"));
|
||||
PLAYERS.add(new PlayerDetails("anton@google.com", "834-935", "+876423145"));
|
||||
PLAYERS.add(new PlayerDetails("bruce@google.com", "284-936", "+09843212345"));
|
||||
PLAYERS.add(new PlayerDetails("ray@google.com", "843-073", "+678324123"));
|
||||
PLAYERS.add(new PlayerDetails("ron@google.com", "637-738", "+09842354"));
|
||||
PLAYERS.add(new PlayerDetails("xavier@google.com", "143-947", "+375245"));
|
||||
PLAYERS.add(new PlayerDetails("harriet@google.com", "842-404", "+131243252"));
|
||||
InMemoryBank wireTransfers = new InMemoryBank();
|
||||
Random random = new Random();
|
||||
for (int i = 0; i < PLAYERS.size(); i++) {
|
||||
@ -95,7 +95,7 @@ public class SampleData {
|
||||
*/
|
||||
public static void submitTickets(LotteryService lotteryService, int numTickets) {
|
||||
for (int i = 0; i < numTickets; i++) {
|
||||
LotteryTicket ticket = LotteryTicket.create(new LotteryTicketId(),
|
||||
LotteryTicket ticket = new LotteryTicket(new LotteryTicketId(),
|
||||
getRandomPlayerDetails(), LotteryNumbers.createRandom());
|
||||
lotteryService.submitTicket(ticket);
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ public class ConsoleLottery {
|
||||
String account = readString(scanner);
|
||||
System.out.println("What is your phone number?");
|
||||
String phone = readString(scanner);
|
||||
PlayerDetails details = PlayerDetails.create(email, account, phone);
|
||||
PlayerDetails details = new PlayerDetails(email, account, phone);
|
||||
System.out.println("Give 4 comma separated lottery numbers?");
|
||||
String numbers = readString(scanner);
|
||||
try {
|
||||
@ -86,7 +86,7 @@ public class ConsoleLottery {
|
||||
chosen.add(Integer.parseInt(parts[i]));
|
||||
}
|
||||
LotteryNumbers lotteryNumbers = LotteryNumbers.create(chosen);
|
||||
LotteryTicket lotteryTicket = LotteryTicket.create(new LotteryTicketId(), details, lotteryNumbers);
|
||||
LotteryTicket lotteryTicket = new LotteryTicket(new LotteryTicketId(), details, lotteryNumbers);
|
||||
Optional<LotteryTicketId> id = service.submitTicket(lotteryTicket);
|
||||
if (id.isPresent()) {
|
||||
System.out.println("Submitted lottery ticket with id: " + id.get());
|
||||
|
@ -76,9 +76,9 @@ public class MongoTicketRepositoryTest {
|
||||
@Test
|
||||
public void testCrudOperations() {
|
||||
// create new lottery ticket and save it
|
||||
PlayerDetails details = PlayerDetails.create("foo@bar.com", "123-123", "07001234");
|
||||
PlayerDetails details = new PlayerDetails("foo@bar.com", "123-123", "07001234");
|
||||
LotteryNumbers random = LotteryNumbers.createRandom();
|
||||
LotteryTicket original = LotteryTicket.create(new LotteryTicketId(), details, random);
|
||||
LotteryTicket original = new LotteryTicket(new LotteryTicketId(), details, random);
|
||||
Optional<LotteryTicketId> saved = repository.save(original);
|
||||
assertEquals(1, repository.getTicketsCollection().count());
|
||||
assertTrue(saved.isPresent());
|
||||
|
@ -34,16 +34,16 @@ public class LotteryTicketTest {
|
||||
|
||||
@Test
|
||||
public void testEquals() {
|
||||
PlayerDetails details1 = PlayerDetails.create("bob@foo.bar", "1212-121212", "+34332322");
|
||||
PlayerDetails details1 = new PlayerDetails("bob@foo.bar", "1212-121212", "+34332322");
|
||||
LotteryNumbers numbers1 = LotteryNumbers.create(new HashSet<Integer>(Arrays.asList(1, 2, 3, 4)));
|
||||
LotteryTicket ticket1 = LotteryTicket.create(new LotteryTicketId(), details1, numbers1);
|
||||
PlayerDetails details2 = PlayerDetails.create("bob@foo.bar", "1212-121212", "+34332322");
|
||||
LotteryTicket ticket1 = new LotteryTicket(new LotteryTicketId(), details1, numbers1);
|
||||
PlayerDetails details2 = new PlayerDetails("bob@foo.bar", "1212-121212", "+34332322");
|
||||
LotteryNumbers numbers2 = LotteryNumbers.create(new HashSet<Integer>(Arrays.asList(1, 2, 3, 4)));
|
||||
LotteryTicket ticket2 = LotteryTicket.create(new LotteryTicketId(), details2, numbers2);
|
||||
LotteryTicket ticket2 = new LotteryTicket(new LotteryTicketId(), details2, numbers2);
|
||||
assertEquals(ticket1, ticket2);
|
||||
PlayerDetails details3 = PlayerDetails.create("elsa@foo.bar", "1223-121212", "+49332322");
|
||||
PlayerDetails details3 = new PlayerDetails("elsa@foo.bar", "1223-121212", "+49332322");
|
||||
LotteryNumbers numbers3 = LotteryNumbers.create(new HashSet<Integer>(Arrays.asList(1, 2, 3, 8)));
|
||||
LotteryTicket ticket3 = LotteryTicket.create(new LotteryTicketId(), details3, numbers3);
|
||||
LotteryTicket ticket3 = new LotteryTicket(new LotteryTicketId(), details3, numbers3);
|
||||
assertFalse(ticket1.equals(ticket3));
|
||||
}
|
||||
}
|
||||
|
@ -36,10 +36,10 @@ public class PlayerDetailsTest {
|
||||
|
||||
@Test
|
||||
public void testEquals() {
|
||||
PlayerDetails details1 = PlayerDetails.create("tom@foo.bar", "11212-123434", "+12323425");
|
||||
PlayerDetails details2 = PlayerDetails.create("tom@foo.bar", "11212-123434", "+12323425");
|
||||
PlayerDetails details1 = new PlayerDetails("tom@foo.bar", "11212-123434", "+12323425");
|
||||
PlayerDetails details2 = new PlayerDetails("tom@foo.bar", "11212-123434", "+12323425");
|
||||
assertEquals(details1, details2);
|
||||
PlayerDetails details3 = PlayerDetails.create("john@foo.bar", "16412-123439", "+34323432");
|
||||
PlayerDetails details3 = new PlayerDetails("john@foo.bar", "16412-123439", "+34323432");
|
||||
assertFalse(details1.equals(details3));
|
||||
}
|
||||
}
|
||||
|
@ -59,7 +59,7 @@ public class MongoEventLogTest {
|
||||
|
||||
@Test
|
||||
public void testFundTransfers() {
|
||||
PlayerDetails playerDetails = PlayerDetails.create("john@wayne.com", "000-000", "03432534543");
|
||||
PlayerDetails playerDetails = new PlayerDetails("john@wayne.com", "000-000", "03432534543");
|
||||
mongoEventLog.prizeError(playerDetails, 1000);
|
||||
assertEquals(1, mongoEventLog.getEventsCollection().count());
|
||||
mongoEventLog.prizeError(playerDetails, 1000);
|
||||
|
@ -50,8 +50,8 @@ public class LotteryTestUtils {
|
||||
*/
|
||||
public static LotteryTicket createLotteryTicket(String email, String account, String phone,
|
||||
Set<Integer> givenNumbers) {
|
||||
PlayerDetails details = PlayerDetails.create(email, account, phone);
|
||||
PlayerDetails details = new PlayerDetails(email, account, phone);
|
||||
LotteryNumbers numbers = LotteryNumbers.create(givenNumbers);
|
||||
return LotteryTicket.create(new LotteryTicketId(), details, numbers);
|
||||
return new LotteryTicket(new LotteryTicketId(), details, numbers);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user