annotate src/main/java/de/intevation/lada/validation/rules/ort/CoordinatesInVE.java @ 677:de47b7193bdb

Fixed validation rules.
author Raimund Renkert <raimund.renkert@intevation.de>
date Fri, 22 May 2015 15:15:14 +0200
parents 881da3d5377b
children 3118fbbe6292
rev   line source
652
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
1 package de.intevation.lada.validation.rules.ort;
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
2
677
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
3 import java.util.List;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
4
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
5 import javax.inject.Inject;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
6
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
7 import com.vividsolutions.jts.geom.Coordinate;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
8 import com.vividsolutions.jts.geom.GeometryFactory;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
9 import com.vividsolutions.jts.geom.Point;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
10 import com.vividsolutions.jts.geom.PrecisionModel;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
11
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
12 import de.intevation.lada.model.land.LOrt;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
13 import de.intevation.lada.model.stamm.DeVg;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
14 import de.intevation.lada.model.stamm.SOrt;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
15 import de.intevation.lada.model.stamm.Verwaltungseinheit;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
16 import de.intevation.lada.util.annotation.RepositoryConfig;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
17 import de.intevation.lada.util.data.QueryBuilder;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
18 import de.intevation.lada.util.data.Repository;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
19 import de.intevation.lada.util.data.RepositoryType;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
20 import de.intevation.lada.util.rest.Response;
652
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
21 import de.intevation.lada.validation.Violation;
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
22 import de.intevation.lada.validation.annotation.ValidationRule;
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
23 import de.intevation.lada.validation.rules.Rule;
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
24
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
25 @ValidationRule("Ort")
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
26 public class CoordinatesInVE implements Rule {
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
27
677
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
28 @Inject
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
29 @RepositoryConfig(type=RepositoryType.RO)
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
30 private Repository repository;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
31
652
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
32 @Override
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
33 public Violation execute(Object object) {
677
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
34 LOrt ort = (LOrt)object;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
35 if (!"E".equals(ort.getOrtsTyp())) {
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
36 return null;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
37 }
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
38 QueryBuilder<SOrt> ortBuilder =
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
39 new QueryBuilder<SOrt>(repository.entityManager("stamm"), SOrt.class);
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
40 ortBuilder.and("id", ort.getOrt());
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
41 Response response = repository.filter(ortBuilder.getQuery(), "stamm");
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
42 List<SOrt> orte = (List<SOrt>)response.getData();
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
43 QueryBuilder<Verwaltungseinheit> veBuilder =
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
44 new QueryBuilder<Verwaltungseinheit>(
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
45 repository.entityManager("stamm"), Verwaltungseinheit.class);
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
46 veBuilder.and("id", orte.get(0).getVerwaltungseinheitId());
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
47 Response ver = repository.filter(veBuilder.getQuery(), "stamm");
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
48 if (((List<Verwaltungseinheit>)ver.getData()).isEmpty()) {
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
49 Violation violation = new Violation();
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
50 violation.addWarning("verwaltungseinheit", 653);
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
51 return violation;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
52 }
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
53 Verwaltungseinheit ve = ((List<Verwaltungseinheit>)ver.getData()).get(0);
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
54 QueryBuilder<DeVg> vg =
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
55 new QueryBuilder<DeVg>(repository.entityManager("stamm"), DeVg.class);
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
56 vg.and("ags", ve.getId());
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
57 Response rvg = repository.filter(vg.getQuery(), "stamm");
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
58 List<DeVg> vgs = (List<DeVg>)rvg.getData();
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
59 if (vgs == null || vgs.isEmpty()) {
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
60 Violation violation = new Violation();
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
61 violation.addWarning("verwaltungseinheit", 653);
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
62 return violation;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
63 }
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
64 double y = orte.get(0).getLatitude();
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
65 double x = orte.get(0).getLongitude();
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
66 Coordinate c = new Coordinate(x, y);
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
67 GeometryFactory gf = new GeometryFactory(new PrecisionModel(PrecisionModel.FLOATING), 4326);
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
68 Point p = gf.createPoint(c);
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
69 boolean hit = false;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
70 for (DeVg singlevg : vgs) {
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
71 if(singlevg.getGeom().contains(p)) {
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
72 hit = true;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
73 }
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
74 }
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
75 if (!hit) {
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
76 Violation violation = new Violation();
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
77 violation.addWarning("verwaltungseinheit", 651);
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
78 return violation;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
79 }
652
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
80 return null;
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
81 }
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
82
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
83 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)