comparison src/main/java/de/intevation/lada/validation/rules/ort/CoordinatesInVE.java @ 1251:3d0d401b9d9a

Its actually an property of an Ort that is validated here. The validation occured only in case the Ort had been associated to a Probe object. Now it occurs on creation or update of an Ort.
author Tom Gottfried <tom@intevation.de>
date Fri, 16 Dec 2016 16:23:32 +0100
parents src/main/java/de/intevation/lada/validation/rules/ortszuordnung/CoordinatesInVE.java@73ad827faa81
children bbfb7c3b5dd8
comparison
equal deleted inserted replaced
1250:75692dc7077f 1251:3d0d401b9d9a
1 /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz
2 * Software engineering by Intevation GmbH
3 *
4 * This file is Free Software under the GNU GPL (v>=3)
5 * and comes with ABSOLUTELY NO WARRANTY! Check out
6 * the documentation coming with IMIS-Labordaten-Application for details.
7 */
8 package de.intevation.lada.validation.rules.ort;
9
10 import java.util.List;
11
12 import javax.inject.Inject;
13
14 import com.vividsolutions.jts.geom.Point;
15
16 import org.apache.log4j.Logger;
17
18 import de.intevation.lada.model.stammdaten.Ort;
19 import de.intevation.lada.model.stammdaten.Verwaltungseinheit;
20 import de.intevation.lada.model.stammdaten.Verwaltungsgrenze;
21 import de.intevation.lada.util.annotation.RepositoryConfig;
22 import de.intevation.lada.util.data.QueryBuilder;
23 import de.intevation.lada.util.data.Repository;
24 import de.intevation.lada.util.data.RepositoryType;
25 import de.intevation.lada.validation.Violation;
26 import de.intevation.lada.validation.annotation.ValidationRule;
27 import de.intevation.lada.validation.rules.Rule;
28
29 /**
30 * Validation rule for ort.
31 * Validates if the coordinates are in the specified "Verwaltungseinheit".
32 *
33 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a>
34 */
35 @ValidationRule("Ort")
36 public class CoordinatesInVE implements Rule {
37
38 @Inject
39 private Logger logger;
40
41 @Inject
42 @RepositoryConfig(type=RepositoryType.RO)
43 private Repository repository;
44
45 @SuppressWarnings("unchecked")
46 @Override
47 public Violation execute(Object object) {
48 Ort ort = (Ort)object;
49
50 String gemId = "".equals(ort.getGemId())
51 ? null
52 : ort.getGemId();
53
54 if (gemId != null) {
55
56 QueryBuilder<Verwaltungsgrenze> vg =
57 new QueryBuilder<Verwaltungsgrenze>(
58 repository.entityManager("stamm"),
59 Verwaltungsgrenze.class);
60 vg.and("gemId", gemId);
61 List<Verwaltungsgrenze> vgs = repository.filterPlain(
62 vg.getQuery(), "stamm");
63 if (vgs == null || vgs.isEmpty()) {
64 Violation violation = new Violation();
65 violation.addWarning("verwaltungsgrenze", 600);
66 return violation;
67 }
68
69 Point p = ort.getGeom();
70 if (p == null) {
71 logger.error("geom is null. "
72 + "Probably OrtFactory.transformCoordinates() has not "
73 + "been called on this ort.");
74 }
75 for (Verwaltungsgrenze singlevg : vgs) {
76 if(singlevg.getShape().contains(p)) {
77 return null;
78 }
79 }
80 Violation violation = new Violation();
81 violation.addWarning("verwaltungsgrenze", 651);
82 return violation;
83 }
84
85 return null;
86 }
87
88 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)