Passed
Push — dev ( 5a05c9...15a427 )
by Konstantin
05:13
created

findAll(AnswersOptionsInterface)   A

Complexity

Conditions 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
package easytests.core.services;
2
3
import easytests.core.entities.AnswerEntity;
4
import easytests.core.mappers.AnswersMapper;
5
import easytests.core.models.AnswerModel;
6
import easytests.core.models.AnswerModelInterface;
7
import easytests.core.models.QuestionModelInterface;
8
import easytests.core.options.AnswersOptionsInterface;
9
import easytests.core.services.exceptions.DeleteUnidentifiedModelException;
10
import java.util.ArrayList;
11
import java.util.List;
12
import org.springframework.beans.factory.annotation.Autowired;
13
import org.springframework.stereotype.Service;
14
15
16
/**
17
 * @author rezenbekk
18
 */
19
@Service
20
public class AnswersService implements AnswersServiceInterface {
21
22
    @Autowired
23
    private AnswersMapper answersMapper;
24
25
    @Autowired
26
    private QuestionsService questionsService;
27
28
    @Override
29
    public List<AnswerModelInterface> findAll() {
30
        return this.map(this.answersMapper.findAll());
31
    }
32
33
    @Override
34
    public List<AnswerModelInterface> findAll(AnswersOptionsInterface answersOptions) {
35
        return this.withServices(answersOptions).withRelations(this.map(this.answersMapper.findAll()));
36
    }
37
38
    @Override
39
    public List<AnswerModelInterface> findByQuestion(QuestionModelInterface questionModel) {
40
        return this.map(this.answersMapper.findByQuestionId(questionModel.getId()));
41
    }
42
    
43
    @Override
44
    public List<AnswerModelInterface> findByQuestion(
45
            QuestionModelInterface questionModel,
46
            AnswersOptionsInterface answersOptions
47
    ) {
48
        return this.withServices(answersOptions).withRelations(this.map(
49
                this.answersMapper.findByQuestionId(questionModel.getId())));
50
    }
51
52
    @Override
53
    public AnswerModelInterface find(Integer id) {
54
        final AnswerEntity answerEntity = this.answersMapper.find(id);
55
        if (answerEntity == null) {
56
            return null;
57
        }
58
        return this.map(answerEntity);
59
    }
60
61
    @Override
62
    public AnswerModelInterface find(Integer id, AnswersOptionsInterface answersOptions) {
63
        return this.withServices(answersOptions).withRelations(this.find(id));
64
    }
65
66
    @Override
67
    public void save(AnswerModelInterface answerModel) {
68
        final AnswerEntity answerEntity = this.map(answerModel);
69
        if (answerEntity.getId() == null) {
70
            this.answersMapper.insert(answerEntity);
71
            answerModel.setId(answerEntity.getId());
72
            return;
73
        }
74
        this.answersMapper.update(answerEntity);
75
    }
76
    
77
    @Override
78
    public void save(AnswerModelInterface answerModel, AnswersOptionsInterface answersOptions) {
79
        this.withServices(answersOptions).saveWithRelations(answerModel);
80
    }
81
    
82
    @Override
83
    public void save(List<AnswerModelInterface> answersModels) {
84
        for (AnswerModelInterface answerModel: answersModels) {
85
            this.save(answerModel);
86
        }
87
    }
88
89
    @Override
90
    public void save(List<AnswerModelInterface> answersModels, AnswersOptionsInterface answersOptions) {
91
        for (AnswerModelInterface answerModel: answersModels) {
92
            this.save(answerModel, answersOptions);
93
        }
94
    }
95
96
    @Override
97
    public void delete(AnswerModelInterface answerModel) {
98
        final AnswerEntity answerEntity = this.map(answerModel);
99
        if (answerEntity.getId() == null) {
100
            throw new DeleteUnidentifiedModelException();
101
        }
102
        this.answersMapper.delete(answerEntity);
103
    }
104
    
105
    @Override
106
    public void delete(AnswerModelInterface answerModel, AnswersOptionsInterface answersOptions) {
107
        this.withServices(answersOptions).deleteWithRelations(answerModel);
108
    }
109
    
110
    @Override
111
    public void delete(List<AnswerModelInterface> answersModels) {
112
        for (AnswerModelInterface answerModel: answersModels) {
113
            this.delete(answerModel);
114
        }
115
    }
116
117
    @Override
118
    public void delete(List<AnswerModelInterface> answersModels, AnswersOptionsInterface answersOptions) {
119
        for (AnswerModelInterface answerModel: answersModels) {
120
            this.delete(answerModel, answersOptions);
121
        }
122
    }
123
    
124
    private AnswersOptionsInterface withServices(AnswersOptionsInterface answersOptions) {
125
        answersOptions.setAnswersService(this);
126
        answersOptions.setQuestionsService(this.questionsService);
127
        return answersOptions;
128
    }
129
130
    private AnswerModelInterface map(AnswerEntity answerEntity) {
131
        final AnswerModelInterface answerModel = new AnswerModel();
132
        answerModel.map(answerEntity);
133
        return answerModel;
134
    }
135
136
    private AnswerEntity map(AnswerModelInterface answerModel) {
137
        final AnswerEntity answerEntity = new AnswerEntity();
138
        answerEntity.map(answerModel);
139
        return answerEntity;
140
    }
141
142
    private List<AnswerModelInterface> map(List<AnswerEntity> answersList) {
143
        final List<AnswerModelInterface> resultAnswerList = new ArrayList<>(answersList.size());
144
        for (AnswerEntity answer: answersList) {
145
            resultAnswerList.add(this.map(answer));
146
        }
147
        return resultAnswerList;
148
    }
149
}
150