map(IssueModelInterface)   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.IssueEntity;
4
import easytests.core.mappers.IssuesMapper;
5
import easytests.core.models.IssueModel;
6
import easytests.core.models.IssueModelInterface;
7
import easytests.core.models.SubjectModelInterface;
8
import easytests.core.options.IssuesOptionsInterface;
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 fortyways
18
 */
19
@Service
20
public class IssuesService implements IssuesServiceInterface {
21
22
    @Autowired
23
    private IssuesMapper issuesMapper;
24
25
    @Autowired
26
    private QuizzesService quizzesService;
27
28
    @Autowired
29
    private SubjectsService subjectsService;
30
31
    @Override
32
    public List<IssueModelInterface> findAll() {
33
        return this.map(this.issuesMapper.findAll());
34
    }
35
36
    @Override
37
    public List<IssueModelInterface> findAll(IssuesOptionsInterface issueOptions) {
38
        return this.withServices(issueOptions).withRelations(this.findAll());
39
    }
40
41
    @Override
42
    public IssueModelInterface find(Integer id) {
43
        return this.map(this.issuesMapper.find(id));
44
    }
45
46
    @Override
47
    public IssueModelInterface find(Integer id, IssuesOptionsInterface issuesOptions) {
48
        return this.withServices(issuesOptions).withRelations(this.find(id));
49
    }
50
51
    @Override
52
    public void save(IssueModelInterface issueModel) {
53
        final IssueEntity issueEntity = this.map(issueModel);
54
        if (issueEntity.getId() == null) {
55
            this.issuesMapper.insert(issueEntity);
56
            issueModel.setId(issueEntity.getId());
57
            return;
58
        }
59
        this.issuesMapper.update(issueEntity);
60
    }
61
62
    @Override
63
    public void save(IssueModelInterface issueModel, IssuesOptionsInterface issuesOptions) {
64
        this.withServices(issuesOptions).saveWithRelations(issueModel);
65
    }
66
67
    @Override
68
    public void save(List<IssueModelInterface> issuesModels) {
69
        for (IssueModelInterface issueModel: issuesModels) {
70
            this.save(issueModel);
71
        }
72
    }
73
74
    @Override
75
    public void save(List<IssueModelInterface> issuesModels, IssuesOptionsInterface issueOptions) {
76
        for (IssueModelInterface issueModel: issuesModels) {
77
            this.save(issueModel, issueOptions);
78
        }
79
    }
80
81
    @Override
82
    public void delete(IssueModelInterface issueModel) {
83
        final IssueEntity issueEntity = this.map(issueModel);
84
        if (issueEntity.getId() == null) {
85
            throw new DeleteUnidentifiedModelException();
86
        }
87
        this.issuesMapper.delete(issueEntity);
88
    }
89
90
    @Override
91
    public void delete(List<IssueModelInterface> issuesModels) {
92
        for (IssueModelInterface issueModel: issuesModels) {
93
            this.delete(issueModel);
94
        }
95
    }
96
97
    @Override
98
    public void delete(List<IssueModelInterface> issuesModels, IssuesOptionsInterface issueOptions) {
99
        for (IssueModelInterface issueModel: issuesModels) {
100
            this.delete(issueModel, issueOptions);
101
        }
102
    }
103
104
    @Override
105
    public void delete(IssueModelInterface issueModel, IssuesOptionsInterface issuesOptions) {
106
        this.withServices(issuesOptions).deleteWithRelations(issueModel);
107
    }
108
109
    @Override
110
    public List<IssueModelInterface> findBySubject(SubjectModelInterface subjectModel) {
111
        return this.map(this.issuesMapper.findBySubjectId(subjectModel.getId()));
112
    }
113
114
    @Override
115
    public List<IssueModelInterface> findBySubject(SubjectModelInterface subjectModel,
116
                                                   IssuesOptionsInterface issueOptions) {
117
        return this.withServices(issueOptions).withRelations(this.findBySubject(subjectModel));
118
    }
119
120
    private IssueModelInterface map(IssueEntity issueEntity) {
121
        if (issueEntity == null) {
122
            return null;
123
        }
124
        final IssueModelInterface issueModel = new IssueModel();
125
        issueModel.map(issueEntity);
126
        return issueModel;
127
    }
128
129
    private IssueEntity map(IssueModelInterface issueModel) {
130
        final IssueEntity issueEntity = new IssueEntity();
131
        issueEntity.map(issueModel);
132
        return issueEntity;
133
    }
134
135
    private List<IssueModelInterface> map(List<IssueEntity> issuesList) {
136
        final List<IssueModelInterface> resultIssueList = new ArrayList(issuesList.size());
137
        for (IssueEntity issue: issuesList) {
138
            resultIssueList.add(this.map(issue));
139
        }
140
        return resultIssueList;
141
    }
142
143
    private IssuesOptionsInterface withServices(IssuesOptionsInterface issuesOptions) {
144
        issuesOptions.setIssuesService(this);
145
        issuesOptions.setQuizzesService(this.quizzesService);
146
        issuesOptions.setSubjectsService(this.subjectsService);
147
        return issuesOptions;
148
    }
149
150
}
151