first working state.
Customer can be registered and be written into the db
This commit is contained in:
@@ -6,8 +6,8 @@ import lombok.Value;
|
||||
@Value
|
||||
public class Address {
|
||||
String street;
|
||||
int houseNumber;
|
||||
int zipCode;
|
||||
Integer houseNumber;
|
||||
Integer zipCode;
|
||||
String country;
|
||||
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import de.strasser.peter.hexagonal.application.customer.exception.DefaultAdressR
|
||||
import de.strasser.peter.hexagonal.application.customer.exception.UserIsTooYoungExc;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.time.LocalDate;
|
||||
import java.time.Period;
|
||||
import java.util.HashMap;
|
||||
@@ -11,7 +12,7 @@ import java.util.Map;
|
||||
|
||||
@Getter
|
||||
public class Customer {
|
||||
private final Integer id;
|
||||
private final BigInteger id;
|
||||
private String name;
|
||||
private String hashedPassword;
|
||||
private LocalDate birthday;
|
||||
@@ -19,7 +20,7 @@ public class Customer {
|
||||
private Map<Address.AddressType, Address> addresses;
|
||||
private boolean active;
|
||||
|
||||
private Customer(Integer id, String name, String hashedPassword, LocalDate birthDate, Map<Address.AddressType, Address> addresses, boolean active) {
|
||||
private Customer(BigInteger id, String name, String hashedPassword, LocalDate birthDate, Map<Address.AddressType, Address> addresses, boolean active) {
|
||||
this.id = id;
|
||||
this.active = active;
|
||||
this.age = Period.between(birthDate, LocalDate.now()).getYears();
|
||||
@@ -46,7 +47,7 @@ public class Customer {
|
||||
}
|
||||
|
||||
public static Customer createCustomer(
|
||||
Integer id,
|
||||
BigInteger id,
|
||||
String name,
|
||||
String hashedPassword,
|
||||
LocalDate birthDate,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package de.strasser.peter.hexagonal.application.customer.exception;
|
||||
|
||||
public class AddressTypeDoesNotExistsExc extends IllegalArgumentException {
|
||||
public class AddressTypeDoesNotExistsExc extends BusinessException {
|
||||
public AddressTypeDoesNotExistsExc(String type) {
|
||||
super(String.format("Adress of type '%s' does not exist!", type));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package de.strasser.peter.hexagonal.application.customer.exception;
|
||||
|
||||
public abstract class BusinessException extends IllegalStateException {
|
||||
public BusinessException(String error) {
|
||||
super(error);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package de.strasser.peter.hexagonal.application.customer.exception;
|
||||
|
||||
public class DefaultAdressRequiredToActivateExc extends IllegalStateException {
|
||||
public class DefaultAdressRequiredToActivateExc extends BusinessException {
|
||||
|
||||
public DefaultAdressRequiredToActivateExc() {
|
||||
super("Customer needs to have at least a default adress to be able to be activated!");
|
||||
|
||||
@@ -2,7 +2,7 @@ package de.strasser.peter.hexagonal.application.customer.exception;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
|
||||
public class UserIsTooYoungExc extends IllegalArgumentException {
|
||||
public class UserIsTooYoungExc extends BusinessException {
|
||||
public UserIsTooYoungExc(int age) {
|
||||
super(MessageFormat.format("Customer is too young. Expected: > 18 yrs, Actual {0}", age));
|
||||
}
|
||||
|
||||
@@ -5,8 +5,9 @@ import de.strasser.peter.hexagonal.application.customer.port.in.commands.AddAddr
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import java.math.BigInteger;
|
||||
import java.util.List;
|
||||
|
||||
public interface AddAddressUseCase {
|
||||
void addAddresses(@Min(0) Integer customerId, @Valid @NotEmpty List<AddAddressCommand> addresses);
|
||||
void addAddresses(@Min(0) BigInteger customerId, @Valid @NotEmpty List<AddAddressCommand> addresses);
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package de.strasser.peter.hexagonal.application.customer.port.in.commands;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Value;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
|
||||
@Value
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor(force = true)
|
||||
public class AddAddressCommand {
|
||||
|
||||
@@ -3,14 +3,14 @@ package de.strasser.peter.hexagonal.application.customer.port.in.commands;
|
||||
|
||||
import de.strasser.peter.hexagonal.common.validators.SecurePassword;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Value;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.Past;
|
||||
import java.time.LocalDate;
|
||||
|
||||
@Value
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor(force = true)
|
||||
public class RegisterCustomerCommand {
|
||||
|
||||
@@ -2,6 +2,8 @@ package de.strasser.peter.hexagonal.application.customer.port.out;
|
||||
|
||||
import de.strasser.peter.hexagonal.application.customer.domain.Customer;
|
||||
|
||||
import java.math.BigInteger;
|
||||
|
||||
public interface LoadCustomerAdapter {
|
||||
Customer findById(Integer id);
|
||||
Customer findById(BigInteger id);
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
package de.strasser.peter.hexagonal.application.customer.port.out.commands;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Value;
|
||||
|
||||
@Value
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor(force = true)
|
||||
public class ValidateAddressCommand {
|
||||
String street;
|
||||
int houseNumber;
|
||||
int zipCode;
|
||||
Integer houseNumber;
|
||||
Integer zipCode;
|
||||
String country;
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import org.springframework.stereotype.Service;
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import java.math.BigInteger;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -27,7 +28,7 @@ class AddressService implements AddAddressUseCase {
|
||||
private final AddAddressMapper addAddressMapper;
|
||||
|
||||
@Override
|
||||
public void addAddresses(@Min(0) Integer customerId, @Valid @NotEmpty List<AddAddressCommand> addAddressCmds) {
|
||||
public void addAddresses(@Min(0) BigInteger customerId, @Valid @NotEmpty List<AddAddressCommand> addAddressCmds) {
|
||||
final Customer customer = loadCustomerAdapter.findById(customerId);
|
||||
|
||||
final Map<Address.AddressType, Address> addresses = new HashMap<>();
|
||||
|
||||
Reference in New Issue
Block a user