Hexagonal pattern fixes (#814)

* Fixed wrong else condition

* Simplified creating Set of numbers

* Deleted unused imports

* Replaced 'for' loop with 'foreach' one

* Replaced explicit type with diamond

* Removed unnecesary brackets from lambda

* Removed unnecesary contains check before adding element to Set

* Fixed typo and changed non-english constant names
This commit is contained in:
Paweł Matejko 2018-10-27 13:09:16 +02:00 committed by Narendra Pathai
parent 70f6e54353
commit 4446e74338
10 changed files with 23 additions and 30 deletions

View File

@ -70,14 +70,14 @@ public class App {
Injector injector = Guice.createInjector(new LotteryTestingModule());
// start new lottery round
LotteryAdministration administartion = injector.getInstance(LotteryAdministration.class);
administartion.resetLottery();
LotteryAdministration administration = injector.getInstance(LotteryAdministration.class);
administration.resetLottery();
// submit some lottery tickets
LotteryService service = injector.getInstance(LotteryService.class);
SampleData.submitTickets(service, 20);
// perform lottery
administartion.performLottery();
administration.performLottery();
}
}

View File

@ -37,7 +37,7 @@ public class InMemoryBank implements WireTransfers {
private static Map<String, Integer> accounts = new HashMap<>();
static {
accounts.put(LotteryConstants.SERVICE_BANK_ACCOUNT, LotteryConstants.SERVICE_BANK_ACCOUNT_SALDO);
accounts.put(LotteryConstants.SERVICE_BANK_ACCOUNT, LotteryConstants.SERVICE_BANK_ACCOUNT_BALANCE);
}
@Override

View File

@ -111,7 +111,7 @@ public class MongoBank implements WireTransfers {
@Override
public int getFunds(String bankAccount) {
Document search = new Document("_id", bankAccount);
List<Document> results = accountsCollection.find(search).limit(1).into(new ArrayList<Document>());
List<Document> results = accountsCollection.find(search).limit(1).into(new ArrayList<>());
if (results.size() > 0) {
return results.get(0).getInteger("funds");
} else {

View File

@ -34,11 +34,11 @@ import org.bson.Document;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
/**
* Mongo lottery ticket database
@ -129,7 +129,7 @@ public class MongoTicketRepository implements LotteryTicketRepository {
@Override
public Optional<LotteryTicket> findById(LotteryTicketId id) {
Document find = new Document("ticketId", id.getId());
List<Document> results = ticketsCollection.find(find).limit(1).into(new ArrayList<Document>());
List<Document> results = ticketsCollection.find(find).limit(1).into(new ArrayList<>());
if (results.size() > 0) {
LotteryTicket lotteryTicket = docToTicket(results.get(0));
return Optional.of(lotteryTicket);
@ -153,7 +153,7 @@ public class MongoTicketRepository implements LotteryTicketRepository {
@Override
public Map<LotteryTicketId, LotteryTicket> findAll() {
Map<LotteryTicketId, LotteryTicket> map = new HashMap<>();
List<Document> docs = ticketsCollection.find(new Document()).into(new ArrayList<Document>());
List<Document> docs = ticketsCollection.find(new Document()).into(new ArrayList<>());
for (Document doc: docs) {
LotteryTicket lotteryTicket = docToTicket(doc);
map.put(lotteryTicket.getId(), lotteryTicket);
@ -169,11 +169,9 @@ public class MongoTicketRepository implements LotteryTicketRepository {
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);
}
Set<Integer> numbers = Arrays.stream(doc.getString("numbers").split(","))
.map(Integer::parseInt)
.collect(Collectors.toSet());
LotteryNumbers lotteryNumbers = LotteryNumbers.create(numbers);
return new LotteryTicket(new LotteryTicketId(doc.getInteger("ticketId")), playerDetails, lotteryNumbers);
}

View File

@ -35,7 +35,7 @@ public class LotteryConstants {
public static final int PRIZE_AMOUNT = 100000;
public static final String SERVICE_BANK_ACCOUNT = "123-123";
public static final int TICKET_PRIZE = 3;
public static final int SERVICE_BANK_ACCOUNT_SALDO = 150000;
public static final int PLAYER_MAX_SALDO = 100;
public static final int SERVICE_BANK_ACCOUNT_BALANCE = 150000;
public static final int PLAYER_MAX_BALANCE = 100;
}

View File

@ -96,9 +96,7 @@ public class LotteryNumbers {
RandomNumberGenerator generator = new RandomNumberGenerator(MIN_NUMBER, MAX_NUMBER);
while (numbers.size() < NUM_NUMBERS) {
int num = generator.nextInt();
if (!numbers.contains(num)) {
numbers.add(num);
}
numbers.add(num);
}
}
@ -162,5 +160,5 @@ public class LotteryNumbers {
return false;
}
return true;
}
}
}

View File

@ -84,9 +84,9 @@ public class SampleData {
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++) {
wireTransfers.setFunds(PLAYERS.get(i).getBankAccount(),
random.nextInt(LotteryConstants.PLAYER_MAX_SALDO));
for (PlayerDetails player : PLAYERS) {
wireTransfers.setFunds(player.getBankAccount(),
random.nextInt(LotteryConstants.PLAYER_MAX_BALANCE));
}
}

View File

@ -54,9 +54,7 @@ class LotteryNumbersTest {
void testNumbersCantBeModified() {
LotteryNumbers numbers = LotteryNumbers.create(
new HashSet<>(Arrays.asList(1, 2, 3, 4)));
assertThrows(UnsupportedOperationException.class, () -> {
numbers.getNumbers().add(5);
});
assertThrows(UnsupportedOperationException.class, () -> numbers.getNumbers().add(5));
}
@Test

View File

@ -101,7 +101,7 @@ class LotteryTest {
assertNotEquals(CheckResult.TICKET_NOT_SUBMITTED, checkResult.getResult());
if (checkResult.getResult().equals(CheckResult.WIN_PRIZE)) {
assertTrue(checkResult.getPrizeAmount() > 0);
} else if (checkResult.getResult().equals(CheckResult.WIN_PRIZE)) {
} else {
assertEquals(0, checkResult.getPrizeAmount());
}
}

View File

@ -28,7 +28,6 @@ import java.util.Arrays;
import java.util.HashSet;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
/**
@ -39,14 +38,14 @@ class LotteryTicketTest {
@Test
void testEquals() {
PlayerDetails details1 = new PlayerDetails("bob@foo.bar", "1212-121212", "+34332322");
LotteryNumbers numbers1 = LotteryNumbers.create(new HashSet<Integer>(Arrays.asList(1, 2, 3, 4)));
LotteryNumbers numbers1 = LotteryNumbers.create(new HashSet<>(Arrays.asList(1, 2, 3, 4)));
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)));
LotteryNumbers numbers2 = LotteryNumbers.create(new HashSet<>(Arrays.asList(1, 2, 3, 4)));
LotteryTicket ticket2 = new LotteryTicket(new LotteryTicketId(), details2, numbers2);
assertEquals(ticket1, ticket2);
PlayerDetails details3 = new PlayerDetails("elsa@foo.bar", "1223-121212", "+49332322");
LotteryNumbers numbers3 = LotteryNumbers.create(new HashSet<Integer>(Arrays.asList(1, 2, 3, 8)));
LotteryNumbers numbers3 = LotteryNumbers.create(new HashSet<>(Arrays.asList(1, 2, 3, 8)));
LotteryTicket ticket3 = new LotteryTicket(new LotteryTicketId(), details3, numbers3);
assertNotEquals(ticket1, ticket3);
}