easytests.core.services.AnswersService   A
last analyzed

Complexity

Total Complexity 25

Size/Duplication

Total Lines 124
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
c 1
b 0
f 0
loc 124
rs 10
wmc 25

17 Methods

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