easytests.core.options.IssueStandardsOptions   A
last analyzed

Complexity

Total Complexity 18

Size/Duplication

Total Lines 103
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
c 1
b 0
f 0
loc 103
rs 10
wmc 18

12 Methods

Rating   Name   Duplication   Size   Complexity  
saveWithRelations 0 15 ?
deleteWithRelations 0 15 ?
withTopicPriorities 0 5 ?
withSubject 0 5 ?
withQuestionTypeOptions 0 5 ?
A withRelations(List) 0 6 2
A withSubject(SubjectsOptionsInterface) 0 5 1
A saveWithRelations(IssueStandardModelInterface) 0 15 4
A withTopicPriorities(IssueStandardTopicPrioritiesOptionsInterface) 0 5 1
A withQuestionTypeOptions(IssueStandardQuestionTypeOptionsOptionsInterface) 0 5 1
A deleteWithRelations(IssueStandardModelInterface) 0 15 4
A withRelations(IssueStandardModelInterface) 0 18 5
1
package easytests.core.options;
2
3
import easytests.core.models.IssueStandardModelInterface;
4
import easytests.core.services.IssueStandardQuestionTypeOptionsServiceInterface;
5
import easytests.core.services.IssueStandardTopicPrioritiesServiceInterface;
6
import easytests.core.services.IssueStandardsServiceInterface;
7
import easytests.core.services.SubjectsServiceInterface;
8
import java.util.List;
9
import lombok.EqualsAndHashCode;
10
import lombok.Setter;
11
12
/**
13
 * @author SingularityA
14
 */
15
@EqualsAndHashCode
16
public class IssueStandardsOptions implements IssueStandardsOptionsInterface {
17
18
    @Setter
19
    private IssueStandardsServiceInterface issueStandardsService;
20
21
    @Setter
22
    private IssueStandardTopicPrioritiesServiceInterface topicPrioritiesService;
23
24
    @Setter
25
    private IssueStandardQuestionTypeOptionsServiceInterface questionTypeOptionsService;
26
27
    @Setter
28
    private SubjectsServiceInterface subjectsService;
29
30
    private IssueStandardTopicPrioritiesOptionsInterface topicPrioritiesOptions;
31
32
    private IssueStandardQuestionTypeOptionsOptionsInterface questionTypeOptionsOptions;
33
34
    private SubjectsOptionsInterface subjectsOptions;
35
36
    @Override
37
    public IssueStandardsOptionsInterface
38
        withTopicPriorities(IssueStandardTopicPrioritiesOptionsInterface topicPrioritiesOptions) {
39
        this.topicPrioritiesOptions = topicPrioritiesOptions;
40
        return this;
41
    }
42
43
    @Override
44
    public IssueStandardsOptionsInterface
45
        withQuestionTypeOptions(IssueStandardQuestionTypeOptionsOptionsInterface questionTypeOptionsOptions) {
46
        this.questionTypeOptionsOptions = questionTypeOptionsOptions;
47
        return this;
48
    }
49
50
    @Override
51
    public IssueStandardsOptionsInterface
52
        withSubject(SubjectsOptionsInterface subjectsOptions) {
53
        this.subjectsOptions = subjectsOptions;
54
        return this;
55
    }
56
57
    @Override
58
    public IssueStandardModelInterface withRelations(IssueStandardModelInterface issueStandardModel) {
59
        if (issueStandardModel == null) {
60
            return issueStandardModel;
61
        }
62
        if (this.topicPrioritiesOptions != null) {
63
            issueStandardModel.setTopicPriorities(this.topicPrioritiesService
64
                    .findByIssueStandard(issueStandardModel, this.topicPrioritiesOptions));
65
        }
66
        if (this.questionTypeOptionsOptions != null) {
67
            issueStandardModel.setQuestionTypeOptions(this.questionTypeOptionsService
68
                    .findByIssueStandard(issueStandardModel, this.questionTypeOptionsOptions));
69
        }
70
        if (this.subjectsOptions != null) {
71
            issueStandardModel.setSubject(this.subjectsService
72
                    .find(issueStandardModel.getSubject().getId(), this.subjectsOptions));
73
        }
74
        return issueStandardModel;
75
    }
76
77
    @Override
78
    public List<IssueStandardModelInterface> withRelations(List<IssueStandardModelInterface> issueStandardModels) {
79
        for (IssueStandardModelInterface issueStandardModel: issueStandardModels) {
80
            this.withRelations(issueStandardModel);
81
        }
82
        return issueStandardModels;
83
    }
84
85
    @Override
86
    public void saveWithRelations(IssueStandardModelInterface issueStandardModel) {
87
        if (this.subjectsOptions != null) {
88
            this.subjectsService.save(issueStandardModel.getSubject(), this.subjectsOptions);
89
        }
90
91
        this.issueStandardsService.save(issueStandardModel);
92
93
        if (this.topicPrioritiesOptions != null) {
94
            this.topicPrioritiesService
95
                    .save(issueStandardModel.getTopicPriorities(), this.topicPrioritiesOptions);
96
        }
97
        if (this.questionTypeOptionsOptions != null) {
98
            this.questionTypeOptionsService
99
                    .save(issueStandardModel.getQuestionTypeOptions(), this.questionTypeOptionsOptions);
100
        }
101
    }
102
103
    @Override
104
    public void deleteWithRelations(IssueStandardModelInterface issueStandardModel) {
105
        if (this.topicPrioritiesOptions != null) {
106
            this.topicPrioritiesService
107
                    .delete(issueStandardModel.getTopicPriorities(), this.topicPrioritiesOptions);
108
        }
109
        if (this.questionTypeOptionsOptions != null) {
110
            this.questionTypeOptionsService
111
                    .delete(issueStandardModel.getQuestionTypeOptions(), this.questionTypeOptionsOptions);
112
        }
113
114
        this.issueStandardsService.delete(issueStandardModel);
115
116
        if (this.subjectsOptions != null) {
117
            this.subjectsService.delete(issueStandardModel.getSubject(), subjectsOptions);
118
        }
119
    }
120
}
121