RentalJpaMapperImpl.java

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

import com.github.jenkaby.bikerental.rental.domain.model.Rental;
import com.github.jenkaby.bikerental.rental.domain.model.RentalEquipment;
import com.github.jenkaby.bikerental.rental.infrastructure.persistence.entity.RentalEquipmentJpaEntity;
import com.github.jenkaby.bikerental.rental.infrastructure.persistence.entity.RentalJpaEntity;
import com.github.jenkaby.bikerental.shared.mapper.DiscountMapper;
import com.github.jenkaby.bikerental.shared.mapper.DurationMapper;
import com.github.jenkaby.bikerental.shared.mapper.MoneyMapper;
import java.util.ArrayList;
import java.util.List;
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 RentalJpaMapperImpl implements RentalJpaMapper {

    private final MoneyMapper moneyMapper;
    private final DurationMapper durationMapper;
    private final RentalEquipmentJpaMapper rentalEquipmentJpaMapper;
    private final DiscountMapper discountMapper;

    @Autowired
    public RentalJpaMapperImpl(MoneyMapper moneyMapper, DurationMapper durationMapper, RentalEquipmentJpaMapper rentalEquipmentJpaMapper, DiscountMapper discountMapper) {

        this.moneyMapper = moneyMapper;
        this.durationMapper = durationMapper;
        this.rentalEquipmentJpaMapper = rentalEquipmentJpaMapper;
        this.discountMapper = discountMapper;
    }

    @Override
    public Rental toDomain(RentalJpaEntity entity) {
        if ( entity == null ) {
            return null;
        }

        Rental.RentalBuilder rental = Rental.builder();

        rental.plannedDuration( durationMapper.toDuration( entity.getPlannedDurationMinutes() ) );
        rental.actualDuration( durationMapper.toDuration( entity.getActualDurationMinutes() ) );
        rental.equipments( rentalEquipmentJpaEntityListToRentalEquipmentList( entity.getRentalEquipments() ) );
        rental.id( entity.getId() );
        rental.customerId( entity.getCustomerId() );
        rental.status( entity.getStatus() );
        rental.startedAt( entity.getStartedAt() );
        rental.expectedReturnAt( entity.getExpectedReturnAt() );
        rental.actualReturnAt( entity.getActualReturnAt() );
        rental.estimatedCost( moneyMapper.toMoney( entity.getEstimatedCost() ) );
        rental.finalCost( moneyMapper.toMoney( entity.getFinalCost() ) );
        rental.specialTariffId( entity.getSpecialTariffId() );
        rental.specialPrice( moneyMapper.toMoney( entity.getSpecialPrice() ) );
        rental.discountPercent( discountMapper.toDiscount( entity.getDiscountPercent() ) );
        rental.createdAt( entity.getCreatedAt() );
        rental.updatedAt( entity.getUpdatedAt() );

        return rental.build();
    }

    @Override
    public RentalJpaEntity toEntity(Rental rental) {
        if ( rental == null ) {
            return null;
        }

        RentalJpaEntity.RentalJpaEntityBuilder rentalJpaEntity = RentalJpaEntity.builder();

        rentalJpaEntity.actualDurationMinutes( durationMapper.toMinutes( rental.getActualDuration() ) );
        rentalJpaEntity.plannedDurationMinutes( durationMapper.toMinutes( rental.getPlannedDuration() ) );
        rentalJpaEntity.rentalEquipments( rentalEquipmentListToRentalEquipmentJpaEntityList( rental.getEquipments() ) );
        rentalJpaEntity.id( rental.getId() );
        rentalJpaEntity.customerId( rental.getCustomerId() );
        rentalJpaEntity.status( rental.getStatus() );
        rentalJpaEntity.startedAt( rental.getStartedAt() );
        rentalJpaEntity.expectedReturnAt( rental.getExpectedReturnAt() );
        rentalJpaEntity.actualReturnAt( rental.getActualReturnAt() );
        rentalJpaEntity.specialTariffId( rental.getSpecialTariffId() );
        rentalJpaEntity.specialPrice( moneyMapper.toBigDecimal( rental.getSpecialPrice() ) );
        if ( rental.getDiscountPercent() != null ) {
            rentalJpaEntity.discountPercent( discountMapper.toBigDecimal( rental.getDiscountPercent() ).intValue() );
        }
        rentalJpaEntity.createdAt( rental.getCreatedAt() );
        rentalJpaEntity.updatedAt( rental.getUpdatedAt() );

        RentalJpaEntity rentalJpaEntityResult = rentalJpaEntity.build();

        setRelationships( rentalJpaEntityResult );

        return rentalJpaEntityResult;
    }

    protected List<RentalEquipment> rentalEquipmentJpaEntityListToRentalEquipmentList(List<RentalEquipmentJpaEntity> list) {
        if ( list == null ) {
            return null;
        }

        List<RentalEquipment> list1 = new ArrayList<RentalEquipment>( list.size() );
        for ( RentalEquipmentJpaEntity rentalEquipmentJpaEntity : list ) {
            list1.add( rentalEquipmentJpaMapper.toDomain( rentalEquipmentJpaEntity ) );
        }

        return list1;
    }

    protected List<RentalEquipmentJpaEntity> rentalEquipmentListToRentalEquipmentJpaEntityList(List<RentalEquipment> list) {
        if ( list == null ) {
            return null;
        }

        List<RentalEquipmentJpaEntity> list1 = new ArrayList<RentalEquipmentJpaEntity>( list.size() );
        for ( RentalEquipment rentalEquipment : list ) {
            list1.add( rentalEquipmentJpaMapper.toEntity( rentalEquipment ) );
        }

        return list1;
    }
}