CustomerJpaMapperImpl.java

package com.github.jenkaby.bikerental.customer.infrastructure.persistence.mapper;

import com.github.jenkaby.bikerental.customer.domain.model.Customer;
import com.github.jenkaby.bikerental.customer.infrastructure.persistence.entity.CustomerJpaEntity;
import com.github.jenkaby.bikerental.customer.shared.mapper.EmailAddressMapper;
import com.github.jenkaby.bikerental.customer.shared.mapper.PhoneNumberMapper;
import javax.annotation.processing.Generated;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Generated(
    value = "org.mapstruct.ap.MappingProcessor",
    comments = "version: 1.6.3, compiler: IncrementalProcessingEnvironment from gradle-language-java-9.4.1.jar, environment: Java 21.0.10 (Amazon.com Inc.)"
)
@Component
public class CustomerJpaMapperImpl implements CustomerJpaMapper {

    private final PhoneNumberMapper phoneNumberMapper;
    private final EmailAddressMapper emailAddressMapper;

    @Autowired
    public CustomerJpaMapperImpl(PhoneNumberMapper phoneNumberMapper, EmailAddressMapper emailAddressMapper) {

        this.phoneNumberMapper = phoneNumberMapper;
        this.emailAddressMapper = emailAddressMapper;
    }

    @Override
    public Customer toDomain(CustomerJpaEntity entity) {
        if ( entity == null ) {
            return null;
        }

        Customer.CustomerBuilder customer = Customer.builder();

        customer.id( entity.getId() );
        customer.phone( phoneNumberMapper.toPhoneNumber( entity.getPhone() ) );
        customer.firstName( entity.getFirstName() );
        customer.lastName( entity.getLastName() );
        customer.email( emailAddressMapper.toEmailAddress( entity.getEmail() ) );
        customer.birthDate( entity.getBirthDate() );
        customer.comments( entity.getComments() );

        return customer.build();
    }

    @Override
    public CustomerJpaEntity toEntity(Customer customer) {
        if ( customer == null ) {
            return null;
        }

        CustomerJpaEntity customerJpaEntity = new CustomerJpaEntity();

        customerJpaEntity.setId( customer.getId() );
        customerJpaEntity.setPhone( phoneNumberMapper.toString( customer.getPhone() ) );
        customerJpaEntity.setFirstName( customer.getFirstName() );
        customerJpaEntity.setLastName( customer.getLastName() );
        customerJpaEntity.setEmail( emailAddressMapper.toString( customer.getEmail() ) );
        customerJpaEntity.setBirthDate( customer.getBirthDate() );
        customerJpaEntity.setComments( customer.getComments() );

        return customerJpaEntity;
    }
}