map(QuizModelInterface)   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
c 1
b 0
f 0
cc 1
loc 4
rs 10
1
package easytests.core.services;
2
3
import easytests.core.entities.QuizEntity;
4
import easytests.core.mappers.QuizzesMapper;
5
import easytests.core.models.IssueModelInterface;
6
import easytests.core.models.QuizModel;
7
import easytests.core.models.QuizModelInterface;
8
import easytests.core.options.QuizzesOptionsInterface;
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
 * @author vkpankov
17
 */
18
@Service
19
public class QuizzesService implements QuizzesServiceInterface {
20
21
    @Autowired
22
    private QuizzesMapper quizzesMapper;
23
24
    @Autowired
25
    private IssuesService issuesService;
26
27
    @Autowired
28
    private PointsService pointsService;
29
30
    @Autowired
31
    private TesteesService testeesService;
32
33
    @Override
34
    public List<QuizModelInterface> findAll() {
35
        return this.map(this.quizzesMapper.findAll());
36
    }
37
38
    @Override
39
    public List<QuizModelInterface> findAll(QuizzesOptionsInterface quizzesOptions) {
40
        return this.withServices(quizzesOptions).withRelations(this.findAll());
41
    }
42
43
    public QuizModelInterface find(Integer id) {
44
        final QuizEntity quizEntity = this.quizzesMapper.find(id);
45
        if (quizEntity == null) {
46
            return null;
47
        }
48
        return this.map(quizEntity);
49
    }
50
51
    @Override
52
    public QuizModelInterface find(Integer id, QuizzesOptionsInterface quizzesOptions) {
53
        return this.withServices(quizzesOptions).withRelations(this.find(id));
54
55
    }
56
57
    @Override
58
    public List<QuizModelInterface> findByIssue(IssueModelInterface issueModel) {
59
        return this.map(this.quizzesMapper.findByIssueId(issueModel.getId()));
60
    }
61
62
    @Override
63
    public List<QuizModelInterface> findByIssue(
64
            IssueModelInterface issueModel,
65
            QuizzesOptionsInterface quizzesOptions
66
    ) {
67
        return quizzesOptions.withRelations(this.map(this.quizzesMapper.findByIssueId(issueModel.getId())));
68
    }
69
70
    @Override
71
    public void save(QuizModelInterface quizModel) {
72
        final QuizEntity quizEntity = this.map(quizModel);
73
        if (quizEntity.getId() == null) {
74
            this.quizzesMapper.insert(quizEntity);
75
            quizModel.setId(quizEntity.getId());
76
            return;
77
        }
78
        this.quizzesMapper.update(quizEntity);
79
    }
80
81
    @Override
82
    public void save(QuizModelInterface quizModel, QuizzesOptionsInterface quizzesOptions) {
83
        this.withServices(quizzesOptions).saveWithRelations(quizModel);
84
    }
85
86
    @Override
87
    public void save(List<QuizModelInterface> quizzesModels) {
88
        for (QuizModelInterface quizModel: quizzesModels) {
89
            this.save(quizModel);
90
        }
91
    }
92
93
    @Override
94
    public void save(List<QuizModelInterface> quizzesModels, QuizzesOptionsInterface quizzesOptions) {
95
        for (QuizModelInterface quizModel: quizzesModels) {
96
            this.save(quizModel, quizzesOptions);
97
        }
98
    }
99
100
    @Override
101
    public void delete(QuizModelInterface quizModel) {
102
        final QuizEntity quizEntity = this.map(quizModel);
103
        if (quizEntity.getId() == null) {
104
            throw new DeleteUnidentifiedModelException();
105
        }
106
        this.quizzesMapper.delete(quizEntity);
107
    }
108
109
    @Override
110
    public void delete(QuizModelInterface quizModel, QuizzesOptionsInterface quizzesOptions) {
111
        this.withServices(quizzesOptions).deleteWithRelations(quizModel);
112
    }
113
114
    @Override
115
    public void delete(List<QuizModelInterface> quizzesModels) {
116
        for (QuizModelInterface quizModel : quizzesModels) {
117
            this.delete(quizModel);
118
        }
119
    }
120
121
    @Override
122
    public void delete(List<QuizModelInterface> quizzesModels, QuizzesOptionsInterface quizzesOptions) {
123
        for (QuizModelInterface quizModel: quizzesModels) {
124
            this.delete(quizModel, quizzesOptions);
125
        }
126
    }
127
128
    private QuizEntity map(QuizModelInterface quizModel) {
129
        final QuizEntity quizEntity = new QuizEntity();
130
        quizEntity.map(quizModel);
131
        return quizEntity;
132
    }
133
134
    private QuizModel map(QuizEntity quizEntity) {
135
        final QuizModel quizModel = new QuizModel();
136
        quizModel.map(quizEntity);
137
        return quizModel;
138
    }
139
140
    private List<QuizModelInterface> map(List<QuizEntity> quizzesList) {
141
        final List<QuizModelInterface> resultQuizList = new ArrayList(quizzesList.size());
142
        for (QuizEntity quiz: quizzesList) {
143
            resultQuizList.add(this.map(quiz));
144
        }
145
        return resultQuizList;
146
    }
147
148
    private QuizzesOptionsInterface withServices(QuizzesOptionsInterface quizzesOptions) {
149
        quizzesOptions.setQuizzesService(this);
150
        quizzesOptions.setIssuesService(this.issuesService);
151
        quizzesOptions.setPointsService(this.pointsService);
152
        quizzesOptions.setTesteesService(this.testeesService);
153
        return quizzesOptions;
154
    }
155
}
156