annotate src/main/java/de/intevation/lada/validation/rules/ortszuordnung/HasEntnahmeOrt.java @ 1285:b0f73f864486

Updated validation rules to allow messprogramm ortszuordnungen.
author Raimund Renkert <raimund.renkert@intevation.de>
date Wed, 08 Feb 2017 09:12:17 +0100
parents 201cc62a1c57
children
rev   line source
1165
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
3 *
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU GPL (v>=3)
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
6 * the documentation coming with IMIS-Labordaten-Application for details.
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
7 */
1230
f48be4a5c6a0 Correct package.
Tom Gottfried <tom@intevation.de>
parents: 1224
diff changeset
8 package de.intevation.lada.validation.rules.ortszuordnung;
1165
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
9
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
10 import java.util.List;
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
11
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
12 import javax.inject.Inject;
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
13
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
14 import de.intevation.lada.model.land.Ortszuordnung;
1285
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
15 import de.intevation.lada.model.land.OrtszuordnungMp;
1165
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
16 import de.intevation.lada.util.annotation.RepositoryConfig;
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
17 import de.intevation.lada.util.data.QueryBuilder;
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
18 import de.intevation.lada.util.data.Repository;
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
19 import de.intevation.lada.util.data.RepositoryType;
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
20 import de.intevation.lada.validation.Violation;
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
21 import de.intevation.lada.validation.annotation.ValidationRule;
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
22 import de.intevation.lada.validation.rules.Rule;
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
23
1224
73ad827faa81 Rename validation of Ortszuordnung.
Tom Gottfried <tom@intevation.de>
parents: 1167
diff changeset
24 @ValidationRule("Ortszuordnung")
1165
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
25 public class HasEntnahmeOrt implements Rule {
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
26
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
27 @Inject
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
28 @RepositoryConfig(type=RepositoryType.RO)
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
29 private Repository repository;
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
30
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
31 @Override
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
32 public Violation execute(Object object) {
1285
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
33 Integer id = null;
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
34 if (object instanceof Ortszuordnung) {
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
35 Ortszuordnung ort = (Ortszuordnung)object;
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
36 if (!"E".equals(ort.getOrtszuordnungTyp())) {
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
37 return null;
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
38 }
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
39 id = ort.getProbeId();
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
40 QueryBuilder<Ortszuordnung> builder = new QueryBuilder<Ortszuordnung>(
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
41 repository.entityManager("land"),
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
42 Ortszuordnung.class);
1165
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
43
1285
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
44 builder.and("probeId", id);
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
45 List<Ortszuordnung> orte = repository.filterPlain(
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
46 builder.getQuery(),
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
47 "land");
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
48 for (Ortszuordnung o : orte) {
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
49 if ("E".equals(o.getOrtszuordnungTyp()) &&
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
50 !o.getId().equals(ort.getId())
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
51 ) {
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
52 Violation violation = new Violation();
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
53 violation.addError("ortszuordnungTyp", 611);
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
54 return violation;
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
55 }
1165
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
56 }
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
57 }
1285
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
58 else if (object instanceof OrtszuordnungMp) {
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
59 OrtszuordnungMp ort = (OrtszuordnungMp)object;
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
60 if (!"E".equals(ort.getOrtszuordnungTyp())) {
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
61 return null;
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
62 }
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
63 id = ort.getMessprogrammId();
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
64 QueryBuilder<OrtszuordnungMp> builder = new QueryBuilder<OrtszuordnungMp>(
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
65 repository.entityManager("land"),
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
66 OrtszuordnungMp.class);
1165
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
67
1285
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
68 builder.and("messprogrammId", id);
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
69 List<OrtszuordnungMp> orte = repository.filterPlain(
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
70 builder.getQuery(),
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
71 "land");
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
72 for (OrtszuordnungMp o : orte) {
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
73 if ("E".equals(o.getOrtszuordnungTyp()) &&
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
74 !o.getId().equals(ort.getId())
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
75 ) {
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
76 Violation violation = new Violation();
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
77 violation.addError("ortszuordnungTyp", 611);
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
78 return violation;
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
79 }
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
80 }
b0f73f864486 Updated validation rules to allow messprogramm ortszuordnungen.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1260
diff changeset
81 }
1165
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
82 return null;
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
83 }
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
84 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)