Skip to content

Commit 896517a

Browse files
add test result steps
add attachments for steps result
1 parent 20897a1 commit 896517a

17 files changed

+406
-39
lines changed

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
}

src/main/java/main/controllers/Project/StepController.java

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import main.model.dto.UserDto;
1010

1111
import java.util.List;
12+
import java.util.Objects;
1213

1314
public class StepController extends BaseController<StepDto> {
1415
private StepDao stepDao;
@@ -43,8 +44,34 @@ public boolean removeFromTest(Step2TestDto entity) throws AqualityException {
4344
return step2TestDao.delete(entity);
4445
}
4546

46-
public boolean updateOrder(List<Step2TestDto> entities) throws AqualityException {
47-
return step2TestDao.updateMultiply(entities);
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);
4875
}
4976

5077
public List<StepDto> getTestSteps(Step2TestDto stepToTest) throws AqualityException {

src/main/java/main/controllers/Project/StepResultController.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public class StepResultController extends BaseController<StepResultDto> {
1212
private StepResultDao stepResultDao;
1313
public StepResultController(UserDto user) {
1414
super(user);
15+
stepResultDao = new StepResultDao();
1516
}
1617

1718
@Override

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ private static String getErrorMessage(SQLException exception){
2626
return "Your Data Base does not support UTF characters, please contact administrator to allow it.";
2727
case "42S02":
2828
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.";
2931
default:
3032
return String.format("Unknown SQL Error: %s \n Message: %s", exception.getSQLState(), exception.getMessage());
3133
}
@@ -37,6 +39,7 @@ private static Integer getErrorCode(String sqlcode){
3739
case "45000":
3840
case "23505":
3941
return 409;
42+
case "S1000":
4043
case "42000":
4144
case "23000":
4245
case "HY000":

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
public class Step2TestDao extends DAO<Step2TestDto> {
1313
public Step2TestDao() {
1414
super(Step2TestDto.class);
15-
insert = "{call INSERT_STEP_TO_TEST(?,?,?,?)}";
15+
insert = "{call INSERT_STEP_TO_TEST(?,?,?,?,?)}";
1616
select = "{call SELECT_TEST_STEPS(?,?)}";
17-
remove = "{call REMOVE_STEP_TO_TEST(?,?,?)}";
17+
remove = "{call REMOVE_STEP_FROM_TEST(?,?)}";
1818
}
1919

2020
/**

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public class StepResultDao extends DAO<StepResultDto> {
77
public StepResultDao() {
88
super(StepResultDto.class);
99
select = "{call SELECT_STEP_RESULT(?,?,?)}";
10-
insert = "{call INSERT_STEP_RESULT(?,?,?,?,?)}";
10+
insert = "{call INSERT_STEP_RESULT(?,?,?,?,?,?,?,?,?,?,?,?)}";
1111
remove = "{call REMOVE_STEP_RESULT(?)}";
1212
}
1313
}

src/main/java/main/model/dto/BaseDto.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.jetbrains.annotations.NotNull;
77

88
import javax.servlet.http.HttpServletRequest;
9+
import java.lang.annotation.Annotation;
910
import java.lang.reflect.Field;
1011
import java.util.*;
1112

@@ -80,11 +81,19 @@ public List<Pair<String, String>> getIDParameters() throws AqualityException {
8081
}
8182

8283
public void getSearchTemplateFromRequestParameters(@NotNull HttpServletRequest req) throws AqualityException {
84+
getTemplate(req, DataBaseSearchable.class);
85+
}
86+
87+
public void getIDTemplateFromRequestParameters(@NotNull HttpServletRequest req) throws AqualityException {
88+
getTemplate(req, DataBaseID.class);
89+
}
90+
91+
private <T extends Annotation> void getTemplate(@NotNull HttpServletRequest req, Class<T> clazz) throws AqualityException {
8392
Map<String, String[]> parameterMap = req.getParameterMap();
8493
List<Field> classFields = this.getClassFields();
8594
for (Field field: classFields) {
8695
try {
87-
DataBaseSearchable searchAnnotation = field.getAnnotation(DataBaseSearchable.class);
96+
T searchAnnotation = field.getAnnotation(clazz);
8897
if(searchAnnotation != null && parameterMap.containsKey(field.getName())){
8998
field.setAccessible(true);
9099
Class<?> type = field.getType();

src/main/java/main/model/dto/Step2TestDto.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@
1010
@Data
1111
@EqualsAndHashCode(callSuper = true)
1212
public class Step2TestDto extends BaseDto {
13-
@DataBaseName(name="request_step_id")
13+
@DataBaseName(name="request_id")
1414
@DataBaseID
1515
@DataBaseInsert
16+
private Integer id;
17+
@DataBaseName(name="request_step_id")
18+
@DataBaseInsert
1619
private Integer step_id;
1720
@DataBaseName(name="request_test_id")
18-
@DataBaseID
1921
@DataBaseInsert
2022
@DataBaseSearchable
2123
private Integer test_id;

src/main/java/main/model/dto/StepDto.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,5 @@ public class StepDto extends BaseDto {
2828
@DataBaseSearchable
2929
private Integer project_id;
3030
private Integer order;
31+
private Integer link_id;
3132
}

0 commit comments

Comments
 (0)