4
4
import main .exceptions .AqualityException ;
5
5
import main .exceptions .AqualityPermissionsException ;
6
6
import main .model .db .dao .project .MilestoneDao ;
7
+ import main .model .db .dao .project .Suite2MilestoneDao ;
7
8
import main .model .dto .MilestoneDto ;
9
+ import main .model .dto .Suite2MilestoneDto ;
10
+ import main .model .dto .TestSuiteDto ;
8
11
import main .model .dto .UserDto ;
9
12
10
13
import java .util .List ;
14
+ import java .util .Objects ;
11
15
12
16
public class MilestoneController extends BaseController <MilestoneDto > {
13
17
private MilestoneDao milestoneDao ;
18
+ private Suite2MilestoneDao milestoneSuitesDao ;
14
19
15
20
public MilestoneController (UserDto user ) {
16
21
super (user );
17
22
milestoneDao = new MilestoneDao ();
23
+ milestoneSuitesDao = new Suite2MilestoneDao ();
18
24
}
19
25
20
26
@ Override
21
27
public MilestoneDto create (MilestoneDto template ) throws AqualityException {
22
28
if (baseUser .isManager () || baseUser .getProjectUser (template .getProject_id ()).isEditor ()) {
23
- return milestoneDao .create (template );
29
+ MilestoneDto milestone = milestoneDao .create (template );
30
+ template .setId (milestone .getId ());
31
+ return updateSuites (template );
24
32
} else {
25
33
throw new AqualityPermissionsException ("Account is not allowed to create Milestones" , baseUser );
26
34
}
@@ -29,7 +37,8 @@ public MilestoneDto create(MilestoneDto template) throws AqualityException {
29
37
@ Override
30
38
public List <MilestoneDto > get (MilestoneDto template ) throws AqualityException {
31
39
if (baseUser .isFromGlobalManagement () || baseUser .getProjectUser (template .getProject_id ()).isViewer ()) {
32
- return milestoneDao .searchAll (template );
40
+ List <MilestoneDto > milestones = milestoneDao .searchAll (template );
41
+ return fillMilestones (milestones );
33
42
} else {
34
43
throw new AqualityPermissionsException ("Account is not allowed to view Milestones" , baseUser );
35
44
}
@@ -43,4 +52,61 @@ public boolean delete(MilestoneDto template) throws AqualityException {
43
52
throw new AqualityPermissionsException ("Account is not allowed to delete Milestones" , baseUser );
44
53
}
45
54
}
55
+
56
+ private List <MilestoneDto > fillMilestones (List <MilestoneDto > milestones ) throws AqualityException {
57
+ for (MilestoneDto milestone : milestones ) {
58
+ milestone .setSuites (getSuites (milestone .getId ()));
59
+ }
60
+
61
+ return milestones ;
62
+ }
63
+
64
+ private List <TestSuiteDto > getSuites (Integer milestoneId ) throws AqualityException {
65
+ Suite2MilestoneDto suite2Milestone = new Suite2MilestoneDto ();
66
+ suite2Milestone .setMilestone_id (milestoneId );
67
+ return milestoneSuitesDao .getSuites (suite2Milestone );
68
+ }
69
+
70
+ private MilestoneDto updateSuites (MilestoneDto template ) throws AqualityException {
71
+ Suite2MilestoneDto suite2Milestone = new Suite2MilestoneDto ();
72
+ suite2Milestone .setMilestone_id (template .getId ());
73
+ List <TestSuiteDto > oldSuites = milestoneSuitesDao .getSuites (suite2Milestone );
74
+
75
+ addNewSuites (oldSuites , template );
76
+ removeSuites (oldSuites , template .getId ());
77
+
78
+ List <MilestoneDto > milestones = get (template );
79
+ if (!milestones .isEmpty ()) {
80
+ return milestones .get (0 );
81
+ }
82
+
83
+ throw new AqualityException ("Cannot get Milestone after Suites Update!" );
84
+ }
85
+
86
+ private void addNewSuites (List <TestSuiteDto > oldSuites , MilestoneDto milestone ) throws AqualityException {
87
+ if (milestone .getSuites () != null && milestone .getSuites ().size () > 0 ) {
88
+ for (TestSuiteDto newSuite : milestone .getSuites ()) {
89
+ TestSuiteDto alreadyExists = oldSuites .stream ().filter (x -> Objects .equals (x .getId (), newSuite .getId ())).findAny ().orElse (null );
90
+ if (alreadyExists != null ) {
91
+ oldSuites .removeIf (x -> Objects .equals (x .getId (), alreadyExists .getId ()));
92
+ } else {
93
+ Suite2MilestoneDto newSuite2MilestoneDto = new Suite2MilestoneDto ();
94
+ newSuite2MilestoneDto .setSuite_id (newSuite .getId ());
95
+ newSuite2MilestoneDto .setMilestone_id (milestone .getId ());
96
+ milestoneSuitesDao .addSuite (newSuite2MilestoneDto );
97
+ }
98
+ }
99
+ }
100
+ }
101
+
102
+ private void removeSuites (List <TestSuiteDto > oldSuites , Integer milestone_id ) throws AqualityException {
103
+ if (!oldSuites .isEmpty ()) {
104
+ for (TestSuiteDto oldSuite : oldSuites ) {
105
+ Suite2MilestoneDto toRemove = new Suite2MilestoneDto ();
106
+ toRemove .setSuite_id (oldSuite .getId ());
107
+ toRemove .setMilestone_id (milestone_id );
108
+ milestoneSuitesDao .delete (toRemove );
109
+ }
110
+ }
111
+ }
46
112
}
0 commit comments