annotate src/main/java/de/intevation/lada/validation/rules/probe/DeskriptorToUmwelt.java @ 712:f02862b1862d

Fixed NPE in probe validation rule.
author Raimund Renkert <raimund.renkert@intevation.de>
date Wed, 22 Jul 2015 16:03:33 +0200
parents 3ec358698b4d
children d9cc4b8337be
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.ArrayList;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
11 import java.util.List;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
12
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
13 import javax.inject.Inject;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
14
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
15 import de.intevation.lada.model.land.LProbe;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
16 import de.intevation.lada.model.stamm.DeskriptorUmwelt;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
17 import de.intevation.lada.model.stamm.Deskriptoren;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
18 import de.intevation.lada.util.annotation.RepositoryConfig;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
19 import de.intevation.lada.util.data.QueryBuilder;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
20 import de.intevation.lada.util.data.Repository;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
21 import de.intevation.lada.util.data.RepositoryType;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
22 import de.intevation.lada.util.rest.Response;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
23 import de.intevation.lada.validation.Violation;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
24 import de.intevation.lada.validation.annotation.ValidationRule;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
25 import de.intevation.lada.validation.rules.Rule;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
26
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 701
diff changeset
27 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 701
diff changeset
28 * Validation rule for probe.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 701
diff changeset
29 * Validates if the umwelt id fits the deskriptor string.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 701
diff changeset
30 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 701
diff changeset
31 * @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
32 */
661
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
33 @ValidationRule("Probe")
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
34 public class DeskriptorToUmwelt implements Rule {
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
35
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
36 @Inject
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
37 @RepositoryConfig(type=RepositoryType.RO)
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
38 private Repository repository;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
39
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
40 @Override
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
41 public Violation execute(Object object) {
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
42 LProbe probe = (LProbe)object;
701
cb344bc264d9 Fixed deskriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 692
diff changeset
43 if (probe.getMediaDesk() == null || probe.getMediaDesk().equals("")) {
cb344bc264d9 Fixed deskriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 692
diff changeset
44 return null;
cb344bc264d9 Fixed deskriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 692
diff changeset
45 }
712
f02862b1862d Fixed NPE in probe validation rule.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 711
diff changeset
46 if (probe.getUmwId() == null) {
f02862b1862d Fixed NPE in probe validation rule.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 711
diff changeset
47 return null;
f02862b1862d Fixed NPE in probe validation rule.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 711
diff changeset
48 }
661
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
49 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
50 if (mediaDesk.length <= 1) {
0002475bc23d Fixed Index out of Bounds exception in validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 661
diff changeset
51 return null;
0002475bc23d Fixed Index out of Bounds exception in validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 661
diff changeset
52 }
661
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
53 List<Integer> mediaIds = new ArrayList<Integer>();
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
54 boolean zebs = false;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
55 Integer parent = null;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
56 Integer hdParent = null;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
57 Integer ndParent = null;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
58 if ("01".equals(mediaDesk[1])) {
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
59 zebs = true;
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 for (int i = 1; i < mediaDesk.length; i++) {
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
62 if ("00".equals(mediaDesk[i])) {
692
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
63 mediaIds.add(-1);
661
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
64 continue;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
65 }
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
66 if (zebs && i < 5) {
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
67 parent = hdParent;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
68 }
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
69 else if (!zebs && i < 3) {
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
70 parent = hdParent;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
71 }
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
72 else {
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
73 parent = ndParent;
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 QueryBuilder<Deskriptoren> builder = new QueryBuilder<Deskriptoren>(
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
76 repository.entityManager("stamm"), Deskriptoren.class);
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
77 if (parent != null) {
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
78 builder.and("vorgaenger", parent);
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
79 }
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
80 builder.and("sn", mediaDesk[i]);
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
81 builder.and("ebene", i - 1);
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
82 Response response = repository.filter(builder.getQuery(), "stamm");
685
3118fbbe6292 Fixed or supressed warnings.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 664
diff changeset
83 @SuppressWarnings("unchecked")
661
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
84 List<Deskriptoren> data = (List<Deskriptoren>)response.getData();
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
85 if (data.isEmpty()) {
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
86 Violation violation = new Violation();
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
87 violation.addWarning("mediaDesk", 633);
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
88 return violation;
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 hdParent = data.get(0).getId();
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
91 mediaIds.add(data.get(0).getId());
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
92 if (i == 2) {
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
93 ndParent = data.get(0).getId();
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
94 }
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
95 }
692
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
96 Violation violation = validateUmwelt(mediaIds, probe.getUmwId(), zebs, 0);
661
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
97 return violation;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
98 }
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
99
692
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
100 private Violation validateUmwelt(List<Integer> media, String umwId, boolean isZebs, int ndx) {
661
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
101 QueryBuilder<DeskriptorUmwelt> builder =
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
102 new QueryBuilder<DeskriptorUmwelt>(
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
103 repository.entityManager("stamm"), DeskriptorUmwelt.class);
692
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
104
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
105 if (media.size() == 0) {
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
106 Violation violation = new Violation();
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
107 violation.addWarning("umwId", 632);
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
108 return violation;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
109 }
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
110
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
111 int size = 1;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
112 if (isZebs) {
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
113 size = 2;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
114 }
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
115 for (int i = size; i >= 0; i--) {
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
116 if (media.get(i) == -1) {
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
117 continue;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
118 }
661
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
119 String field = "s" + (i > 9 ? i : "0" + i);
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
120 builder.and(field, media.get(i));
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
121 }
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
122 Response response = repository.filter(builder.getQuery(), "stamm");
685
3118fbbe6292 Fixed or supressed warnings.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 664
diff changeset
123 @SuppressWarnings("unchecked")
661
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
124 List<DeskriptorUmwelt> data = (List<DeskriptorUmwelt>)response.getData();
692
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
125 if (data.isEmpty()) {
661
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
126 Violation violation = new Violation();
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
127 violation.addWarning("umwId", 632);
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
128 return violation;
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
129 }
692
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
130
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
131 boolean unique = isUnique(data);
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
132 if (unique && umwId.equals(data.get(0).getUmwId())) {
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
133 return null;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
134 }
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
135 else if (unique && !umwId.equals(data.get(0).getUmwId())) {
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
136 Violation violation = new Violation();
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
137 violation.addWarning("umwId", 632);
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
138 return violation;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
139 }
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
140 else {
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
141 Violation violation = new Violation();
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
142 violation.addWarning("umwId", 632);
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
143 boolean found = false;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
144 for (int i = 0; i < data.size(); i++) {
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
145 if (!data.get(i).getUmwId().equals(umwId)) {
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
146 continue;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
147 }
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
148 for (int j = size + 1; j < 13; j++) {
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
149 switch(j) {
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
150 case 2: if (data.get(i).getS02() == null ||
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
151 data.get(i).getS02().equals(media.get(2)))
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
152 found = true;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
153 else
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
154 found = false;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
155 break;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
156 case 3: if (data.get(i).getS03() == null ||
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
157 data.get(i).getS03().equals(media.get(3)))
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
158 found = true;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
159 else
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
160 found = false;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
161 break;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
162 case 4: if (data.get(i).getS04() == null ||
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
163 data.get(i).getS04().equals(media.get(4)))
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
164 found = true;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
165 else
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
166 found = false;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
167 break;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
168 case 5: if (data.get(i).getS05() == null ||
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
169 data.get(i).getS05().equals(media.get(5)))
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
170 found = true;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
171 else
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
172 found = false;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
173 break;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
174 case 6: if (data.get(i).getS06() == null ||
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
175 data.get(i).getS06().equals(media.get(6)))
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
176 found = true;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
177 else
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
178 found = false;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
179 break;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
180 case 7: if (data.get(i).getS07() == null ||
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
181 data.get(i).getS07().equals(media.get(7)))
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
182 found = true;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
183 else
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
184 found = false;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
185 break;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
186 case 8: if (data.get(i).getS08() == null ||
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
187 data.get(i).getS08().equals(media.get(8)))
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
188 found = true;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
189 else
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
190 found = false;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
191 break;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
192 case 9: if (data.get(i).getS09() == null ||
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
193 data.get(i).getS09().equals(media.get(9)))
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
194 found = true;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
195 else
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
196 found = false;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
197 break;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
198 case 10: if (data.get(i).getS10() == null ||
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
199 data.get(i).getS10().equals(media.get(10)))
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
200 found = true;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
201 else
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
202 found = false;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
203 break;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
204 case 11: if (data.get(i).getS11() == null ||
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
205 data.get(i).getS11().equals(media.get(11)))
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
206 found = true;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
207 else
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
208 found = false;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
209 break;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
210 case 12: if (data.get(i).getS12() == null ||
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
211 data.get(i).getS12().equals(media.get(12)))
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
212 found = true;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
213 else
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
214 found = false;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
215 break;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
216 }
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
217 if (found) {
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
218 return null;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
219 }
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
220 }
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
221 }
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
222 return violation;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
223 }
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
224 }
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
225
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
226 private boolean isUnique(List<DeskriptorUmwelt> list) {
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
227 if (list.isEmpty()) {
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
228 return false;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
229 }
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
230 String element = list.get(0).getUmwId();
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
231 for (int i = 1; i < list.size(); i++) {
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
232 if (!element.equals(list.get(i))) {
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
233 return false;
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
234 }
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
235 }
ae33fdecd9e2 Fixed descriptor validation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
236 return true;
661
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
237 }
fa149968e60d Added validation rules for probe deskriptor.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
238 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)