easytests.core.options.IssuesOptions   A
last analyzed

Complexity

Total Complexity 14

Size/Duplication

Total Lines 78
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
c 1
b 0
f 0
loc 78
rs 10
wmc 14

6 Methods

Rating   Name   Duplication   Size   Complexity  
A withSubject(SubjectsOptionsInterface) 0 4 1
A withQuizzes(QuizzesOptionsInterface) 0 4 1
A withRelations(List) 0 6 2
A saveWithRelations(IssueModelInterface) 0 11 3
A withRelations(IssueModelInterface) 0 12 4
A deleteWithRelations(IssueModelInterface) 0 11 3
1
package easytests.core.options;
2
3
import easytests.core.models.IssueModelInterface;
4
import easytests.core.services.IssuesServiceInterface;
5
import easytests.core.services.QuizzesServiceInterface;
6
import easytests.core.services.SubjectsServiceInterface;
7
import java.util.List;
8
import lombok.EqualsAndHashCode;
9
import lombok.Setter;
10
11
12
/**
13
 * @author fortyways
14
 */
15
@EqualsAndHashCode
16
public class IssuesOptions implements IssuesOptionsInterface {
17
18
    @Setter
19
    private IssuesServiceInterface issuesService;
20
21
    @Setter
22
    private QuizzesServiceInterface quizzesService;
23
24
    @Setter
25
    private SubjectsServiceInterface subjectsService;
26
27
    private SubjectsOptionsInterface subjectsOptions;
28
29
    private QuizzesOptionsInterface quizzesOptions;
30
31
    @Override
32
    public IssuesOptionsInterface withQuizzes(QuizzesOptionsInterface quizzesOptions) {
33
        this.quizzesOptions = quizzesOptions;
34
        return this;
35
    }
36
37
    @Override
38
    public IssueModelInterface withRelations(IssueModelInterface issueModel) {
39
        if (issueModel == null) {
40
            return issueModel;
41
        }
42
        if (this.quizzesOptions != null) {
43
            issueModel.setQuizzes(this.quizzesService.findByIssue(issueModel, this.quizzesOptions));
44
        }
45
        if (this.subjectsOptions != null) {
46
            issueModel.setSubject(this.subjectsService.find(issueModel.getSubject().getId(), this.subjectsOptions));
47
        }
48
        return issueModel;
49
    }
50
51
    @Override
52
    public List<IssueModelInterface> withRelations(List<IssueModelInterface> issuesModels) {
53
        for (IssueModelInterface issueModel: issuesModels) {
54
            this.withRelations(issueModel);
55
        }
56
        return issuesModels;
57
    }
58
59
    @Override
60
    public void saveWithRelations(IssueModelInterface issueModel) {
61
62
        if (this.subjectsOptions != null) {
63
            this.subjectsService.save(issueModel.getSubject(), this.subjectsOptions);
64
        }
65
66
        this.issuesService.save(issueModel);
67
68
        if (this.quizzesOptions != null) {
69
            this.quizzesService.save(issueModel.getQuizzes(), this.quizzesOptions);
70
        }
71
72
    }
73
74
    @Override
75
    public void deleteWithRelations(IssueModelInterface issueModel) {
76
77
        if (this.quizzesOptions != null) {
78
            this.quizzesService.delete(issueModel.getQuizzes(), this.quizzesOptions);
79
        }
80
81
        this.issuesService.delete(issueModel);
82
83
        if (this.subjectsOptions != null) {
84
            this.subjectsService.delete(issueModel.getSubject(), this.subjectsOptions);
85
        }
86
87
    }
88
89
    @Override
90
    public IssuesOptionsInterface withSubject(SubjectsOptionsInterface subjectsOptions) {
91
        this.subjectsOptions = subjectsOptions;
92
        return this;
93
    }
94
95
}
96