📍Use lombok, reformat, and optimize the code (#1560)

* Use lombok, reformat, and optimize the code

* Fix merge conflicts and some sonar issues

Co-authored-by: va1m <va1m@email.com>
This commit is contained in:
va1m
2021-03-13 13:19:21 +01:00
committed by GitHub
parent 0e26a6adb5
commit 5cf2fe009b
681 changed files with 2472 additions and 4966 deletions

View File

@ -30,16 +30,14 @@ import com.iluwatar.hexagonal.module.LotteryModule;
import com.iluwatar.hexagonal.mongo.MongoConnectionPropertiesLoader;
import com.iluwatar.hexagonal.sampledata.SampleData;
import java.util.Scanner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
/**
* Console interface for lottery administration.
*/
@Slf4j
public class ConsoleAdministration {
private static final Logger LOGGER = LoggerFactory.getLogger(ConsoleAdministration.class);
/**
* Program entry point.
*/

View File

@ -147,7 +147,7 @@ public class MongoTicketRepository implements LotteryTicketRepository {
doc.put("email", ticket.getPlayerDetails().getEmail());
doc.put("bank", ticket.getPlayerDetails().getBankAccount());
doc.put("phone", ticket.getPlayerDetails().getPhoneNumber());
doc.put("numbers", ticket.getNumbers().getNumbersAsString());
doc.put("numbers", ticket.getLotteryNumbers().getNumbersAsString());
ticketsCollection.insertOne(doc);
return Optional.of(new LotteryTicketId(ticketId));
}

View File

@ -29,11 +29,15 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.PrimitiveIterator;
import java.util.Set;
import lombok.EqualsAndHashCode;
import lombok.ToString;
/**
* Value object representing lottery numbers. This lottery uses sets of 4 numbers. The numbers must
* be unique and between 1 and 20.
*/
@EqualsAndHashCode
@ToString
public class LotteryNumbers {
private final Set<Integer> numbers;
@ -106,11 +110,6 @@ public class LotteryNumbers {
}
}
@Override
public String toString() {
return "LotteryNumbers{" + "numbers=" + numbers + '}';
}
/**
* Helper class for generating random numbers.
*/
@ -139,30 +138,4 @@ public class LotteryNumbers {
}
}
@Override
public int hashCode() {
final var prime = 31;
var result = 1;
result = prime * result + ((numbers == null) ? 0 : numbers.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
var other = (LotteryNumbers) obj;
if (numbers == null) {
return other.numbers == null;
} else {
return numbers.equals(other.numbers);
}
}
}

View File

@ -23,63 +23,22 @@
package com.iluwatar.hexagonal.domain;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.ToString;
/**
* Immutable value object representing lottery ticket.
*/
@Getter
@ToString
@RequiredArgsConstructor
public class LotteryTicket {
private LotteryTicketId id;
private final LotteryTicketId id;
private final PlayerDetails playerDetails;
private final LotteryNumbers lotteryNumbers;
/**
* Constructor.
*/
public LotteryTicket(LotteryTicketId id, PlayerDetails details, LotteryNumbers numbers) {
this.id = id;
playerDetails = details;
lotteryNumbers = numbers;
}
/**
* Get player details.
*
* @return player details
*/
public PlayerDetails getPlayerDetails() {
return playerDetails;
}
/**
* Get lottery numbers.
*
* @return lottery numbers
*/
public LotteryNumbers getNumbers() {
return lotteryNumbers;
}
/**
* Get ticket id.
*
* @return id
*/
public LotteryTicketId getId() {
return id;
}
/**
* Set ticket id.
*/
public void setId(LotteryTicketId id) {
this.id = id;
}
@Override
public String toString() {
return playerDetails.toString() + " " + lotteryNumbers.toString();
}
@Override
public int hashCode() {
final var prime = 31;
@ -114,4 +73,5 @@ public class LotteryTicket {
return playerDetails.equals(other.playerDetails);
}
}
}

View File

@ -23,9 +23,16 @@
package com.iluwatar.hexagonal.domain;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
* Represents lottery ticket check result.
*/
@Getter
@EqualsAndHashCode
@RequiredArgsConstructor
public class LotteryTicketCheckResult {
/**
@ -37,64 +44,15 @@ public class LotteryTicketCheckResult {
TICKET_NOT_SUBMITTED
}
private final CheckResult checkResult;
private final CheckResult result;
private final int prizeAmount;
/**
* Constructor.
*/
public LotteryTicketCheckResult(CheckResult result) {
checkResult = result;
this.result = result;
prizeAmount = 0;
}
/**
* Constructor.
*/
public LotteryTicketCheckResult(CheckResult result, int amount) {
checkResult = result;
prizeAmount = amount;
}
/**
* Get result.
*
* @return check result
*/
public CheckResult getResult() {
return checkResult;
}
/**
* Get prize amount.
*
* @return prize amount
*/
public int getPrizeAmount() {
return prizeAmount;
}
@Override
public int hashCode() {
final var prime = 31;
var result = 1;
result = prime * result + ((checkResult == null) ? 0 : checkResult.hashCode());
result = prime * result + prizeAmount;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
var other = (LotteryTicketCheckResult) obj;
return checkResult == other.checkResult && prizeAmount == other.prizeAmount;
}
}

View File

@ -24,10 +24,16 @@
package com.iluwatar.hexagonal.domain;
import java.util.concurrent.atomic.AtomicInteger;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
* Lottery ticked id.
*/
@Getter
@EqualsAndHashCode
@RequiredArgsConstructor
public class LotteryTicketId {
private static final AtomicInteger numAllocated = new AtomicInteger(0);
@ -37,35 +43,9 @@ public class LotteryTicketId {
this.id = numAllocated.incrementAndGet();
}
public LotteryTicketId(int id) {
this.id = id;
}
public int getId() {
return id;
}
@Override
public String toString() {
return String.format("%d", id);
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
var that = (LotteryTicketId) o;
return id == that.id;
}
@Override
public int hashCode() {
return id;
}
}

View File

@ -44,7 +44,7 @@ public class LotteryUtils {
) {
var optional = repository.findById(id);
if (optional.isPresent()) {
if (optional.get().getNumbers().equals(winningNumbers)) {
if (optional.get().getLotteryNumbers().equals(winningNumbers)) {
return new LotteryTicketCheckResult(CheckResult.WIN_PRIZE, 1000);
} else {
return new LotteryTicketCheckResult(CheckResult.NO_PRIZE);

View File

@ -23,98 +23,22 @@
package com.iluwatar.hexagonal.domain;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.ToString;
/**
* Immutable value object containing lottery player details.
*/
@EqualsAndHashCode
@ToString
@Getter
@RequiredArgsConstructor
public class PlayerDetails {
private final String emailAddress;
private final String bankAccountNumber;
private final String email;
private final String bankAccount;
private final String phoneNumber;
/**
* Constructor.
*/
public PlayerDetails(String email, String bankAccount, String phone) {
emailAddress = email;
bankAccountNumber = bankAccount;
phoneNumber = phone;
}
/**
* Get email.
*
* @return email
*/
public String getEmail() {
return emailAddress;
}
/**
* Get back account number.
*
* @return bank account number
*/
public String getBankAccount() {
return bankAccountNumber;
}
/**
* Get phone number.
*
* @return phone number
*/
public String getPhoneNumber() {
return phoneNumber;
}
@Override
public String toString() {
return "PlayerDetails{" + "emailAddress='" + emailAddress + '\''
+ ", bankAccountNumber='" + bankAccountNumber + '\''
+ ", phoneNumber='" + phoneNumber + '\'' + '}';
}
@Override
public int hashCode() {
final var prime = 31;
var result = 1;
result = prime * result + ((bankAccountNumber == null) ? 0 : bankAccountNumber.hashCode());
result = prime * result + ((emailAddress == null) ? 0 : emailAddress.hashCode());
result = prime * result + ((phoneNumber == null) ? 0 : phoneNumber.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
var other = (PlayerDetails) obj;
if (bankAccountNumber == null) {
if (other.bankAccountNumber != null) {
return false;
}
} else if (!bankAccountNumber.equals(other.bankAccountNumber)) {
return false;
}
if (emailAddress == null) {
if (other.emailAddress != null) {
return false;
}
} else if (!emailAddress.equals(other.emailAddress)) {
return false;
}
if (phoneNumber == null) {
return other.phoneNumber == null;
} else {
return phoneNumber.equals(other.phoneNumber);
}
}
}

View File

@ -24,16 +24,14 @@
package com.iluwatar.hexagonal.eventlog;
import com.iluwatar.hexagonal.domain.PlayerDetails;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
/**
* Standard output event log.
*/
@Slf4j
public class StdOutEventLog implements LotteryEventLog {
private static final Logger LOGGER = LoggerFactory.getLogger(StdOutEventLog.class);
@Override
public void ticketSubmitted(PlayerDetails details) {
LOGGER.info("Lottery ticket for {} was submitted. Bank account {} was charged for 3 credits.",

View File

@ -29,16 +29,14 @@ import com.iluwatar.hexagonal.domain.LotteryService;
import com.iluwatar.hexagonal.module.LotteryModule;
import com.iluwatar.hexagonal.mongo.MongoConnectionPropertiesLoader;
import java.util.Scanner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
/**
* Console interface for lottery players.
*/
@Slf4j
public class ConsoleLottery {
private static final Logger LOGGER = LoggerFactory.getLogger(ConsoleLottery.class);
/**
* Program entry point.
*/

View File

@ -88,7 +88,7 @@ class MongoTicketRepositoryTest {
assertEquals("foo@bar.com", ticket.getPlayerDetails().getEmail());
assertEquals("123-123", ticket.getPlayerDetails().getBankAccount());
assertEquals("07001234", ticket.getPlayerDetails().getPhoneNumber());
assertEquals(original.getNumbers(), ticket.getNumbers());
assertEquals(original.getLotteryNumbers(), ticket.getLotteryNumbers());
// clear the collection
repository.deleteAll();
assertEquals(0, repository.getTicketsCollection().count());