ClaimantDTOToClaimantConverter.java

package uk.gov.dhsc.htbhf.claimant.converter;

import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
import uk.gov.dhsc.htbhf.claimant.entity.Claimant;
import uk.gov.dhsc.htbhf.claimant.model.ClaimantDTO;

import static org.apache.commons.lang3.StringUtils.upperCase;

/**
 * Converts a {@link ClaimantDTO} into a {@link Claimant}.
 */
@Component
public class ClaimantDTOToClaimantConverter {

    private final AddressDTOToAddressConverter addressConverter;

    public ClaimantDTOToClaimantConverter(AddressDTOToAddressConverter addressConverter) {
        this.addressConverter = addressConverter;
    }

    public Claimant convert(ClaimantDTO claimant) {
        Assert.notNull(claimant, "source ClaimantDTO must not be null");
        return Claimant.builder()
                .firstName(claimant.getFirstName())
                .lastName(claimant.getLastName())
                .dateOfBirth(claimant.getDateOfBirth())
                .expectedDeliveryDate(claimant.getExpectedDeliveryDate())
                .nino(upperCase(claimant.getNino()))
                .phoneNumber(claimant.getPhoneNumber())
                .emailAddress(claimant.getEmailAddress())
                .address(addressConverter.convert(claimant.getAddress()))
                .initiallyDeclaredChildrenDob(claimant.getInitiallyDeclaredChildrenDob())
                .build();
    }

}