Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/validation/rules/messung/MessgroesseToMessmethode.java @ 1337:462226615381
Show warning also at the other side of the relation.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 06 Apr 2017 17:15:55 +0200 |
parents | 18c789672b14 |
children |
rev | line source |
---|---|
711
3ec358698b4d
Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
685
diff
changeset
|
1 /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz |
3ec358698b4d
Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
685
diff
changeset
|
2 * Software engineering by Intevation GmbH |
3ec358698b4d
Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
685
diff
changeset
|
3 * |
3ec358698b4d
Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
685
diff
changeset
|
4 * This file is Free Software under the GNU GPL (v>=3) |
3ec358698b4d
Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
685
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out |
3ec358698b4d
Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
685
diff
changeset
|
6 * the documentation coming with IMIS-Labordaten-Application for details. |
3ec358698b4d
Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
685
diff
changeset
|
7 */ |
647
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
8 package de.intevation.lada.validation.rules.messung; |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
9 |
677
de47b7193bdb
Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
647
diff
changeset
|
10 import java.util.ArrayList; |
647
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
11 import java.util.List; |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
12 |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
13 import javax.inject.Inject; |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
14 |
677
de47b7193bdb
Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
647
diff
changeset
|
15 import org.apache.log4j.Logger; |
de47b7193bdb
Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
647
diff
changeset
|
16 |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
887
diff
changeset
|
17 import de.intevation.lada.model.land.Messung; |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
887
diff
changeset
|
18 import de.intevation.lada.model.land.Messwert; |
1336
18c789672b14
Made validator messages more verbose for importer.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1097
diff
changeset
|
19 import de.intevation.lada.model.stammdaten.Messgroesse; |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
887
diff
changeset
|
20 import de.intevation.lada.model.stammdaten.MmtMessgroesse; |
647
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
21 import de.intevation.lada.util.annotation.RepositoryConfig; |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
22 import de.intevation.lada.util.data.QueryBuilder; |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
23 import de.intevation.lada.util.data.Repository; |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
24 import de.intevation.lada.util.data.RepositoryType; |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
25 import de.intevation.lada.util.rest.Response; |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
26 import de.intevation.lada.validation.Violation; |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
27 import de.intevation.lada.validation.annotation.ValidationRule; |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
28 import de.intevation.lada.validation.rules.Rule; |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
29 |
711
3ec358698b4d
Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
685
diff
changeset
|
30 /** |
3ec358698b4d
Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
685
diff
changeset
|
31 * Validation rule for messungen. |
3ec358698b4d
Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
685
diff
changeset
|
32 * Validates if the "messgroesse" fits the "messmethode". |
3ec358698b4d
Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
685
diff
changeset
|
33 * |
3ec358698b4d
Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
685
diff
changeset
|
34 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a> |
3ec358698b4d
Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
685
diff
changeset
|
35 */ |
647
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
36 @ValidationRule("Messung") |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
37 public class MessgroesseToMessmethode implements Rule { |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
38 |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
39 @Inject |
677
de47b7193bdb
Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
647
diff
changeset
|
40 private Logger logger; |
de47b7193bdb
Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
647
diff
changeset
|
41 |
de47b7193bdb
Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
647
diff
changeset
|
42 @Inject |
647
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
43 @RepositoryConfig(type=RepositoryType.RO) |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
44 private Repository repository; |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
45 |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
46 @Override |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
47 public Violation execute(Object object) { |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
887
diff
changeset
|
48 Messung messung = (Messung)object; |
647
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
49 String mmt = messung.getMmtId(); |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
887
diff
changeset
|
50 QueryBuilder<Messwert> builder = |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
887
diff
changeset
|
51 new QueryBuilder<Messwert>( |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
887
diff
changeset
|
52 repository.entityManager("land"), Messwert.class); |
677
de47b7193bdb
Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
647
diff
changeset
|
53 builder.and("messungsId", messung.getId()); |
647
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
54 Response response = repository.filter(builder.getQuery(), "land"); |
685
3118fbbe6292
Fixed or supressed warnings.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
677
diff
changeset
|
55 @SuppressWarnings("unchecked") |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
887
diff
changeset
|
56 List<Messwert> messwerte = (List<Messwert>)response.getData(); |
647
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
57 |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
58 QueryBuilder<MmtMessgroesse> mmtBuilder = |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
59 new QueryBuilder<MmtMessgroesse>( |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
60 repository.entityManager("stamm"), MmtMessgroesse.class); |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
61 |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
62 Response results = |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
63 repository.filter(mmtBuilder.getQuery(), "stamm"); |
685
3118fbbe6292
Fixed or supressed warnings.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
677
diff
changeset
|
64 @SuppressWarnings("unchecked") |
647
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
65 List<MmtMessgroesse> messgroessen = |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
66 (List<MmtMessgroesse>)results.getData(); |
677
de47b7193bdb
Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
647
diff
changeset
|
67 List<MmtMessgroesse> found = new ArrayList<MmtMessgroesse>(); |
de47b7193bdb
Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
647
diff
changeset
|
68 for (MmtMessgroesse mg: messgroessen) { |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
887
diff
changeset
|
69 if (mg.getMmtId().equals(mmt)) { |
677
de47b7193bdb
Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
647
diff
changeset
|
70 found.add(mg); |
de47b7193bdb
Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
647
diff
changeset
|
71 } |
de47b7193bdb
Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
647
diff
changeset
|
72 } |
647
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
73 Violation violation = new Violation(); |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
887
diff
changeset
|
74 for(Messwert messwert: messwerte) { |
647
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
75 boolean hit = false; |
677
de47b7193bdb
Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
647
diff
changeset
|
76 for (MmtMessgroesse messgroesse: found) { |
647
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
77 if (messwert.getMessgroesseId().equals( |
1336
18c789672b14
Made validator messages more verbose for importer.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1097
diff
changeset
|
78 messgroesse.getMessgroesseId())) { |
647
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
79 hit = true; |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
80 } |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
81 } |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
82 if (!hit) { |
1336
18c789672b14
Made validator messages more verbose for importer.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1097
diff
changeset
|
83 Messgroesse mg = repository.getByIdPlain( |
18c789672b14
Made validator messages more verbose for importer.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1097
diff
changeset
|
84 Messgroesse.class, |
18c789672b14
Made validator messages more verbose for importer.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1097
diff
changeset
|
85 messwert.getMessgroesseId(), |
18c789672b14
Made validator messages more verbose for importer.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1097
diff
changeset
|
86 "stamm"); |
18c789672b14
Made validator messages more verbose for importer.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1097
diff
changeset
|
87 violation.addWarning("messgroesse#" + mg.getMessgroesse(), 632); |
647
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
88 } |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
89 } |
1337
462226615381
Show warning also at the other side of the relation.
Tom Gottfried <tom@intevation.de>
parents:
1336
diff
changeset
|
90 if (violation.hasWarnings()) { |
462226615381
Show warning also at the other side of the relation.
Tom Gottfried <tom@intevation.de>
parents:
1336
diff
changeset
|
91 violation.addWarning("mmtId", 632); |
462226615381
Show warning also at the other side of the relation.
Tom Gottfried <tom@intevation.de>
parents:
1336
diff
changeset
|
92 return violation; |
462226615381
Show warning also at the other side of the relation.
Tom Gottfried <tom@intevation.de>
parents:
1336
diff
changeset
|
93 } |
462226615381
Show warning also at the other side of the relation.
Tom Gottfried <tom@intevation.de>
parents:
1336
diff
changeset
|
94 return null; |
647
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
95 } |
4da01934e46f
Added new validation rules for messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
96 } |