annotate src/main/java/de/intevation/lada/validation/rules/ort/CoordinatesInVE.java @ 1028:1c41c7b8f7c2 schema-update

Updated server application to new database model. THIS IS STILL WIP!!!
author Raimund Renkert <raimund.renkert@intevation.de>
date Fri, 08 Jul 2016 15:32:36 +0200
parents 092e673cbb8d
children 289edf060550
rev   line source
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
1 /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
2 * Software engineering by Intevation GmbH
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
3 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
4 * This file is Free Software under the GNU GPL (v>=3)
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
6 * the documentation coming with IMIS-Labordaten-Application for details.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
7 */
652
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
8 package de.intevation.lada.validation.rules.ort;
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
9
677
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
10 import java.util.List;
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 javax.inject.Inject;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
13
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
14 import com.vividsolutions.jts.geom.Coordinate;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
15 import com.vividsolutions.jts.geom.GeometryFactory;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
16 import com.vividsolutions.jts.geom.Point;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
17 import com.vividsolutions.jts.geom.PrecisionModel;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
18
1028
1c41c7b8f7c2 Updated server application to new database model. THIS IS STILL WIP!!!
Raimund Renkert <raimund.renkert@intevation.de>
parents: 810
diff changeset
19 import de.intevation.lada.model.land.Ortszuordnung;
1c41c7b8f7c2 Updated server application to new database model. THIS IS STILL WIP!!!
Raimund Renkert <raimund.renkert@intevation.de>
parents: 810
diff changeset
20 import de.intevation.lada.model.stammdaten.DeVg;
1c41c7b8f7c2 Updated server application to new database model. THIS IS STILL WIP!!!
Raimund Renkert <raimund.renkert@intevation.de>
parents: 810
diff changeset
21 import de.intevation.lada.model.stammdaten.Ort;
1c41c7b8f7c2 Updated server application to new database model. THIS IS STILL WIP!!!
Raimund Renkert <raimund.renkert@intevation.de>
parents: 810
diff changeset
22 import de.intevation.lada.model.stammdaten.Verwaltungseinheit;
677
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
23 import de.intevation.lada.util.annotation.RepositoryConfig;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
24 import de.intevation.lada.util.data.QueryBuilder;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
25 import de.intevation.lada.util.data.Repository;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
26 import de.intevation.lada.util.data.RepositoryType;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
27 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
28 import de.intevation.lada.validation.Violation;
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
29 import de.intevation.lada.validation.annotation.ValidationRule;
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
30 import de.intevation.lada.validation.rules.Rule;
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
31
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
32 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
33 * Validation rule for ort.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
34 * Validates if the coordinates are in the specified "Verwaltungseinheit".
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
35 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
36 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a>
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
37 */
652
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
38 @ValidationRule("Ort")
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
39 public class CoordinatesInVE implements Rule {
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
40
677
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
41 @Inject
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
42 @RepositoryConfig(type=RepositoryType.RO)
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
43 private Repository repository;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
44
685
3118fbbe6292 Fixed or supressed warnings.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 677
diff changeset
45 @SuppressWarnings("unchecked")
652
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
46 @Override
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
47 public Violation execute(Object object) {
1028
1c41c7b8f7c2 Updated server application to new database model. THIS IS STILL WIP!!!
Raimund Renkert <raimund.renkert@intevation.de>
parents: 810
diff changeset
48 Ortszuordnung ort = (Ortszuordnung)object;
810
092e673cbb8d Added and updated model, services, etc for to fit the new db schema.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 711
diff changeset
49 if (!"E".equals(ort.getOrtszuordnungTyp())) {
677
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
50 return null;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
51 }
810
092e673cbb8d Added and updated model, services, etc for to fit the new db schema.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 711
diff changeset
52 QueryBuilder<Ort> ortBuilder =
092e673cbb8d Added and updated model, services, etc for to fit the new db schema.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 711
diff changeset
53 new QueryBuilder<Ort>(repository.entityManager("stamm"), Ort.class);
092e673cbb8d Added and updated model, services, etc for to fit the new db schema.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 711
diff changeset
54 ortBuilder.and("id", ort.getOrtId());
677
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
55 Response response = repository.filter(ortBuilder.getQuery(), "stamm");
810
092e673cbb8d Added and updated model, services, etc for to fit the new db schema.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 711
diff changeset
56 List<Ort> orte = (List<Ort>)response.getData();
677
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
57 QueryBuilder<Verwaltungseinheit> veBuilder =
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
58 new QueryBuilder<Verwaltungseinheit>(
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
59 repository.entityManager("stamm"), Verwaltungseinheit.class);
810
092e673cbb8d Added and updated model, services, etc for to fit the new db schema.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 711
diff changeset
60 veBuilder.and("id", orte.get(0).getGemId());
677
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
61 Response ver = repository.filter(veBuilder.getQuery(), "stamm");
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
62 if (((List<Verwaltungseinheit>)ver.getData()).isEmpty()) {
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
63 Violation violation = new Violation();
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
64 violation.addWarning("verwaltungseinheit", 653);
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
65 return violation;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
66 }
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
67 Verwaltungseinheit ve = ((List<Verwaltungseinheit>)ver.getData()).get(0);
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
68 QueryBuilder<DeVg> vg =
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
69 new QueryBuilder<DeVg>(repository.entityManager("stamm"), DeVg.class);
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
70 vg.and("ags", ve.getId());
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
71 Response rvg = repository.filter(vg.getQuery(), "stamm");
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
72 List<DeVg> vgs = (List<DeVg>)rvg.getData();
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
73 if (vgs == null || vgs.isEmpty()) {
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
74 Violation violation = new Violation();
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
75 violation.addWarning("verwaltungseinheit", 653);
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
76 return violation;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
77 }
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
78 double y = orte.get(0).getLatitude();
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
79 double x = orte.get(0).getLongitude();
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
80 Coordinate c = new Coordinate(x, y);
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
81 GeometryFactory gf = new GeometryFactory(new PrecisionModel(PrecisionModel.FLOATING), 4326);
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
82 Point p = gf.createPoint(c);
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
83 boolean hit = false;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
84 for (DeVg singlevg : vgs) {
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
85 if(singlevg.getGeom().contains(p)) {
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
86 hit = true;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
87 }
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
88 }
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
89 if (!hit) {
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
90 Violation violation = new Violation();
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
91 violation.addWarning("verwaltungseinheit", 651);
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
92 return violation;
de47b7193bdb Fixed validation rules.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 652
diff changeset
93 }
652
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
94 return null;
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
95 }
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
96
881da3d5377b Added empty validation rules for ort objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
97 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)