TransactionJpaMapperImpl.java

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

import com.github.jenkaby.bikerental.finance.domain.model.Transaction;
import com.github.jenkaby.bikerental.finance.domain.model.TransactionRecord;
import com.github.jenkaby.bikerental.finance.infrastructure.persistence.entity.TransactionJpaEntity;
import com.github.jenkaby.bikerental.finance.infrastructure.persistence.entity.TransactionRecordJpaEntity;
import com.github.jenkaby.bikerental.shared.mapper.IdempotencyKeyMapper;
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 TransactionJpaMapperImpl implements TransactionJpaMapper {

    private final MoneyMapper moneyMapper;
    private final IdempotencyKeyMapper idempotencyKeyMapper;
    private final TransactionRecordMapper transactionRecordMapper;

    @Autowired
    public TransactionJpaMapperImpl(MoneyMapper moneyMapper, IdempotencyKeyMapper idempotencyKeyMapper, TransactionRecordMapper transactionRecordMapper) {

        this.moneyMapper = moneyMapper;
        this.idempotencyKeyMapper = idempotencyKeyMapper;
        this.transactionRecordMapper = transactionRecordMapper;
    }

    @Override
    public Transaction toDomain(TransactionJpaEntity entity) {
        if ( entity == null ) {
            return null;
        }

        Transaction.TransactionBuilder transaction = Transaction.builder();

        transaction.records( transactionRecordJpaEntityListToTransactionRecordList( entity.getRecords() ) );
        transaction.type( entity.getTransactionType() );
        transaction.id( entity.getId() );
        transaction.paymentMethod( entity.getPaymentMethod() );
        transaction.amount( moneyMapper.toMoney( entity.getAmount() ) );
        transaction.customerId( entity.getCustomerId() );
        transaction.operatorId( entity.getOperatorId() );
        transaction.sourceType( entity.getSourceType() );
        transaction.sourceId( entity.getSourceId() );
        transaction.recordedAt( entity.getRecordedAt() );
        transaction.idempotencyKey( idempotencyKeyMapper.toIdempotencyKey( entity.getIdempotencyKey() ) );
        transaction.reason( entity.getReason() );

        return transaction.build();
    }

    @Override
    public TransactionJpaEntity toEntity(Transaction domain) {
        if ( domain == null ) {
            return null;
        }

        TransactionJpaEntity.TransactionJpaEntityBuilder transactionJpaEntity = TransactionJpaEntity.builder();

        transactionJpaEntity.records( transactionRecordListToTransactionRecordJpaEntityList( domain.getRecords() ) );
        transactionJpaEntity.transactionType( domain.getType() );
        transactionJpaEntity.id( domain.getId() );
        transactionJpaEntity.paymentMethod( domain.getPaymentMethod() );
        transactionJpaEntity.amount( moneyMapper.toBigDecimal( domain.getAmount() ) );
        transactionJpaEntity.customerId( domain.getCustomerId() );
        transactionJpaEntity.operatorId( domain.getOperatorId() );
        transactionJpaEntity.sourceType( domain.getSourceType() );
        transactionJpaEntity.sourceId( domain.getSourceId() );
        transactionJpaEntity.recordedAt( domain.getRecordedAt() );
        transactionJpaEntity.idempotencyKey( idempotencyKeyMapper.toUuid( domain.getIdempotencyKey() ) );
        transactionJpaEntity.reason( domain.getReason() );

        TransactionJpaEntity transactionJpaEntityResult = transactionJpaEntity.build();

        setTransactionRelationships( transactionJpaEntityResult );

        return transactionJpaEntityResult;
    }

    protected List<TransactionRecord> transactionRecordJpaEntityListToTransactionRecordList(List<TransactionRecordJpaEntity> list) {
        if ( list == null ) {
            return null;
        }

        List<TransactionRecord> list1 = new ArrayList<TransactionRecord>( list.size() );
        for ( TransactionRecordJpaEntity transactionRecordJpaEntity : list ) {
            list1.add( transactionRecordMapper.toDomain( transactionRecordJpaEntity ) );
        }

        return list1;
    }

    protected List<TransactionRecordJpaEntity> transactionRecordListToTransactionRecordJpaEntityList(List<TransactionRecord> list) {
        if ( list == null ) {
            return null;
        }

        List<TransactionRecordJpaEntity> list1 = new ArrayList<TransactionRecordJpaEntity>( list.size() );
        for ( TransactionRecord transactionRecord : list ) {
            list1.add( transactionRecordMapper.toEntity( transactionRecord ) );
        }

        return list1;
    }
}