Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/validation/LMessungValidator.java @ 340:02803c0e7bd1
More vaidation for messung objects.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Fri, 30 Aug 2013 09:17:03 +0200 |
parents | 53417b61391c |
children | c26fcf442353 |
rev | line source |
---|---|
127
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.lada.validation; |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
2 |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
3 import java.util.HashMap; |
228
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
4 import java.util.List; |
127
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
5 import java.util.Map; |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
6 |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
7 import javax.enterprise.context.ApplicationScoped; |
228
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
8 import javax.inject.Inject; |
127
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
9 import javax.inject.Named; |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
10 |
228
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
11 import de.intevation.lada.data.QueryBuilder; |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
12 import de.intevation.lada.data.Repository; |
127
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
13 import de.intevation.lada.model.LMessung; |
340
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
14 import de.intevation.lada.model.LMesswert; |
228
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
15 import de.intevation.lada.model.LProbe; |
243
6a85146d76f5
Changed object type from LProbe to LProbeInfo.
Raimund Renkert <rrenkert@intevation.de>
parents:
228
diff
changeset
|
16 import de.intevation.lada.model.LProbeInfo; |
340
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
17 import de.intevation.lada.model.SPflichtMessgroesse; |
228
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
18 import de.intevation.lada.rest.Response; |
127
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
19 |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
20 /** |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
21 * Validator for LMessung objects. |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
22 * |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
23 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a> |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
24 */ |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
25 @Named("lmessungvalidator") |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
26 @ApplicationScoped |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
27 public class LMessungValidator |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
28 implements Validator |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
29 { |
228
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
30 @Inject |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
31 @Named("lproberepository") |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
32 private Repository probeRepository; |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
33 |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
34 @Inject |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
35 @Named("lmessungrepository") |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
36 private Repository messungRepository; |
127
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
37 |
340
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
38 @Inject |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
39 @Named("lmesswertrepository") |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
40 private Repository messwertRepository; |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
41 |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
42 @Inject |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
43 @Named("readonlyrepository") |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
44 private Repository readonlyRepository; |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
45 |
263
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
46 /** |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
47 * Validate a LMessung object. |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
48 * |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
49 * @param object The object to validate. |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
50 * @param update The database operation. |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
51 * TRUE indicates that the object should be updated, FALSE |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
52 * if the object is a new Object. |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
53 * @return Map containing warnings. |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
54 * @throws ValidationException |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
55 */ |
127
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
56 @Override |
260
0de24f5e7c01
Added boolean parameter to validate method to test if update or create was triggered.
Raimund Renkert <rrenkert@intevation.de>
parents:
243
diff
changeset
|
57 public Map<String, Integer> validate(Object object, boolean update) |
127
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
58 throws ValidationException { |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
59 Map<String, Integer> warnings = new HashMap<String, Integer>(); |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
60 if (!(object instanceof LMessung)) { |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
61 Map<String, Integer> errors = new HashMap<String, Integer>(); |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
62 errors.put("lmessung", 610); |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
63 throw new ValidationException(errors); |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
64 } |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
65 LMessung messung = (LMessung)object; |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
66 |
260
0de24f5e7c01
Added boolean parameter to validate method to test if update or create was triggered.
Raimund Renkert <rrenkert@intevation.de>
parents:
243
diff
changeset
|
67 validateHasNebenprobenNr(messung, warnings); |
228
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
68 validateDatum(messung, warnings); |
340
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
69 validateHasMesswert(messung, warnings); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
70 validateMessgroesse(messung, warnings); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
71 validatePflichtmessgroessen(messung, warnings); |
260
0de24f5e7c01
Added boolean parameter to validate method to test if update or create was triggered.
Raimund Renkert <rrenkert@intevation.de>
parents:
243
diff
changeset
|
72 if (!update) { |
0de24f5e7c01
Added boolean parameter to validate method to test if update or create was triggered.
Raimund Renkert <rrenkert@intevation.de>
parents:
243
diff
changeset
|
73 validateUniqueNebenprobenNr(messung, warnings); |
0de24f5e7c01
Added boolean parameter to validate method to test if update or create was triggered.
Raimund Renkert <rrenkert@intevation.de>
parents:
243
diff
changeset
|
74 } |
127
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
75 return warnings; |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
76 } |
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
77 |
340
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
78 private void validateHasMesswert( |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
79 LMessung messung, |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
80 Map<String, Integer> warnings) { |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
81 QueryBuilder<LMesswert> wertBuilder = |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
82 new QueryBuilder<LMesswert>( |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
83 messwertRepository.getEntityManager(), LMesswert.class); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
84 wertBuilder.and("messungsId", messung.getMessungsId()) |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
85 .and("probeId", messung.getProbeId()); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
86 Response wertResponse = messwertRepository.filter(wertBuilder.getQuery()); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
87 List<LMesswert> messwerte = (List<LMesswert>)wertResponse.getData(); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
88 if (messwerte == null || messwerte.isEmpty()) { |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
89 warnings.put("messwert", 631); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
90 } |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
91 } |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
92 |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
93 private void validatePflichtmessgroessen( |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
94 LMessung messung, |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
95 Map<String, Integer> warnings) { |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
96 QueryBuilder<SPflichtMessgroesse> builder = |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
97 new QueryBuilder<SPflichtMessgroesse>( |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
98 readonlyRepository.getEntityManager(), |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
99 SPflichtMessgroesse.class); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
100 builder.and("mmtId", messung.getMmtId()); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
101 Response response = readonlyRepository.filter(builder.getQuery()); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
102 List<SPflichtMessgroesse> pflicht = |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
103 (List<SPflichtMessgroesse>)response.getData(); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
104 |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
105 QueryBuilder<LMesswert> wertBuilder = |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
106 new QueryBuilder<LMesswert>( |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
107 messwertRepository.getEntityManager(), LMesswert.class); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
108 wertBuilder.and("messungsId", messung.getMessungsId()) |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
109 .and("probeId", messung.getProbeId()); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
110 Response wertResponse = |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
111 messwertRepository.filter(wertBuilder.getQuery()); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
112 List<LMesswert> messwerte = (List<LMesswert>)wertResponse.getData(); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
113 for (SPflichtMessgroesse p : pflicht) { |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
114 boolean hit = false; |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
115 for (LMesswert wert : messwerte) { |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
116 if (p.getMessgroesseId().equals(wert.getMessgroesseId())) { |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
117 hit = true; |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
118 } |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
119 } |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
120 if (!hit) { |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
121 warnings.put("pflichtmessgroesse", 631); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
122 } |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
123 } |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
124 } |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
125 |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
126 private void validateMessgroesse( |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
127 LMessung messung, |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
128 Map<String, Integer> warnings |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
129 ) { |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
130 String mmt = messung.getMmtId(); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
131 QueryBuilder<LMesswert> builder = |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
132 new QueryBuilder<LMesswert>( |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
133 messwertRepository.getEntityManager(), LMesswert.class); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
134 builder.and("messungsId", messung.getMessungsId()) |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
135 .and("probeId", messung.getProbeId()); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
136 Response response = messwertRepository.filter(builder.getQuery()); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
137 List<LMesswert> messwerte = (List<LMesswert>)response.getData(); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
138 String query = "select messgroesse_id from S_mmt_messgroesse where mmt_id = " + mmt; |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
139 List<Object[]> results = readonlyRepository.getEntityManager().createNativeQuery(query).getResultList(); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
140 for(LMesswert messwert: messwerte) { |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
141 boolean hit = false; |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
142 for (Object[] row: results) { |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
143 if (messwert.getMessgroesseId().equals(row[0].toString())) { |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
144 hit = true; |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
145 } |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
146 } |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
147 if (!hit) { |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
148 warnings.put("messgroesse", 632); |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
149 } |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
150 } |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
151 } |
02803c0e7bd1
More vaidation for messung objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
336
diff
changeset
|
152 |
263
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
153 /** |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
154 * Check if the object has a 'Nebenproben Nr.'. |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
155 * |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
156 * @param messung The LMessung object. |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
157 * @param warnings The map containing warnings. |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
158 * @throws ValidationException |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
159 */ |
260
0de24f5e7c01
Added boolean parameter to validate method to test if update or create was triggered.
Raimund Renkert <rrenkert@intevation.de>
parents:
243
diff
changeset
|
160 private void validateHasNebenprobenNr( |
228
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
161 LMessung messung, |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
162 Map<String, Integer> warnings) |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
163 throws ValidationException { |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
164 if (messung.getNebenprobenNr() == null || |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
165 messung.getNebenprobenNr().equals("")) { |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
166 warnings.put("nebenprobenNr", 631); |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
167 } |
260
0de24f5e7c01
Added boolean parameter to validate method to test if update or create was triggered.
Raimund Renkert <rrenkert@intevation.de>
parents:
243
diff
changeset
|
168 } |
0de24f5e7c01
Added boolean parameter to validate method to test if update or create was triggered.
Raimund Renkert <rrenkert@intevation.de>
parents:
243
diff
changeset
|
169 |
263
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
170 /** |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
171 * Check if the 'Nebenproben Nr' is unique. |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
172 * |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
173 * @param messung The LMessung object. |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
174 * @param warnings The map containing warnings. |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
175 * @throws ValidationException |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
176 */ |
260
0de24f5e7c01
Added boolean parameter to validate method to test if update or create was triggered.
Raimund Renkert <rrenkert@intevation.de>
parents:
243
diff
changeset
|
177 private void validateUniqueNebenprobenNr( |
0de24f5e7c01
Added boolean parameter to validate method to test if update or create was triggered.
Raimund Renkert <rrenkert@intevation.de>
parents:
243
diff
changeset
|
178 LMessung messung, |
0de24f5e7c01
Added boolean parameter to validate method to test if update or create was triggered.
Raimund Renkert <rrenkert@intevation.de>
parents:
243
diff
changeset
|
179 Map<String, Integer> warnings) |
0de24f5e7c01
Added boolean parameter to validate method to test if update or create was triggered.
Raimund Renkert <rrenkert@intevation.de>
parents:
243
diff
changeset
|
180 throws ValidationException { |
228
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
181 QueryBuilder<LMessung> builder = |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
182 new QueryBuilder<LMessung>( |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
183 messungRepository.getEntityManager(), |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
184 LMessung.class); |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
185 builder.and("probeId", messung.getProbeId()); |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
186 Response response = messungRepository.filter(builder.getQuery()); |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
187 List<LMessung> list = (List<LMessung>) response.getData(); |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
188 if (list.isEmpty()) { |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
189 return; |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
190 } |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
191 for (LMessung m: list) { |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
192 if (m.getNebenprobenNr().equals(messung.getNebenprobenNr())) { |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
193 Map<String, Integer> errors = new HashMap<String, Integer>(); |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
194 errors.put("nebenprobenNr", 611); |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
195 throw new ValidationException(errors); |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
196 } |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
197 } |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
198 } |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
199 |
263
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
200 /** |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
201 * Check if the 'Messdatum' is after the 'Probennahmedatum'. |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
202 * |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
203 * @param messung The LMessung object. |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
204 * @param warnings The map containing warinings. |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
205 * @throws ValidationException |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
260
diff
changeset
|
206 */ |
228
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
207 private void validateDatum( |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
208 LMessung messung, |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
209 Map<String, Integer> warnings) |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
210 throws ValidationException{ |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
211 String probeId = messung.getProbeId(); |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
212 Response response = probeRepository.findById(LProbe.class, probeId); |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
213 @SuppressWarnings("unchecked") |
243
6a85146d76f5
Changed object type from LProbe to LProbeInfo.
Raimund Renkert <rrenkert@intevation.de>
parents:
228
diff
changeset
|
214 List<LProbeInfo> list = (List<LProbeInfo>) response.getData(); |
228
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
215 if (list.isEmpty()) { |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
216 Map<String, Integer> errors = new HashMap<String, Integer>(); |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
217 errors.put("lprobe", 604); |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
218 throw new ValidationException(errors); |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
219 } |
243
6a85146d76f5
Changed object type from LProbe to LProbeInfo.
Raimund Renkert <rrenkert@intevation.de>
parents:
228
diff
changeset
|
220 LProbeInfo probe = list.get(0); |
336
53417b61391c
Fixed validator to avoid NPE.
Raimund Renkert <rrenkert@intevation.de>
parents:
263
diff
changeset
|
221 if (probe.getProbeentnahmeEnde() == null || |
53417b61391c
Fixed validator to avoid NPE.
Raimund Renkert <rrenkert@intevation.de>
parents:
263
diff
changeset
|
222 probe.getProbeentnahmeEnde().after(messung.getMesszeitpunkt())) { |
228
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
223 warnings.put("messzeitpunkt", 661); |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
224 } |
e7110c4324eb
More validation for LMesswert and LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
225 } |
127
ab094cd8d78b
New validator for LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
226 } |