Skip to content

Commit 20897a1

Browse files
Save work on steps
1 parent ce4be53 commit 20897a1

File tree

8 files changed

+137
-14
lines changed

8 files changed

+137
-14
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,8 @@ public boolean removeFromTest(Step2TestDto entity) throws AqualityException {
4646
public boolean updateOrder(List<Step2TestDto> entities) throws AqualityException {
4747
return step2TestDao.updateMultiply(entities);
4848
}
49+
50+
public List<StepDto> getTestSteps(Step2TestDto stepToTest) throws AqualityException {
51+
return step2TestDao.getTestSteps(stepToTest);
52+
}
4953
}

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,12 @@ private static String getErrorMessage(SQLException exception){
2222
return "You are trying to edit entity which is locked. Please retry the operation.";
2323
case "23000":
2424
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.";
2529
default:
26-
return String.format("Unknown SQL Error: %s", exception.getSQLState());
30+
return String.format("Unknown SQL Error: %s \n Message: %s", exception.getSQLState(), exception.getMessage());
2731
}
2832
}
2933

@@ -35,6 +39,8 @@ private static Integer getErrorCode(String sqlcode){
3539
return 409;
3640
case "42000":
3741
case "23000":
42+
case "HY000":
43+
case "42S02":
3844
return 400;
3945
default:
4046
return 500;

src/main/java/main/model/db/dao/DAO.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import java.util.regex.Matcher;
2020
import java.util.regex.Pattern;
2121

22+
import static javax.swing.UIManager.get;
23+
2224
public abstract class DAO<T extends BaseDto> {
2325
private Connection connection;
2426
private Class<T> type;
@@ -119,8 +121,12 @@ public boolean delete(T entity) throws AqualityException {
119121
*/
120122
public T create(T entity) throws AqualityException {
121123
List<Pair<String, String>> parameters = entity.getParameters();
124+
List<T> results = dtoMapper.mapObjects(CallStoredProcedure(insert, parameters).toString());
125+
if(results.size() > 0){
126+
return results.get(0);
127+
}
122128

123-
return dtoMapper.mapObjects(CallStoredProcedure(insert, parameters).toString()).get(0);
129+
throw new AqualitySQLException(new SQLException("Possible duplicate error.", "23505"));
124130
}
125131

126132
/**
Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,42 @@
11
package main.model.db.dao.project;
22

3+
import com.mysql.cj.core.conf.url.ConnectionUrlParser;
4+
import main.exceptions.AqualityException;
35
import main.model.db.dao.DAO;
6+
import main.model.dto.DtoMapper;
47
import main.model.dto.Step2TestDto;
8+
import main.model.dto.StepDto;
9+
10+
import java.util.List;
511

612
public class Step2TestDao extends DAO<Step2TestDto> {
713
public Step2TestDao() {
814
super(Step2TestDto.class);
9-
insert = "{call INSERT_STEP_TO_TEST(?,?)}";
10-
remove = "{call REMOVE_STEP_TO_TEST(?)}";
15+
insert = "{call INSERT_STEP_TO_TEST(?,?,?,?)}";
16+
select = "{call SELECT_TEST_STEPS(?,?)}";
17+
remove = "{call REMOVE_STEP_TO_TEST(?,?,?)}";
18+
}
19+
20+
/**
21+
* Create Entity
22+
* @param entity entity to create
23+
* @return created entity
24+
*/
25+
public Step2TestDto create(Step2TestDto entity) throws AqualityException {
26+
List<ConnectionUrlParser.Pair<String, String>> parameters = entity.getParameters();
27+
CallStoredProcedure(insert, parameters);
28+
return entity;
1129
}
30+
31+
/**
32+
* Create Entity
33+
* @param entity entity to get
34+
* @return created entity
35+
*/
36+
public List<StepDto> getTestSteps(Step2TestDto entity) throws AqualityException {
37+
List<ConnectionUrlParser.Pair<String, String>> parameters = entity.getSearchParameters();
38+
List<StepDto> results = new DtoMapper<>(StepDto.class).mapObjects(CallStoredProcedure(select, parameters).toString());
39+
return results;
40+
}
41+
1242
}

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ public class Step2TestDto extends BaseDto {
1313
@DataBaseName(name="request_step_id")
1414
@DataBaseID
1515
@DataBaseInsert
16-
@DataBaseSearchable
1716
private Integer step_id;
1817
@DataBaseName(name="request_test_id")
1918
@DataBaseID
@@ -23,4 +22,10 @@ public class Step2TestDto extends BaseDto {
2322
@DataBaseName(name="request_order")
2423
@DataBaseInsert
2524
private Integer order;
25+
@DataBaseName(name="request_project_id")
26+
@DataBaseInsert
27+
@DataBaseSearchable
28+
@DataBaseID
29+
private Integer project_id;
30+
2631
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,5 @@ public class StepDto extends BaseDto {
2727
@DataBaseInsert
2828
@DataBaseSearchable
2929
private Integer project_id;
30+
private Integer order;
3031
}

src/main/java/main/view/Project/StepToTest.java renamed to src/main/java/main/view/Project/StepToTestServlet.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,16 @@
55
import main.model.dto.StepDto;
66
import main.view.BaseServlet;
77
import main.view.IDelete;
8+
import main.view.IGet;
89
import main.view.IPost;
910

1011
import javax.servlet.annotation.WebServlet;
1112
import javax.servlet.http.HttpServletRequest;
1213
import javax.servlet.http.HttpServletResponse;
14+
import java.util.List;
1315

14-
@WebServlet("/step/toTest")
15-
public class StepToTest extends BaseServlet implements IPost, IDelete {
16+
@WebServlet("/test/steps")
17+
public class StepToTestServlet extends BaseServlet implements IPost, IDelete, IGet {
1618

1719
@Override
1820
public void doPost(HttpServletRequest req, HttpServletResponse resp) {
@@ -30,6 +32,22 @@ public void doPost(HttpServletRequest req, HttpServletResponse resp) {
3032
}
3133
}
3234

35+
@Override
36+
public void doGet(HttpServletRequest req, HttpServletResponse resp) {
37+
setPostResponseHeaders(resp);
38+
setEncoding(resp);
39+
40+
try {
41+
Session session = createSession(req);
42+
Step2TestDto stepToTest = new Step2TestDto();
43+
stepToTest.getSearchTemplateFromRequestParameters(req);
44+
List<StepDto> steps = session.controllerFactory.getHandler(new StepDto()).getTestSteps(stepToTest);
45+
resp.getWriter().write(mapper.serialize(steps));
46+
}catch (Exception e) {
47+
handleException(resp, e);
48+
}
49+
}
50+
3351
@Override
3452
public void doDelete(HttpServletRequest req, HttpServletResponse resp) {
3553
setPostResponseHeaders(resp);

src/main/resources/db_changelog/db.changelog-0.3.3.xml

Lines changed: 60 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,8 @@
122122
)
123123
BEGIN
124124
SET @sql = CONCAT("SELECT * FROM ", "project_steps_", request_project_id, " WHERE
125-
('", request_id, "' = '' OR id='", request_id, "')
126-
AND ('", request_name, "' = '' OR name='", request_name, "');");
125+
(", QUOTE(request_id), " = '' OR id=", QUOTE(request_id), ")
126+
AND (", QUOTE(request_name), " = '' OR name=", QUOTE(request_name), ");");
127127
PREPARE statement FROM @sql;
128128
EXECUTE statement;
129129
DEALLOCATE PREPARE statement;
@@ -150,12 +150,12 @@
150150
BEGIN
151151
SET @sql = CONCAT("INSERT INTO project_steps_", request_project_id, " (id, name, type_id)
152152
VALUES (
153-
IF('", request_id, "' = '', null, '", request_id, "'),
154-
IF('", request_name, "' = '', null, '", request_name, "'),
155-
IF('", request_type_id, "' = '', null, '", request_type_id, "')
153+
IF(", QUOTE(request_id), " = '', null, ", QUOTE(request_id), "),
154+
IF(", QUOTE(request_name), " = '', null, ", QUOTE(request_name), "),
155+
IF(", QUOTE(request_type_id), " = '', null, ", QUOTE(request_type_id), ")
156156
) ON DUPLICATE KEY UPDATE
157-
name = IF('", request_name, "' = '', name, '", request_name, "')
158-
, type_id = IF('", request_type_id, "' = '', type_id, '", request_type_id, "');");
157+
name = IF(", QUOTE(request_name), " = '', name, ", QUOTE(request_name), ")
158+
, type_id = IF(", QUOTE(request_type_id), " = '', type_id, ", QUOTE(request_type_id), ");");
159159
PREPARE statement FROM @sql;
160160
EXECUTE statement;
161161
DEALLOCATE PREPARE statement;
@@ -448,5 +448,58 @@
448448
</rollback>
449449
</changeSet>
450450

451+
<changeSet id="stored procedure INSERT_STEP_TO_TEST" author="v.kostyukevich">
452+
<sql endDelimiter="#">
453+
454+
DROP procedure IF EXISTS `INSERT_STEP_TO_TEST`;
455+
456+
#
457+
458+
CREATE PROCEDURE `INSERT_STEP_TO_TEST`(
459+
IN request_project_id VARCHAR(11),
460+
IN request_step_id varchar(11),
461+
IN request_test_id varchar(11),
462+
IN request_order varchar(11)
463+
)
464+
BEGIN
465+
SET @sql = CONCAT("INSERT INTO project_step_to_test_", request_project_id, " (`step_id`, `test_id`, `order`)
466+
VALUES (", QUOTE(request_step_id), ", " , QUOTE(request_test_id), ", " , QUOTE(request_order), ");");
467+
PREPARE statement FROM @sql;
468+
EXECUTE statement;
469+
DEALLOCATE PREPARE statement;
470+
END
471+
</sql>
472+
<rollback>
473+
DROP procedure IF EXISTS `INSERT_STEP_TO_TEST`;
474+
</rollback>
475+
</changeSet>
476+
477+
<changeSet id="stored procedure SELECT_TEST_STEPS" author="v.kostyukevich">
478+
<sql endDelimiter="#">
479+
480+
DROP procedure IF EXISTS `SELECT_TEST_STEPS`;
481+
482+
#
483+
484+
CREATE PROCEDURE `SELECT_TEST_STEPS`(
485+
IN request_project_id VARCHAR(11),
486+
IN request_test_id VARCHAR(11)
487+
)
488+
BEGIN
489+
SET @sql = CONCAT("SELECT project_steps_", request_project_id, ".*, project_step_to_test_", request_project_id, ".order
490+
FROM project_step_to_test_", request_project_id, "
491+
LEFT JOIN project_steps_", request_project_id, "
492+
ON project_step_to_test_", request_project_id, ".step_id = project_steps_", request_project_id, ".id
493+
WHERE test_id=", request_test_id, " ORDER BY project_step_to_test_", request_project_id, ".order;");
494+
PREPARE statement FROM @sql;
495+
EXECUTE statement;
496+
DEALLOCATE PREPARE statement;
497+
END
498+
</sql>
499+
<rollback>
500+
DROP procedure IF EXISTS `SELECT_TEST_STEPS`;
501+
</rollback>
502+
</changeSet>
503+
451504
</databaseChangeLog>
452505

0 commit comments

Comments
 (0)