Skip to content

Commit 98f29ac

Browse files
Merge pull request #54 from aquality-automation/develop
Develop
2 parents 67d7c98 + a566b18 commit 98f29ac

File tree

14 files changed

+816
-39
lines changed

14 files changed

+816
-39
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# CHANGELOG
22

3+
## 0.3.7 (2020-03-02)
4+
5+
Features:
6+
- Improve Test Run and Test List page performance -> [View Issue](https://github.com/aquality-automation/aquality-tracking/issues/71)
7+
- Exclude Debug results from last results column -> [View Issue](https://github.com/aquality-automation/aquality-tracking/issues/70)
8+
- Milestone: Add selected Suites to milestone -> [View Issue](https://github.com/aquality-automation/aquality-tracking/issues/63)
9+
- Milestone: Add Due Date to Milestone. -> [View Issue](https://github.com/aquality-automation/aquality-tracking/issues/61)
10+
- Milestone: Add possibility to Close Milestone. -> [View Issue](https://github.com/aquality-automation/aquality-tracking/issues/62)
11+
312
## 0.3.6 (2020-02-24)
413

514
Features:

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<groupId>unifi_reporting_api</groupId>
77
<artifactId>api</artifactId>
88
<packaging>war</packaging>
9-
<version>0.3.6</version>
9+
<version>0.3.7</version>
1010

1111
<properties>
1212
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

src/main/java/main/controllers/Project/MilestoneController.java

Lines changed: 68 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,31 @@
44
import main.exceptions.AqualityException;
55
import main.exceptions.AqualityPermissionsException;
66
import main.model.db.dao.project.MilestoneDao;
7+
import main.model.db.dao.project.Suite2MilestoneDao;
78
import main.model.dto.MilestoneDto;
9+
import main.model.dto.Suite2MilestoneDto;
10+
import main.model.dto.TestSuiteDto;
811
import main.model.dto.UserDto;
912

1013
import java.util.List;
14+
import java.util.Objects;
1115

1216
public class MilestoneController extends BaseController<MilestoneDto> {
1317
private MilestoneDao milestoneDao;
18+
private Suite2MilestoneDao milestoneSuitesDao;
1419

1520
public MilestoneController(UserDto user) {
1621
super(user);
1722
milestoneDao = new MilestoneDao();
23+
milestoneSuitesDao = new Suite2MilestoneDao();
1824
}
1925

2026
@Override
2127
public MilestoneDto create(MilestoneDto template) throws AqualityException {
2228
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);
2432
} else {
2533
throw new AqualityPermissionsException("Account is not allowed to create Milestones", baseUser);
2634
}
@@ -29,7 +37,8 @@ public MilestoneDto create(MilestoneDto template) throws AqualityException {
2937
@Override
3038
public List<MilestoneDto> get(MilestoneDto template) throws AqualityException {
3139
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);
3342
} else {
3443
throw new AqualityPermissionsException("Account is not allowed to view Milestones", baseUser);
3544
}
@@ -43,4 +52,61 @@ public boolean delete(MilestoneDto template) throws AqualityException {
4352
throw new AqualityPermissionsException("Account is not allowed to delete Milestones", baseUser);
4453
}
4554
}
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+
}
46112
}

src/main/java/main/controllers/Project/TestController.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
public class TestController extends BaseController<TestDto> {
1515
private TestDao testDao;
16-
private ProjectDao projectDao;
1716
private TestSuiteDao suiteDao;
1817
private TestResultDao resultDao;
1918
private Test2SuiteController test2SuiteController;
@@ -24,7 +23,6 @@ public TestController(UserDto user) {
2423

2524
testDao = new TestDao();
2625
suiteDao = new TestSuiteDao();
27-
projectDao = new ProjectDao();
2826
resultDao = new TestResultDao();
2927
test2SuiteController = new Test2SuiteController(user);
3028
projectUserController = new ProjectUserController(user);
@@ -157,7 +155,6 @@ private List<TestDto> fillTests(List<TestDto> tests) throws AqualityException {
157155
List<Test2SuiteDto> test2Suites = new ArrayList<>();
158156
ProjectDto projectDto = new ProjectDto();
159157
projectDto.setId(tests.get(0).getProject_id());
160-
projectDto = projectDao.getEntityById(projectDto);
161158

162159
for (TestSuiteDto testSuite : testSuites) {
163160
Test2SuiteDto test2Suite = new Test2SuiteDto();
@@ -171,10 +168,6 @@ private List<TestDto> fillTests(List<TestDto> tests) throws AqualityException {
171168
test.setDeveloper(projectUsers.stream().filter(x -> x.getUser().getId().equals(test.getDeveloper_id())).findFirst().orElse(null));
172169
}
173170

174-
if(projectDto.getStability_count() != null) {
175-
test.setLastResultColors(testDao.getLastColors(test.getId(), projectDto.getStability_count()));
176-
}
177-
178171
List<Test2SuiteDto> testSuiteLinks = test2Suites.stream().filter(x -> x.getTest_id().equals(test.getId())).collect(Collectors.toList());
179172
test.setSuites(test2SuiteController.convertToSuites(testSuiteLinks, testSuites));
180173
filledTests.add(test);

src/main/java/main/model/db/dao/project/MilestoneDao.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ public class MilestoneDao extends DAO<MilestoneDto> {
77

88
public MilestoneDao(){
99
super(MilestoneDto.class);
10-
select = "{call SELECT_MILESTONE(?,?,?)}";
11-
insert = "{call INSERT_MILESTONE(?,?,?)}";
10+
select = "{call SELECT_MILESTONE(?,?,?,?)}";
11+
insert = "{call INSERT_MILESTONE(?,?,?,?,?)}";
1212
remove = "{call REMOVE_MILESTONE(?)}";
1313
}
1414
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package main.model.db.dao.project;
2+
3+
import com.mysql.cj.core.conf.url.ConnectionUrlParser;
4+
import main.exceptions.AqualityException;
5+
import main.exceptions.AqualitySQLException;
6+
import main.model.db.dao.DAO;
7+
import main.model.dto.DtoMapper;
8+
import main.model.dto.Suite2MilestoneDto;
9+
import main.model.dto.TestSuiteDto;
10+
import java.util.List;
11+
12+
public class Suite2MilestoneDao extends DAO<Suite2MilestoneDto> {
13+
public Suite2MilestoneDao() {
14+
super(Suite2MilestoneDto.class);
15+
remove = "{call REMOVE_SUITE_FROM_MILESTONE(?,?)}";
16+
}
17+
18+
public void addSuite(Suite2MilestoneDto entity) throws AqualityException {
19+
String sql = "{call INSERT_SUITE_TO_MILESTONE(?,?)}";
20+
List<ConnectionUrlParser.Pair<String, String>> parameters = entity.getParameters();
21+
CallStoredProcedure(sql, parameters);
22+
}
23+
24+
public List<TestSuiteDto> getSuites(Suite2MilestoneDto entity) throws AqualityException {
25+
List<ConnectionUrlParser.Pair<String, String>> parameters = entity.getSearchParameters();
26+
DtoMapper<TestSuiteDto> suiteMapper = new DtoMapper<>(TestSuiteDto.class);
27+
28+
String sql = "{call SELECT_MILESTONE_SUITES(?)}";
29+
return suiteMapper.mapObjects(CallStoredProcedure(sql, parameters).toString());
30+
}
31+
}
Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,7 @@
11
package main.model.db.dao.project;
22

3-
import com.mysql.cj.core.conf.url.ConnectionUrlParser;
4-
import main.exceptions.AqualityException;
53
import main.model.db.dao.DAO;
6-
import main.model.dto.DtoMapper;
7-
import main.model.dto.LastResultColorsDto;
84
import main.model.dto.TestDto;
9-
import org.jetbrains.annotations.NotNull;
10-
11-
import java.util.ArrayList;
12-
import java.util.List;
135

146
public class TestDao extends DAO<TestDto> {
157
public TestDao() {
@@ -18,12 +10,4 @@ public TestDao() {
1810
insert = "{call INSERT_TEST(?,?,?,?,?,?)}";
1911
remove = "{call REMOVE_TEST(?)}";
2012
}
21-
22-
public LastResultColorsDto getLastColors(@NotNull Integer testId, @NotNull Integer limit) throws AqualityException {
23-
DtoMapper<LastResultColorsDto> lastResultColorsMapper = new DtoMapper<>(LastResultColorsDto.class);
24-
List<ConnectionUrlParser.Pair<String, String>> parameters = new ArrayList<>();
25-
parameters.add(new ConnectionUrlParser.Pair<>("request_test_id", testId.toString()));
26-
parameters.add(new ConnectionUrlParser.Pair<>("request_limit", limit.toString()));
27-
return lastResultColorsMapper.mapObjects(CallStoredProcedure("{call SELECT_LAST_RESULT_COLORS(?,?)}", parameters).toString()).get(0);
28-
}
2913
}

src/main/java/main/model/db/imports/BaseImporter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ private void createResults(boolean update) throws AqualityException {
6262
result.setTest(tests.get(i));
6363
}
6464

65+
result.setDebug(testRun.getDebug());
6566
result.setTest_id(result.getTest().getId());
6667
result.setTest_run_id(testRun.getId());
6768
result.setFinal_result_updated(result.getFinish_date());

src/main/java/main/model/dto/LastResultColorsDto.java

Lines changed: 0 additions & 10 deletions
This file was deleted.

src/main/java/main/model/dto/MilestoneDto.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
package main.model.dto;
22

3+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
34
import lombok.Data; import lombok.EqualsAndHashCode;
45
import main.annotations.*;
6+
import main.utils.CustomerDateAndTimeDeserialize;
7+
8+
import java.util.Date;
9+
import java.util.List;
510

611

712
@Data @EqualsAndHashCode(callSuper = true)
@@ -18,4 +23,13 @@ public class MilestoneDto extends BaseDto{
1823
@DataBaseName(name = "request_project_id")
1924
@DataBaseInsert
2025
private Integer project_id;
26+
@DataBaseSearchable
27+
@DataBaseName(name = "request_active")
28+
@DataBaseInsert
29+
private Integer active;
30+
@DataBaseName(name = "request_due_date")
31+
@DataBaseInsert
32+
@JsonDeserialize(using= CustomerDateAndTimeDeserialize.class)
33+
private Date due_date;
34+
private List<TestSuiteDto> suites;
2135
}

0 commit comments

Comments
 (0)