annotate src/main/java/de/intevation/lada/validation/rules/probe/Deskriptor.java @ 711:3ec358698b4d

Code style and documentation.
author Raimund Renkert <raimund.renkert@intevation.de>
date Wed, 22 Jul 2015 16:03:03 +0200
parents cb344bc264d9
children 1c41c7b8f7c2
rev   line source
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 701
diff changeset
1 /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 701
diff changeset
2 * Software engineering by Intevation GmbH
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 701
diff changeset
3 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 701
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: 701
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 701
diff changeset
6 * the documentation coming with IMIS-Labordaten-Application for details.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 701
diff changeset
7 */
661
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
8 package de.intevation.lada.validation.rules.probe;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
9
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
10 import java.util.List;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
11
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
12 import javax.inject.Inject;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
13
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
14 import de.intevation.lada.model.land.LProbe;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
15 import de.intevation.lada.model.stamm.Deskriptoren;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
16 import de.intevation.lada.util.annotation.RepositoryConfig;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
17 import de.intevation.lada.util.data.QueryBuilder;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
18 import de.intevation.lada.util.data.Repository;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
19 import de.intevation.lada.util.data.RepositoryType;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
20 import de.intevation.lada.util.rest.Response;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
21 import de.intevation.lada.validation.Violation;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
22 import de.intevation.lada.validation.annotation.ValidationRule;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
23 import de.intevation.lada.validation.rules.Rule;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
24
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 701
diff changeset
25 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 701
diff changeset
26 * Validation rule for probe.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 701
diff changeset
27 * Validates if the probe has a valid deskriptor string.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 701
diff changeset
28 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 701
diff changeset
29 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a>
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 701
diff changeset
30 */
661
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
31 @ValidationRule("Probe")
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
32 public class Deskriptor implements Rule {
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
33
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
34 @Inject
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
35 @RepositoryConfig(type=RepositoryType.RO)
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
36 private Repository repository;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
37
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
38 @Override
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
39 public Violation execute(Object object) {
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
40 LProbe probe = (LProbe)object;
701
cb344bc264d9 Fixed deskriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
41 if (probe.getMediaDesk() == null || probe.getMediaDesk().equals("")) {
cb344bc264d9 Fixed deskriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
42 return null;
cb344bc264d9 Fixed deskriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
43 }
661
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
44 String[] mediaDesk = probe.getMediaDesk().split(" ");
664
0002475bc23d Fixed Index out of Bounds exception in validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 661
diff changeset
45 if (mediaDesk.length <= 1) {
0002475bc23d Fixed Index out of Bounds exception in validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 661
diff changeset
46 Violation violation = new Violation();
0002475bc23d Fixed Index out of Bounds exception in validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 661
diff changeset
47 violation.addWarning("mediaDesk", 631);
0002475bc23d Fixed Index out of Bounds exception in validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 661
diff changeset
48 return violation;
0002475bc23d Fixed Index out of Bounds exception in validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 661
diff changeset
49 }
661
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
50 boolean zebs = false;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
51 Integer parent = null;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
52 Integer hdParent = null;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
53 Integer ndParent = null;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
54 if ("01".equals(mediaDesk[1])) {
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
55 zebs = true;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
56 }
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
57 for (int i = 1; i < mediaDesk.length; i++) {
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
58 if ("00".equals(mediaDesk[i])) {
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
59 continue;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
60 }
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
61 if (zebs && i < 5) {
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
62 parent = hdParent;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
63 }
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
64 else if (!zebs && i < 3) {
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
65 parent = hdParent;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
66 }
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
67 else {
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
68 parent = ndParent;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
69 }
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
70 QueryBuilder<Deskriptoren> builder = new QueryBuilder<Deskriptoren>(
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
71 repository.entityManager("stamm"), Deskriptoren.class);
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
72 if (parent != null) {
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
73 builder.and("vorgaenger", parent);
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
74 }
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
75 builder.and("sn", mediaDesk[i]);
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
76 builder.and("ebene", i - 1);
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
77 Response response = repository.filter(builder.getQuery(), "stamm");
685
3118fbbe6292 Fixed or supressed warnings.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 664
diff changeset
78 @SuppressWarnings("unchecked")
661
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
79 List<Deskriptoren> data = (List<Deskriptoren>)response.getData();
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
80 if (data.isEmpty()) {
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
81 Violation violation = new Violation();
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
82 violation.addWarning("mediaDesk", 633);
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
83 return violation;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
84 }
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
85 hdParent = data.get(0).getId();
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
86 if (i == 2) {
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
87 ndParent = data.get(0).getId();
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
88 }
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
89 }
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
90 return null;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
91 }
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
92 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)