withSubject(SubjectsOptionsInterface)   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.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