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