Ajay Yadav
Initial deployment of da-autocompliance-dev
688925d
raw
history blame
1.7 kB
package com.dalab.autocompliance.model.mapper;
import java.time.LocalDateTime;
import java.util.UUID;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
import com.dalab.autocompliance.dto.ControlEvaluationRequestDTO;
import com.dalab.autocompliance.dto.ControlEvaluationResponseDTO;
import com.dalab.autocompliance.model.entity.ControlEvaluationJobEntity;
/**
* Mapper interface for converting between ControlEvaluationJobEntity and DTOs.
*/
@Mapper(imports = {UUID.class, LocalDateTime.class})
public interface ControlEvaluationJobMapper {
ControlEvaluationJobMapper INSTANCE = Mappers.getMapper(ControlEvaluationJobMapper.class);
// To DTO (ControlEvaluationResponseDTO is simpler, doesn't carry all entity details by default)
@Mapping(target = "targetedAssetCount", expression = "java(entity.getTargetAssetIds() != null ? entity.getTargetAssetIds().size() : 0)")
ControlEvaluationResponseDTO toResponseDto(ControlEvaluationJobEntity entity);
// From Request DTO to Entity
@Mapping(target = "jobId", expression = "java(UUID.randomUUID().toString())")
@Mapping(target = "submittedAt", expression = "java(LocalDateTime.now())")
@Mapping(target = "status", constant = "QUEUED")
@Mapping(target = "startedAt", ignore = true)
@Mapping(target = "completedAt", ignore = true)
@Mapping(target = "message", ignore = true)
ControlEvaluationJobEntity fromRequestDto(ControlEvaluationRequestDTO requestDto, String controlId);
// If you need a more detailed DTO for job status (like ReportJobStatusDTO), you'd create another one.
// For now, the response DTO is used for the immediate POST response.
}