Revize 7638be72
Přidáno uživatelem Vojtěch Danišík před asi 4 roky(ů)
src/main/java/vldc/aswi/validators/AssemblyValidator.java | ||
---|---|---|
8 | 8 |
import vldc.aswi.domain.parameter.Parameter; |
9 | 9 |
import vldc.aswi.service.SqlQueryManager; |
10 | 10 |
|
11 |
import java.util.List; |
|
12 |
|
|
11 | 13 |
/** |
12 | 14 |
* Validator for assembly. |
13 | 15 |
*/ |
... | ... | |
25 | 27 |
*/ |
26 | 28 |
@Override |
27 | 29 |
public boolean supports(Class<?> aClass) { |
28 |
return Assembly.class.equals(aClass);
|
|
30 |
return Assembly.class.isAssignableFrom(aClass);
|
|
29 | 31 |
} |
30 | 32 |
|
31 | 33 |
/** |
... | ... | |
35 | 37 |
*/ |
36 | 38 |
@Override |
37 | 39 |
public void validate(Object obj, Errors errors) { |
38 |
// TODO: VALIDATING - https://docs.spring.io/spring/docs/4.1.x/spring-framework-reference/html/validation.html |
|
39 |
// TODO: ERROR STYLES - https://mkyong.com/spring-mvc/spring-mvc-form-errors-tag-example/ |
|
40 | 40 |
|
41 | 41 |
// Get assembly values. |
42 | 42 |
Assembly assembly = (Assembly) obj; |
43 | 43 |
|
44 | 44 |
// Validate SQL Query. |
45 |
boolean isSQLQueryValid = this.sqlQueryManager.validateSQLQuery(assembly.getSQLQuery());
|
|
45 |
List<String> columnNames = this.sqlQueryManager.getNameOfColumnsFromQuery(assembly.getSQLQuery());
|
|
46 | 46 |
|
47 |
if (!isSQLQueryValid) {
|
|
47 |
if (columnNames == null) {
|
|
48 | 48 |
errors.rejectValue("SQLQuery", "SQL Query není validní!"); |
49 |
// Field error in object 'assembly' on field 'SQLQuery': rejected value [SELECT SP.fakulta_S as fakulta_studia, |
|
50 |
// SP.kodSP_i as program_studia, fn_meaning2(SP.typ,'TYP_OBORU') as typ_studia, fn_meaning2(SP.forma,'FORMA_OBORU_NEW') |
|
51 |
// as forma_studia, OS.prijmeni || ' ' || OS.jmeno as osoba, trunc((sysdate - OS.datum_naroz) / 365) as vek, 1 as pocet |
|
52 |
// FROM studijni_programy SP, studenti ST, osoby OS WHERE SP.stpridno = ST.stpridno AND ST.osobidno = OS.osobidno AND |
|
53 |
// exists (SELECT 'a' FROM studenti_v_roce SVR WHERE ST.os_cislo = SVR.os_cislo AND SVR.rok_platnosti >= '2018') AND |
|
54 |
// ROWNUM <= 50]; |
|
55 |
// codes [SQL Query není validní!.assembly.SQLQuery,SQL Query není validní!. |
|
56 |
// SQLQuery,SQL Query není validní!.java.lang.String,SQL Query není validní!]; arguments []; default message [null] |
|
57 | 49 |
} |
58 | 50 |
|
59 |
// TODO: test validation for new assembly -> especially for parameters. |
|
60 |
for (int i = 0; i < assembly.getParameters().size(); i++) { |
|
61 |
// TODO: Parametr - Pokud název v SQL nebude v dotazu SQL, bude vyhozena chyba. |
|
62 |
// TODO: Maybe nejdříve vzít všechny sloupce a potom zkontrolovat jestli obsahuje ten vybranej sloupec ? |
|
63 |
// TODO: A kontrolovat to podle ".. as NAZEV_SLOUPCE" nebo jako "SP.TYP_STUDIA ...." ??? |
|
51 |
if (assembly.getParameters() != null && assembly.getParameters().size() > 0) { |
|
52 |
for (int i = 0; i < assembly.getParameters().size(); i++) { |
|
53 |
Parameter parameter = assembly.getParameters().get(i); |
|
64 | 54 |
|
65 |
/* |
|
66 |
if (!isParameterNameInSQLQuery) { |
|
67 |
errors.rejectValue("parameterSQLName" + i, "Název parametru v SQL query není validní!"); |
|
68 |
} |
|
69 |
*/ |
|
55 |
// Check if parameter's nameOfSelect is contained in column names of SQL query. |
|
56 |
if (parameter.getNameOfSelect() == null || !columnNames.stream().anyMatch(parameter.getNameOfSelect()::equalsIgnoreCase)) { |
|
57 |
errors.reject("parameters[" + i + "].nameOfSelect", "Název parametru v SQL query není validní u parametru '" + parameter.getName() + "'!"); |
|
58 |
} |
|
70 | 59 |
|
71 |
Parameter parameter = assembly.getParameters().get(i);
|
|
72 |
// Check if current parameter have at least 1 location.
|
|
73 |
if (parameter == null || parameter.getLocations() == null || parameter.getLocations().size() == 0) {
|
|
74 |
errors.rejectValue("parameters[" + i + "].locations", "Není vybrána žádná lokace!");
|
|
60 |
// Check if current parameter have at least 1 location.
|
|
61 |
if (parameter.getLocations() == null || parameter.getLocations().size() == 0) {
|
|
62 |
errors.rejectValue("parameters[" + i + "].locations", "", "Není vybrána žádná lokace u parametru '" + parameter.getName() + "'!");
|
|
63 |
}
|
|
75 | 64 |
} |
76 | 65 |
} |
77 | 66 |
} |
Také k dispozici: Unified diff
re #7886 Assembly validator completed (validating sql query, parameter name in select and parameter location) + displaying temp error message.
Added title for edit / add assembly forms.
Added toString method for all domains.