Passed
Pull Request — dev (#396)
by Konstantin
04:29
created

easytests.api.v1.mappers.QuestionsMapper   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 98
Duplicated Lines 0 %

Importance

Changes 4
Bugs 0 Features 0
Metric Value
wmc 8
c 4
b 0
f 0
dl 0
loc 98
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
C QuestionsMapper() 0 96 8
1
package easytests.api.v1.mappers;
2
3
import easytests.api.v1.models.AdminAnswer;
4
import easytests.api.v1.models.Identity;
5
import easytests.api.v1.models.Question;
6
import easytests.core.models.*;
7
import easytests.core.models.AnswerModel;
8
import easytests.core.models.QuestionModel;
9
import java.util.ArrayList;
10
import java.util.List;
11
import org.modelmapper.Converter;
12
import org.modelmapper.ModelMapper;
13
import org.modelmapper.PropertyMap;
14
import org.modelmapper.spi.MappingContext;
15
import org.springframework.stereotype.Service;
16
17
/**
18
 * @author RisaMagpie
19
 */
20
@Service("QuestionsMapperV1")
21
public class QuestionsMapper extends ModelMapper {
22
    public QuestionsMapper() {
23
        super();
24
        this.createTypeMap(QuestionModel.class, Question.class)
25
            .addMappings(
26
                mapper -> {
27
                    mapper.<Integer>map(questionModel ->
28
                        questionModel.getQuestionType().getId(), (question, id) -> question.setType(id));
29
    
30
                    mapper.<Integer>map(questionModel ->
31
                        questionModel.getTopic().getId(), (question, id) -> question.getTopic().setId(id));
32
    
33
                    mapper.<List<AdminAnswer>>map(questionModel ->
34
                        questionModel.getAnswers(), (question, list) -> question.setAnswers(list));
35
                }
36
            );
37
        this.createTypeMap(AnswerModel.class, AdminAnswer.class)
38
                .addMappings(mapper -> {
39
                    mapper.<String>map(answerModel -> answerModel.getTxt(),
40
                            (answer, text) -> answer.setText(text));
41
42
                    mapper.<Boolean>map(answerModel -> answerModel.getRight(),
43
                            (answer, right) -> answer.setIsRight(right));
44
                }
45
                );
46
47
        Converter<Identity, TopicModel> convertIdentityToTopicModel
48
                = new Converter<Identity, TopicModel>() {
49
            public TopicModel convert(MappingContext<Identity, TopicModel> context) {
50
                final TopicModel topicModel = new TopicModel();
51
                topicModel.setId(context.getSource().getId());
52
53
                return topicModel;
54
            }
55
        };
56
57
        Converter<AdminAnswer, AnswerModel> convertAdminAnswerToAnswerModel
0 ignored issues
show
Unused Code introduced by
Consider removing the unused local variable convertAdminAnswerToAnswerModel.
Loading history...
58
                = new Converter<AdminAnswer, AnswerModel>() {
59
            public AnswerModel convert(MappingContext<AdminAnswer, AnswerModel> context) {
60
                final AnswerModel answerModel = new AnswerModel();
61
                answerModel.setId(context.getSource().getId());
62
63
                return answerModel;
64
            }
65
        };
66
67
        Converter<AdminAnswer, AnswerModel> convertIdentityToAnswerModel
0 ignored issues
show
Unused Code introduced by
Consider removing the unused local variable convertIdentityToAnswerModel.
Loading history...
68
                = new Converter<AdminAnswer, AnswerModel>() {
69
            public AnswerModel convert(MappingContext<AdminAnswer, AnswerModel> context) {
70
                final AnswerModel answerModel = new AnswerModel();
71
                answerModel.setId(context.getSource().getId());
72
73
                return answerModel;
74
            }
75
        };
76
77
        Converter<List<AdminAnswer>, List<AnswerModel>> convertAdminAnswerListToAnswerModelList
78
                = new Converter<List<AdminAnswer>, List<AnswerModel>>() {
79
            public List<AnswerModel> convert(MappingContext<List<AdminAnswer>, List<AnswerModel>> context) {
80
                final List<AnswerModel> answerModels = new ArrayList<>();
81
                for (int i = 0; i < context.getSource().size(); ++i) {
82
                    final AdminAnswer adminAnswer = context.getSource().get(i);
83
84
                    final AnswerModel answerModel = new AnswerModel();
85
86
                    answerModel.setId(adminAnswer.getId());
87
                    answerModel.setRight(adminAnswer.getIsRight());
88
                    answerModel.setTxt(adminAnswer.getText());
89
                    answerModel.setSerialNumber(adminAnswer.getNumber());
90
91
                    answerModels.add(answerModel);
92
                }
93
                return answerModels;
94
            }
95
        };
96
97
        Converter<Integer, QuestionTypeModel> convertIntegerToQuestionTypeModel
98
                = new Converter<Integer, QuestionTypeModel>() {
99
            public QuestionTypeModel convert(MappingContext<Integer, QuestionTypeModel> context) {
100
                final QuestionTypeModel questionTypeModel = new QuestionTypeModel();
101
                questionTypeModel.setId(context.getSource());
102
103
                return questionTypeModel;
104
            }
105
        };
106
107
        final PropertyMap<Question, QuestionModel> mymap = new PropertyMap<Question, QuestionModel>() {
108
            protected void configure() {
109
                map(source.getId()).setId(null);
110
                map(source.getText()).setText(null);
111
                using(convertIntegerToQuestionTypeModel).map(source.getType()).setQuestionType(null);
112
                using(convertIdentityToTopicModel).map(source.getTopic()).setTopic(null);
113
                using(convertAdminAnswerListToAnswerModelList).map(source.getAnswers()).setAnswers(null);
114
            }
115
        };
116
117
        this.addMappings(mymap);
118
119
    }
120
}
121