Projekt

Obecné

Profil

Stáhnout (2.57 KB) Statistiky
| Větev: | Revize:
1
package vldc.aswi.validators;
2

    
3
import org.springframework.beans.factory.annotation.Autowired;
4
import org.springframework.stereotype.Component;
5
import org.springframework.validation.Errors;
6
import org.springframework.validation.Validator;
7
import vldc.aswi.domain.Assembly;
8
import vldc.aswi.domain.parameter.Parameter;
9
import vldc.aswi.service.SqlQueryManager;
10

    
11
import java.util.List;
12

    
13
/**
14
 * Validator for assembly.
15
 */
16
@Component
17
public class AssemblyValidator implements Validator {
18

    
19
    /** Autowired sql query manager. */
20
    @Autowired
21
    private SqlQueryManager sqlQueryManager;
22

    
23
    /**
24
     * Validator for supporting this class.
25
     * @param aClass - Class.
26
     * @return true if sent class match Assembly class.
27
     */
28
    @Override
29
    public boolean supports(Class<?> aClass) {
30
        return Assembly.class.isAssignableFrom(aClass);
31
    }
32

    
33
    /**
34
     * Validate assembly values.
35
     * @param obj - Validated object.
36
     * @param errors - Errors sended to output.
37
     */
38
    @Override
39
    public void validate(Object obj, Errors errors) {
40

    
41
        // Get assembly values.
42
        Assembly assembly = (Assembly) obj;
43

    
44
        // Validate SQL Query.
45
        List<String> columnNames = this.sqlQueryManager.getNameOfColumnsFromQuery(assembly.getSQLQuery());
46

    
47
        if (columnNames == null) {
48
            errors.rejectValue("SQLQuery", "SQL Query není validní!");
49
            return;
50
        }
51

    
52
        if (assembly.getParameters() != null && assembly.getParameters().size() > 0) {
53
            for (int i = 0; i < assembly.getParameters().size(); i++) {
54
                Parameter parameter = assembly.getParameters().get(i);
55

    
56
                // If parameter does not have name then it means, that it is deleted parameter.
57
                if (parameter.getName() == null) {
58
                    continue;
59
                }
60

    
61
                // Check if parameter's nameOfSelect is contained in column names of SQL query.
62
                if (parameter.getNameOfSelect() == null || !columnNames.stream().anyMatch(n-> n.equalsIgnoreCase(parameter.getNameOfSelect()))) {
63
                    errors.reject("parameters[" + i + "].nameOfSelect", "Název parametru v SQL není validní u parametru '" + parameter.getName() + "'!");
64
                }
65

    
66
                // Check if current parameter have at least 1 location.
67
                if (parameter.getLocations() == null || parameter.getLocations().size() == 0) {
68
                    errors.rejectValue("parameters[" + i + "].locations", "", "Není vybrána žádná lokace u parametru '" + parameter.getName() + "'!");
69
                }
70
            }
71
        }
72
    }
73
}
    (1-1/1)