Skip to content
Snippets Groups Projects
Commit c6a529bc authored by Dominika Zemanovičová's avatar Dominika Zemanovičová
Browse files

Change QuestionMapper to map to entities inside dto

parent 311b90f6
No related branches found
No related tags found
3 merge requests!31M2,!30M2 exercise,!29M2 exercise
......@@ -6,6 +6,9 @@ import org.fuseri.model.dto.exercise.AnswerInQuestionCreateDto;
import org.fuseri.moduleexercise.common.DomainMapper;
import org.mapstruct.Mapper;
import java.util.List;
import java.util.Set;
/**
* Mapper between Answers and their corresponding DTOs
*/
......@@ -20,6 +23,14 @@ public interface AnswerMapper extends DomainMapper<Answer, AnswerDto> {
*/
Answer fromCreateDto(AnswerCreateDto dto);
/**
* Convert List of AnswerInQuestionCreateDto to List of corresponding Answers
*
* @param dtos to be converted
* @return corresponding list of Answers
*/
Set<Answer> fromCreateDtoList(List<AnswerInQuestionCreateDto> dtos);
/**
* Convert DTO of type AnswerInQuestionCreateDto to Answer
* @param dto DTO to be converted
......
package org.fuseri.moduleexercise.question;
import org.fuseri.model.dto.exercise.AnswerInQuestionCreateDto;
import org.fuseri.model.dto.exercise.QuestionCreateDto;
import org.fuseri.model.dto.exercise.QuestionDto;
import org.fuseri.model.dto.exercise.QuestionUpdateDto;
import org.fuseri.moduleexercise.answer.Answer;
import org.fuseri.moduleexercise.answer.AnswerMapper;
import org.fuseri.moduleexercise.common.DomainMapper;
import org.fuseri.moduleexercise.exercise.Exercise;
import org.fuseri.moduleexercise.exercise.ExerciseService;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Named;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
import java.util.Set;
/**
* Mapper between Questions and their corresponding DTOs
*/
@Mapper
public interface QuestionMapper extends DomainMapper<Question, QuestionDto> {
@Mapper(componentModel = "spring", uses = {AnswerMapper.class, ExerciseService.class})
public abstract class QuestionMapper implements DomainMapper<Question, QuestionDto> {
@Autowired
private ExerciseService exerciseService;
@Autowired
private AnswerMapper answerMapper;
@Named("mapIdToExercise")
public Exercise mapIdToExercise(Long id) {
return exerciseService.find(id);
}
@Named("mapDtoAnswersToAnswers")
public Set<Answer> mapDtoAnswersToAnswers(List<AnswerInQuestionCreateDto> dtos) {
return answerMapper.fromCreateDtoList(dtos);
}
/**
* Convert entity to its corresponding DTO
*
* @param question to be converted
* @return corresponding DTO created from question
*/
@Override
@Mapping(target = "exerciseId", source = "question.exercise.id")
public abstract QuestionDto toDto(Question question);
/**
* Convert DTO of type QuestionCreateDto to Question
......@@ -19,8 +55,10 @@ public interface QuestionMapper extends DomainMapper<Question, QuestionDto> {
* @param dto DTO to be converted
* @return corresponding Question entity created from DTO
*/
@Mapping(target = "answers", ignore = true)
Question fromCreateDto(QuestionCreateDto dto);
@Mapping(target = "exercise", source = "dto.exerciseId", qualifiedByName = "mapIdToExercise")
@Mapping(target = "answers", source = "dto.answers", qualifiedByName = "mapDtoAnswersToAnswers")
public abstract Question fromCreateDto(QuestionCreateDto dto);
Question fromUpdateDto(QuestionUpdateDto dto);
@Mapping(target = "exercise", source = "dto.exerciseId", qualifiedByName = "mapIdToExercise")
public abstract Question fromUpdateDto(QuestionUpdateDto dto);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment