Skip to content

Commit 26ee5f6

Browse files
Merge pull request #26 from aquality-automation/feature/steps
Feature/steps
2 parents 927c484 + 57e9972 commit 26ee5f6

29 files changed

+1339
-40
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
Features:
66
- Rename Import Token to API Token -> [View Issue](https://github.com/aquality-automation/aquality-tracking-ui/issues/23)
7+
- Steps Feature -> [View Issue](https://github.com/aquality-automation/aquality-tracking-ui/issues/46)
78

89
Bugfixes:
910
- Local Manager can see Local Permissions page -> [View Issue](https://github.com/aquality-automation/aquality-tracking-ui/issues/22)
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package main.controllers.Administration;
2+
3+
import main.controllers.BaseController;
4+
import main.exceptions.AqualityException;
5+
import main.model.db.dao.project.StepTypeDao;
6+
import main.model.dto.StepTypeDto;
7+
import main.model.dto.UserDto;
8+
9+
import java.util.List;
10+
11+
public class StepTypeController extends BaseController<StepTypeDto> {
12+
private StepTypeDao stepTypeDao;
13+
14+
public StepTypeController(UserDto user) {
15+
super(user);
16+
stepTypeDao = new StepTypeDao();
17+
}
18+
19+
@Override
20+
public List<StepTypeDto> get(StepTypeDto entity) throws AqualityException {
21+
return stepTypeDao.searchAll(entity);
22+
}
23+
24+
@Override
25+
public StepTypeDto create(StepTypeDto entity) throws AqualityException {
26+
return stepTypeDao.create(entity);
27+
}
28+
29+
@Override
30+
public boolean delete(StepTypeDto entity) throws AqualityException {
31+
return stepTypeDao.delete(entity);
32+
}
33+
}

src/main/java/main/controllers/ControllerFactory.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package main.controllers;
22

33
import main.controllers.Administration.EmailSettingsController;
4+
import main.controllers.Administration.StepTypeController;
45
import main.controllers.Administration.UserController;
56
import main.controllers.Project.*;
67
import main.model.dto.*;
@@ -60,4 +61,13 @@ public UserController getHandler(UserDto entity) {
6061
public EmailSettingsController getHandler(EmailSettingsDto entity) {
6162
return new EmailSettingsController(user);
6263
}
64+
public StepController getHandler(StepDto entity) {
65+
return new StepController(user);
66+
}
67+
public StepResultController getHandler(StepResultDto entity) {
68+
return new StepResultController(user);
69+
}
70+
public StepTypeController getHandler(StepTypeDto entity) {
71+
return new StepTypeController(user);
72+
}
6373
}

src/main/java/main/controllers/Project/ProjectController.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public ProjectController(UserDto user) {
2121

2222
@Override
2323
public ProjectDto create(ProjectDto template) throws AqualityException {
24-
if(baseUser.isAdmin()){
24+
if(baseUser.isAdmin() || allowUpdateProject(template)){
2525
ProjectDto project = projectDao.create(template);
2626
updateProjectPermissions(project);
2727
return project;
@@ -50,12 +50,32 @@ public boolean delete(ProjectDto template) throws AqualityException {
5050
}
5151
}
5252

53+
public boolean isStepsEnabled(Integer projectId) throws AqualityException {
54+
ProjectDto project = new ProjectDto();
55+
project.setId(projectId);
56+
List<ProjectDto> projects = get(project);
57+
58+
if(projects.size() < 1) {
59+
throw new AqualityException("Project with id %s does not exists!", projectId);
60+
}
61+
62+
return projects.get(0).getSteps() == 1;
63+
}
64+
5365
private void updateProjectPermissions(ProjectDto entity) throws AqualityException {
5466
if(entity.getCustomer() != null && entity.getCustomer().getAccounting() == 1 && entity.getId() != 0){
5567
updatePermissions(entity.getCustomer().getId(), entity.getId());
5668
}
5769
}
5870

71+
private boolean allowUpdateProject(ProjectDto template) {
72+
if(template.getId() != null) {
73+
ProjectUserDto projectUser = baseUser.getProjectUser(template.getId());
74+
return baseUser.isManager() || projectUser.isManager() || projectUser.isAdmin();
75+
}
76+
return false;
77+
}
78+
5979
//TODO create
6080
private void updatePermissions(Integer customer_id, Integer project_id) throws AqualityException {
6181
}

src/main/java/main/controllers/Project/ResultController.java

Lines changed: 57 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ public class ResultController extends BaseController<TestResultDto> {
1717
private ProjectUserController projectUserController;
1818
private ResultResolutionController resultResolutionController;
1919
private FinalResultController finalResultController;
20+
private ProjectController projectController;
21+
private StepController stepController;
22+
private StepResultController stepResultController;
2023

2124
public ResultController(UserDto user) {
2225
super(user);
@@ -26,12 +29,19 @@ public ResultController(UserDto user) {
2629
testDao = new TestDao();
2730
resultResolutionController = new ResultResolutionController(user);
2831
finalResultController = new FinalResultController(user);
32+
projectController = new ProjectController(user);
33+
stepController = new StepController(user);
34+
stepResultController = new StepResultController(user);
2935
}
3036

3137
@Override
3238
public TestResultDto create(TestResultDto template) throws AqualityException {
3339
if(baseUser.isManager() || baseUser.getProjectUser(template.getProject_id()).isEditor()){
34-
return testResultDao.create(template);
40+
TestResultDto testResult = testResultDao.create(template);
41+
if(projectController.isStepsEnabled(testResult.getProject_id()) && template.getId() == null){
42+
createPendingStepResults(testResult);
43+
}
44+
return testResult;
3545
}else{
3646
throw new AqualityPermissionsException("Account is not allowed to create Test Result", baseUser);
3747
}
@@ -75,7 +85,23 @@ public List<TestResultStatDto> get(TestResultStatDto template) throws AqualityEx
7585
}
7686
}
7787

78-
//TODO Refactoring
88+
private void createPendingStepResults(TestResultDto template) throws AqualityException {
89+
Step2TestDto step2TestTemplate = new Step2TestDto();
90+
step2TestTemplate.setProject_id(template.getProject_id());
91+
step2TestTemplate.setTest_id(template.getTest_id());
92+
List<StepDto> testSteps = stepController.getTestSteps(step2TestTemplate);
93+
for (StepDto step : testSteps) {
94+
StepResultDto stepResult = new StepResultDto();
95+
stepResult.setProject_id(template.getProject_id());
96+
stepResult.setResult_id(template.getId());
97+
stepResult.setType_id(step.getType_id());
98+
stepResult.setName(step.getName());
99+
stepResult.setFinal_result_id(3);
100+
stepResult.setOrder(step.getOrder());
101+
stepResultController.create(stepResult);
102+
}
103+
}
104+
79105
private List<TestResultDto> fillResults(List<TestResultDto> results) throws AqualityException {
80106

81107
if(results.size() > 0){
@@ -86,20 +112,38 @@ private List<TestResultDto> fillResults(List<TestResultDto> results) throws Aqua
86112
List<TestDto> tests = testDao.searchAll(testTemplate);
87113

88114
for (TestResultDto result: results){
89-
90-
result.setFinal_result(finalResults.stream().filter( x -> x.getId().equals(result.getFinal_result_id())).findFirst().orElse(null));
91-
result.setTest(tests.stream().filter(x -> x.getId().equals(result.getTest_id())).findFirst().orElse(null));
92-
result.setTest_resolution(resolutions.stream().filter( x -> x.getId().equals(result.getTest_resolution_id())).findFirst().orElse(null));
93-
94-
if(result.getAssignee() != null){
95-
ProjectUserDto projectUserDto = new ProjectUserDto();
96-
projectUserDto.setUser_id(result.getAssignee());
97-
projectUserDto.setProject_id(result.getProject_id());
98-
result.setAssigned_user(projectUserController.get(projectUserDto).get(0));
99-
}
115+
fillResult(result, finalResults, resolutions, tests);
100116
}
101117
}
102118

103119
return results;
104120
}
121+
122+
private void fillResult(TestResultDto result, List<FinalResultDto> finalResults, List<ResultResolutionDto> resolutions, List<TestDto> tests) throws AqualityException {
123+
if (projectController.isStepsEnabled(result.getProject_id())) {
124+
fillResultSteps(result);
125+
}
126+
127+
result.setFinal_result(finalResults.stream().filter(x -> x.getId().equals(result.getFinal_result_id())).findFirst().orElse(null));
128+
result.setTest(tests.stream().filter(x -> x.getId().equals(result.getTest_id())).findFirst().orElse(null));
129+
result.setTest_resolution(resolutions.stream().filter(x -> x.getId().equals(result.getTest_resolution_id())).findFirst().orElse(null));
130+
fillResultAssignee(result);
131+
}
132+
133+
private void fillResultSteps(TestResultDto result) throws AqualityException {
134+
StepResultDto stepResultTemplate = new StepResultDto();
135+
stepResultTemplate.setResult_id(result.getId());
136+
stepResultTemplate.setProject_id(result.getProject_id());
137+
result.setSteps(stepResultController.get(stepResultTemplate));
138+
}
139+
140+
private void fillResultAssignee(TestResultDto result) throws AqualityException {
141+
if (result.getAssignee() != null) {
142+
ProjectUserDto projectUserDto = new ProjectUserDto();
143+
projectUserDto.setUser_id(result.getAssignee());
144+
projectUserDto.setProject_id(result.getProject_id());
145+
result.setAssigned_user(projectUserController.get(projectUserDto).get(0));
146+
}
147+
}
148+
105149
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package main.controllers.Project;
2+
3+
import main.controllers.BaseController;
4+
import main.exceptions.AqualityException;
5+
import main.model.db.dao.project.Step2TestDao;
6+
import main.model.db.dao.project.StepDao;
7+
import main.model.dto.Step2TestDto;
8+
import main.model.dto.StepDto;
9+
import main.model.dto.UserDto;
10+
11+
import java.util.List;
12+
import java.util.Objects;
13+
14+
public class StepController extends BaseController<StepDto> {
15+
private StepDao stepDao;
16+
private Step2TestDao step2TestDao;
17+
18+
public StepController(UserDto user) {
19+
super(user);
20+
stepDao = new StepDao();
21+
step2TestDao = new Step2TestDao();
22+
}
23+
24+
@Override
25+
public List<StepDto> get(StepDto entity) throws AqualityException {
26+
return stepDao.searchAll(entity);
27+
}
28+
29+
@Override
30+
public StepDto create(StepDto entity) throws AqualityException {
31+
return stepDao.create(entity);
32+
}
33+
34+
@Override
35+
public boolean delete(StepDto entity) throws AqualityException {
36+
return stepDao.delete(entity);
37+
}
38+
39+
public Step2TestDto assignToTest(Step2TestDto entity) throws AqualityException {
40+
return step2TestDao.create(entity);
41+
}
42+
43+
public boolean removeFromTest(Step2TestDto entity) throws AqualityException {
44+
return step2TestDao.delete(entity);
45+
}
46+
47+
public List<StepDto> updateOrder(List<Step2TestDto> entities) throws AqualityException {
48+
if(entities.size() < 1) {
49+
throw new AqualityException("The test should have at least one step!");
50+
}
51+
Integer projectId = entities.get(0).getProject_id();
52+
Step2TestDto step2TestFilter = new Step2TestDto();
53+
step2TestFilter.setProject_id(projectId);
54+
step2TestFilter.setTest_id(entities.get(0).getTest_id());
55+
List<StepDto> oldSteps = getTestSteps(step2TestFilter);
56+
57+
for (Step2TestDto newStepLink : entities) {
58+
StepDto alreadyExists = oldSteps.stream().filter(x -> Objects.equals(x.getLink_id(), newStepLink.getId())).findFirst().orElse(null);
59+
if (alreadyExists != null) {
60+
oldSteps.removeIf(x -> Objects.equals(x.getId(), alreadyExists.getId()));
61+
}
62+
step2TestDao.create(newStepLink);
63+
}
64+
65+
if(oldSteps.size() > 0 ){
66+
for (StepDto oldStep : oldSteps) {
67+
Step2TestDto stepToRemove = new Step2TestDto();
68+
stepToRemove.setId(oldStep.getLink_id());
69+
stepToRemove.setProject_id(projectId);
70+
step2TestDao.delete(stepToRemove);
71+
}
72+
}
73+
74+
return getTestSteps(step2TestFilter);
75+
}
76+
77+
public List<StepDto> getTestSteps(Step2TestDto stepToTest) throws AqualityException {
78+
return step2TestDao.getTestSteps(stepToTest);
79+
}
80+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package main.controllers.Project;
2+
3+
import main.controllers.BaseController;
4+
import main.exceptions.AqualityException;
5+
import main.model.db.dao.project.StepResultDao;
6+
import main.model.dto.StepResultDto;
7+
import main.model.dto.UserDto;
8+
9+
import java.util.List;
10+
11+
public class StepResultController extends BaseController<StepResultDto> {
12+
private StepResultDao stepResultDao;
13+
public StepResultController(UserDto user) {
14+
super(user);
15+
stepResultDao = new StepResultDao();
16+
}
17+
18+
@Override
19+
public List<StepResultDto> get(StepResultDto entity) throws AqualityException {
20+
return stepResultDao.searchAll(entity);
21+
}
22+
23+
@Override
24+
public StepResultDto create(StepResultDto entity) throws AqualityException {
25+
return stepResultDao.create(entity);
26+
}
27+
28+
@Override
29+
public boolean delete(StepResultDto entity) throws AqualityException {
30+
return stepResultDao.delete(entity);
31+
}
32+
}

src/main/java/main/exceptions/AqualitySQLException.java

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
package main.exceptions;
22

3+
import java.sql.SQLException;
4+
35
public class AqualitySQLException extends AqualityException {
46

5-
public AqualitySQLException(String sqlcode) {
6-
super(getErrorMessage(sqlcode));
7-
this.responseCode = getErrorCode(sqlcode);
7+
public AqualitySQLException(SQLException exception) {
8+
super(getErrorMessage(exception));
9+
this.responseCode = getErrorCode(exception.getSQLState());
810
}
911

1012

11-
12-
private static String getErrorMessage(String sqlcode){
13-
switch (sqlcode){
13+
private static String getErrorMessage(SQLException exception){
14+
switch (exception.getSQLState()){
1415
case "23516":
1516
case "45000":
1617
case "23505":
@@ -19,8 +20,16 @@ private static String getErrorMessage(String sqlcode){
1920
return "You Regular expression is not valid!";
2021
case "40001":
2122
return "You are trying to edit entity which is locked. Please retry the operation.";
23+
case "23000":
24+
return String.format("You have missed required parameter: %s", exception.getMessage());
25+
case "HY000":
26+
return "Your Data Base does not support UTF characters, please contact administrator to allow it.";
27+
case "42S02":
28+
return "There is some missed table in your Data Base, please contact administrator.";
29+
case "S1000":
30+
return "The Data Size is too big. Possibly you are trying to attach file > 3 mb.";
2231
default:
23-
return String.format("Unknown SQL Error: %s", sqlcode);
32+
return String.format("Unknown SQL Error: %s \n Message: %s", exception.getSQLState(), exception.getMessage());
2433
}
2534
}
2635

@@ -30,7 +39,11 @@ private static Integer getErrorCode(String sqlcode){
3039
case "45000":
3140
case "23505":
3241
return 409;
42+
case "S1000":
3343
case "42000":
44+
case "23000":
45+
case "HY000":
46+
case "42S02":
3447
return 400;
3548
default:
3649
return 500;

0 commit comments

Comments
 (0)