Mercurial > lada > lada-server
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 } |