EquipmentCommandToDomainMapperImpl.java

package com.github.jenkaby.bikerental.equipment.application.mapper;

import com.github.jenkaby.bikerental.equipment.application.usecase.CreateEquipmentUseCase;
import com.github.jenkaby.bikerental.equipment.application.usecase.UpdateEquipmentUseCase;
import com.github.jenkaby.bikerental.equipment.domain.model.Equipment;
import com.github.jenkaby.bikerental.equipment.shared.mapper.SerialNumberMapper;
import com.github.jenkaby.bikerental.equipment.shared.mapper.UidMapper;
import java.time.LocalDate;
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 EquipmentCommandToDomainMapperImpl implements EquipmentCommandToDomainMapper {

    private final SerialNumberMapper serialNumberMapper;
    private final UidMapper uidMapper;

    @Autowired
    public EquipmentCommandToDomainMapperImpl(SerialNumberMapper serialNumberMapper, UidMapper uidMapper) {

        this.serialNumberMapper = serialNumberMapper;
        this.uidMapper = uidMapper;
    }

    @Override
    public Equipment toEquipment(CreateEquipmentUseCase.CreateEquipmentCommand command) {
        if ( command == null ) {
            return null;
        }

        Equipment.EquipmentBuilder equipment = Equipment.builder();

        equipment.serialNumber( serialNumberMapper.toSerialNumber( command.serialNumber() ) );
        equipment.uid( uidMapper.toUid( command.uid() ) );
        equipment.typeSlug( command.typeSlug() );
        equipment.statusSlug( command.statusSlug() );
        equipment.model( command.model() );
        equipment.commissionedAt( command.commissionedAt() );
        equipment.condition( command.condition() );

        return equipment.build();
    }

    @Override
    public Equipment toEquipment(Equipment toUpdate, UpdateEquipmentUseCase.UpdateEquipmentCommand command) {
        if ( command == null ) {
            return toUpdate;
        }

        toUpdate.setSerialNumber( serialNumberMapper.toSerialNumber( command.serialNumber() ) );
        toUpdate.setUid( uidMapper.toUid( command.uid() ) );
        toUpdate.setTypeSlug( command.typeSlug() );
        toUpdate.setStatusSlug( command.statusSlug() );
        toUpdate.setModel( command.model() );
        toUpdate.setCommissionedAt( command.commissionedAt() );
        toUpdate.setCondition( command.condition() );

        return toUpdate;
    }

    @Override
    public UpdateEquipmentUseCase.UpdateEquipmentCommand toUpdateCommand(Equipment equipment, String newStatusSlug) {
        if ( equipment == null && newStatusSlug == null ) {
            return null;
        }

        Long id = null;
        String serialNumber = null;
        String uid = null;
        String typeSlug = null;
        String model = null;
        LocalDate commissionedAt = null;
        String condition = null;
        if ( equipment != null ) {
            id = equipment.getId();
            serialNumber = serialNumberMapper.toString( equipment.getSerialNumber() );
            uid = uidMapper.toString( equipment.getUid() );
            typeSlug = equipment.getTypeSlug();
            model = equipment.getModel();
            commissionedAt = equipment.getCommissionedAt();
            condition = equipment.getCondition();
        }
        String statusSlug = null;
        statusSlug = newStatusSlug;

        UpdateEquipmentUseCase.UpdateEquipmentCommand updateEquipmentCommand = new UpdateEquipmentUseCase.UpdateEquipmentCommand( id, serialNumber, uid, typeSlug, statusSlug, model, commissionedAt, condition );

        return updateEquipmentCommand;
    }
}