annotate src/main/java/de/intevation/lada/validation/LProbeValidator.java @ 263:2098db2e8fbd M1

Code documentation.
author Raimund Renkert <rrenkert@intevation.de>
date Wed, 17 Jul 2013 09:40:53 +0200
parents 0de24f5e7c01
children aadc0bb0dc1d
rev   line source
64
132eca870434 New validator for LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
1 package de.intevation.lada.validation;
132eca870434 New validator for LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
2
110
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
3 import java.util.Date;
64
132eca870434 New validator for LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
4 import java.util.HashMap;
110
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
5 import java.util.List;
64
132eca870434 New validator for LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
6 import java.util.Map;
132eca870434 New validator for LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
7
117
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
8 import javax.enterprise.context.ApplicationScoped;
110
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
9 import javax.inject.Inject;
64
132eca870434 New validator for LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
10 import javax.inject.Named;
132eca870434 New validator for LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
11
110
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
12 import de.intevation.lada.data.LOrtRepository;
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
13 import de.intevation.lada.data.LProbeRepository;
182
a2e04ab2cd44 Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents: 117
diff changeset
14 import de.intevation.lada.data.QueryBuilder;
110
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
15 import de.intevation.lada.model.LOrt;
68
9e34b7e872f9 Documentation and minor code cosmetics/renamings.
Raimund Renkert <rrenkert@intevation.de>
parents: 64
diff changeset
16 import de.intevation.lada.model.LProbe;
182
a2e04ab2cd44 Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents: 117
diff changeset
17 import de.intevation.lada.rest.Response;
68
9e34b7e872f9 Documentation and minor code cosmetics/renamings.
Raimund Renkert <rrenkert@intevation.de>
parents: 64
diff changeset
18
9e34b7e872f9 Documentation and minor code cosmetics/renamings.
Raimund Renkert <rrenkert@intevation.de>
parents: 64
diff changeset
19 /**
9e34b7e872f9 Documentation and minor code cosmetics/renamings.
Raimund Renkert <rrenkert@intevation.de>
parents: 64
diff changeset
20 * Validator for LProbe objects.
96
025c6e30be9e Codestyle
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 72
diff changeset
21 *
68
9e34b7e872f9 Documentation and minor code cosmetics/renamings.
Raimund Renkert <rrenkert@intevation.de>
parents: 64
diff changeset
22 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a>
9e34b7e872f9 Documentation and minor code cosmetics/renamings.
Raimund Renkert <rrenkert@intevation.de>
parents: 64
diff changeset
23 */
64
132eca870434 New validator for LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
24 @Named("lprobevalidator")
117
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
25 @ApplicationScoped
64
132eca870434 New validator for LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
26 public class LProbeValidator
132eca870434 New validator for LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
27 implements Validator
132eca870434 New validator for LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
28 {
68
9e34b7e872f9 Documentation and minor code cosmetics/renamings.
Raimund Renkert <rrenkert@intevation.de>
parents: 64
diff changeset
29 /**
117
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
30 * The repositories used in this validator.
68
9e34b7e872f9 Documentation and minor code cosmetics/renamings.
Raimund Renkert <rrenkert@intevation.de>
parents: 64
diff changeset
31 */
110
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
32 @Inject
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
33 private LProbeRepository probeRepository;
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
34 @Inject
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
35 private LOrtRepository ortRepository;
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
36
68
9e34b7e872f9 Documentation and minor code cosmetics/renamings.
Raimund Renkert <rrenkert@intevation.de>
parents: 64
diff changeset
37 /**
9e34b7e872f9 Documentation and minor code cosmetics/renamings.
Raimund Renkert <rrenkert@intevation.de>
parents: 64
diff changeset
38 * Validate a LProbe object.
96
025c6e30be9e Codestyle
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 72
diff changeset
39 *
263
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
40 * @param probe The LProbe object.
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
41 * @param update The database operation.
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
42 * TRUE indicates that the object should be updated, FALSE
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
43 * if the object is a new Object.
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
44 * @return Map containing warnings.
68
9e34b7e872f9 Documentation and minor code cosmetics/renamings.
Raimund Renkert <rrenkert@intevation.de>
parents: 64
diff changeset
45 */
64
132eca870434 New validator for LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
46 @Override
260
0de24f5e7c01 Added boolean parameter to validate method to test if update or create was triggered.
Raimund Renkert <rrenkert@intevation.de>
parents: 185
diff changeset
47 public Map<String, Integer> validate(Object probe, boolean update)
64
132eca870434 New validator for LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
48 throws ValidationException {
117
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
49 Map<String, Integer>warnings = new HashMap<String, Integer>();
68
9e34b7e872f9 Documentation and minor code cosmetics/renamings.
Raimund Renkert <rrenkert@intevation.de>
parents: 64
diff changeset
50 if (!(probe instanceof LProbe)) {
9e34b7e872f9 Documentation and minor code cosmetics/renamings.
Raimund Renkert <rrenkert@intevation.de>
parents: 64
diff changeset
51 Map<String, Integer> errors = new HashMap<String, Integer>();
9e34b7e872f9 Documentation and minor code cosmetics/renamings.
Raimund Renkert <rrenkert@intevation.de>
parents: 64
diff changeset
52 errors.put("lprobe", 610);
9e34b7e872f9 Documentation and minor code cosmetics/renamings.
Raimund Renkert <rrenkert@intevation.de>
parents: 64
diff changeset
53 throw new ValidationException(errors);
9e34b7e872f9 Documentation and minor code cosmetics/renamings.
Raimund Renkert <rrenkert@intevation.de>
parents: 64
diff changeset
54 }
110
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
55 LProbe p = (LProbe)probe;
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
56
117
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
57 validateEntnahmeOrt(p, warnings);
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
58 validateProbenahmeBegin(p, warnings);
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
59 validateUWB(p, warnings);
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
60 validateHauptProbenNummer(p, warnings);
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
61 return warnings;
64
132eca870434 New validator for LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
62 }
132eca870434 New validator for LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
63
263
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
64 /**
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
65 * Check if the 'Hauptproben Nr' is unique.
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
66 *
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
67 * @param p The LProbe object.
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
68 * @param warnings The map containing warnings.
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
69 * @throws ValidationException
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
70 */
117
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
71 private void validateHauptProbenNummer(LProbe p, Map<String, Integer> warnings)
110
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
72 throws ValidationException {
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
73 String hpn = p.getHauptprobenNr();
182
a2e04ab2cd44 Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents: 117
diff changeset
74 QueryBuilder<LProbe> builder =
a2e04ab2cd44 Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents: 117
diff changeset
75 new QueryBuilder<LProbe>(
a2e04ab2cd44 Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents: 117
diff changeset
76 probeRepository.getEntityManager(), LProbe.class);
a2e04ab2cd44 Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents: 117
diff changeset
77 builder.and("mstId", p.getMstId()).and("hauptprobenNr", hpn);
68
9e34b7e872f9 Documentation and minor code cosmetics/renamings.
Raimund Renkert <rrenkert@intevation.de>
parents: 64
diff changeset
78
182
a2e04ab2cd44 Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents: 117
diff changeset
79 Response response = probeRepository.filter(builder.getQuery());
a2e04ab2cd44 Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents: 117
diff changeset
80 if (!((List<LProbe>)response.getData()).isEmpty()) {
110
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
81 Map<String, Integer> errors = new HashMap<String, Integer>();
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
82 errors.put("hauptprobenNr", 611);
117
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
83 throw new ValidationException(errors, warnings);
110
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
84 }
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
85 }
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
86
263
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
87 /**
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
88 * Check if the LProbe object has 'Entnahmeort'.
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
89 *
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
90 * @param probe
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
91 * @param warnings
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
92 */
117
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
93 private void validateEntnahmeOrt(LProbe probe, Map<String, Integer> warnings) {
110
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
94 String pid = probe.getProbeId();
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
95
182
a2e04ab2cd44 Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents: 117
diff changeset
96 QueryBuilder<LOrt> builder =
a2e04ab2cd44 Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents: 117
diff changeset
97 new QueryBuilder<LOrt>(
a2e04ab2cd44 Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents: 117
diff changeset
98 ortRepository.getEntityManager(), LOrt.class);
183
7043530e0e56 Fixed typo in probe validator.
Raimund Renkert <rrenkert@intevation.de>
parents: 182
diff changeset
99 builder.and("probeId", pid);
110
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
100
182
a2e04ab2cd44 Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents: 117
diff changeset
101 Response response = ortRepository.filter(builder.getQuery());
a2e04ab2cd44 Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents: 117
diff changeset
102 if (((List<LOrt>)response.getData()).isEmpty()) {
117
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
103 warnings.put("entnahmeOrt", 631);
110
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
104 }
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
105 }
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
106
263
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
107 /**
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
108 * Check if 'Probenahmeende' is after 'Probenahmebeginn'.
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
109 *
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
110 * @param probe The LProbe object.
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
111 * @param warnings The map containing warnings.
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
112 */
117
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
113 private void validateProbenahmeBegin(LProbe probe, Map<String, Integer> warnings) {
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
114 Date begin = probe.getProbeentnahmeBeginn();
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
115 if (begin == null) {
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
116 warnings.put("probeentnahmeBegin", 631);
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
117 }
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
118 else if (begin.after(new Date())){
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
119 warnings.put("probeentnahmeBegin", 661);
110
30e3ae65cd94 Added validation for LProbe attributes.
Raimund Renkert <rrenkert@intevation.de>
parents: 105
diff changeset
120 }
64
132eca870434 New validator for LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
121 }
132eca870434 New validator for LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
122
263
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
123 /**
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
124 * Check if the LProbe object has a 'Umweltbereich'.
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
125 *
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
126 * @param probe The LProbe object.
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
127 * @param warnings The map containing warnings.
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 260
diff changeset
128 */
117
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
129 private void validateUWB(LProbe probe, Map<String, Integer> warnings) {
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
130 String uwb = probe.getUmwId();
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
131 if (uwb == null || uwb.equals("")) {
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
132 warnings.put("uwb", 631);
92b8b0e1e9fc Modified Validator interface and restructured the LProbe validation.
Raimund Renkert <rrenkert@intevation.de>
parents: 110
diff changeset
133 }
64
132eca870434 New validator for LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
134 }
132eca870434 New validator for LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
135 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)