[Lada-commits] [PATCH 2 of 4] Fixed descriptor validation

Wald Commits scm-commit at wald.intevation.org
Wed Jul 8 09:42:31 CEST 2015


# HG changeset patch
# User Raimund Renkert <raimund.renkert at intevation.de>
# Date 1436263126 -7200
# Node ID ae33fdecd9e2d5452c16cdc2cdf7065c5ebfdb56
# Parent  46bb231ff9b9e0256520287a1fe00bd0be24d196
Fixed descriptor validation.

diff -r 46bb231ff9b9 -r ae33fdecd9e2 src/main/java/de/intevation/lada/validation/rules/probe/DeskriptorToUmwelt.java
--- a/src/main/java/de/intevation/lada/validation/rules/probe/DeskriptorToUmwelt.java	Tue Jul 07 11:56:36 2015 +0200
+++ b/src/main/java/de/intevation/lada/validation/rules/probe/DeskriptorToUmwelt.java	Tue Jul 07 11:58:46 2015 +0200
@@ -41,6 +41,7 @@
         }
         for (int i = 1; i < mediaDesk.length; i++) {
             if ("00".equals(mediaDesk[i])) {
+                mediaIds.add(-1);
                 continue;
             }
             if (zebs && i < 5) {
@@ -73,26 +74,146 @@
                 ndParent = data.get(0).getId();
             }
         }
-        Violation violation = validateUmwelt(mediaIds, probe);
+        Violation violation = validateUmwelt(mediaIds, probe.getUmwId(), zebs, 0);
         return violation;
     }
 
-    private Violation validateUmwelt(List<Integer> media, LProbe probe) {
+    private Violation validateUmwelt(List<Integer> media, String umwId, boolean isZebs, int ndx) {
         QueryBuilder<DeskriptorUmwelt> builder =
             new QueryBuilder<DeskriptorUmwelt>(
                 repository.entityManager("stamm"), DeskriptorUmwelt.class);
-        for (int i = media.size() - 1; i > 0; i--) {
+
+        if (media.size() == 0) {
+            Violation violation = new Violation();
+            violation.addWarning("umwId", 632);
+            return violation;
+        }
+
+        int size = 1;
+        if (isZebs) {
+            size = 2;
+        }
+        for (int i = size; i >= 0; i--) {
+            if (media.get(i) == -1) {
+                continue;
+            }
             String field = "s" + (i > 9 ? i : "0" + i);
             builder.and(field, media.get(i));
         }
         Response response = repository.filter(builder.getQuery(), "stamm");
         @SuppressWarnings("unchecked")
         List<DeskriptorUmwelt> data = (List<DeskriptorUmwelt>)response.getData();
-        if (data.isEmpty() || !data.get(0).getUmwId().equals(probe.getUmwId())) {
+        if (data.isEmpty()) {
             Violation violation = new Violation();
             violation.addWarning("umwId", 632);
             return violation;
         }
-        return null;
+
+        boolean unique = isUnique(data);
+        if (unique && umwId.equals(data.get(0).getUmwId())) {
+            return null;
+        }
+        else if (unique && !umwId.equals(data.get(0).getUmwId())) {
+            Violation violation = new Violation();
+            violation.addWarning("umwId", 632);
+            return violation;
+        }
+        else {
+            Violation violation = new Violation();
+            violation.addWarning("umwId", 632);
+            boolean found = false;
+            for (int i = 0; i < data.size(); i++) {
+                if (!data.get(i).getUmwId().equals(umwId)) {
+                    continue;
+                }
+                for (int j = size + 1; j < 13; j++) {
+                    switch(j) {
+                        case 2: if (data.get(i).getS02() == null ||
+                                    data.get(i).getS02().equals(media.get(2)))
+                                    found = true;
+                                else
+                                    found = false;
+                                break;
+                        case 3: if (data.get(i).getS03() == null ||
+                                    data.get(i).getS03().equals(media.get(3)))
+                                    found = true;
+                                else
+                                    found = false;
+                                break;
+                        case 4: if (data.get(i).getS04() == null ||
+                                    data.get(i).getS04().equals(media.get(4)))
+                                    found = true;
+                                else
+                                    found = false;
+                                break;
+                        case 5: if (data.get(i).getS05() == null ||
+                                    data.get(i).getS05().equals(media.get(5)))
+                                    found = true;
+                                else
+                                    found = false;
+                                break;
+                        case 6: if (data.get(i).getS06() == null ||
+                                    data.get(i).getS06().equals(media.get(6)))
+                                    found = true;
+                                else
+                                    found = false;
+                                break;
+                        case 7: if (data.get(i).getS07() == null ||
+                                    data.get(i).getS07().equals(media.get(7)))
+                                    found = true;
+                                else
+                                    found = false;
+                                break;
+                        case 8: if (data.get(i).getS08() == null ||
+                                    data.get(i).getS08().equals(media.get(8)))
+                                    found = true;
+                                else
+                                    found = false;
+                                break;
+                        case 9: if (data.get(i).getS09() == null ||
+                                    data.get(i).getS09().equals(media.get(9)))
+                                    found = true;
+                                else
+                                    found = false;
+                                break;
+                        case 10: if (data.get(i).getS10() == null ||
+                                     data.get(i).getS10().equals(media.get(10)))
+                                    found = true;
+                                else
+                                    found = false;
+                                break;
+                        case 11: if (data.get(i).getS11() == null ||
+                                     data.get(i).getS11().equals(media.get(11)))
+                                    found = true;
+                                else
+                                    found = false;
+                                break;
+                        case 12: if (data.get(i).getS12() == null ||
+                                     data.get(i).getS12().equals(media.get(12)))
+                                    found = true;
+                                else
+                                    found = false;
+                                break;
+                    }
+                    if (found) {
+                        return null;
+                    }
+                }
+            }
+            return violation;
+        }
+    }
+
+    private boolean isUnique(List<DeskriptorUmwelt> list) {
+        if (list.isEmpty()) {
+            return false;
+        }
+        String element = list.get(0).getUmwId();
+        for (int i = 1; i < list.size(); i++) {
+            if (!element.equals(list.get(i))) {
+                return false;
+            }
+        }
+        return true;
     }
 }


More information about the Lada-commits mailing list