annotate src/main/java/de/intevation/lada/validation/rules/ort/HasEntnahmeOrt.java @ 1165:46db98d060ae

Added validation to make sure a probe has only one 'entnahme ort'.
author Raimund Renkert <raimund.renkert@intevation.de>
date Wed, 09 Nov 2016 12:40:42 +0100
parents
children 8295d84fe003
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 */
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
8 package de.intevation.lada.validation.rules.ort;
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;
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
15 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
16 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
17 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
18 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
19 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
20 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
21 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
22
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
23 @ValidationRule("Ort")
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
24 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
25
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
26 @Inject
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
27 @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
28 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
29
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
30 @Override
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
31 public Violation execute(Object object) {
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
32 Ortszuordnung ort = (Ortszuordnung)object;
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
33 if (!"E".equals(ort.getOrtszuordnungTyp())) {
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
34 return null;
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
35 }
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
36
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
37 QueryBuilder<Ortszuordnung> builder = new QueryBuilder<Ortszuordnung>(
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
38 repository.entityManager("land"),
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
39 Ortszuordnung.class);
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
40 builder.and("probeId", ort.getProbeId());
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
41 List<Ortszuordnung> orte = repository.filterPlain(
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
42 builder.getQuery(),
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
43 "land");
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
44 for (Ortszuordnung o : orte) {
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
45 if ("E".equals(o.getOrtszuordnungTyp())) {
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
46 Violation violation = new Violation();
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
47 violation.addError("ortszuordnungsTyp", 611);
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
48 return violation;
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
49 }
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
50 }
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
51
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
52 return null;
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
53 }
46db98d060ae Added validation to make sure a probe has only one 'entnahme ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
54 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)