[Lada-commits] [PATCH] Do not try to persist Probe objects with validation errors

Wald Commits scm-commit at wald.intevation.org
Mon Oct 31 18:26:53 CET 2016


# HG changeset patch
# User Tom Gottfried <tom at intevation.de>
# Date 1477934702 -3600
# Node ID 997899aba9918ed45ca4843c851b1d903fca3950
# Parent  70b51893f15bc9a4e6afafbd7f0c5736ab78ca24
Do not try to persist Probe objects with validation errors.

Validation errors are often in line with database constraints and
thus trying to persist will result in an Internal Server Error.

diff -r 70b51893f15b -r 997899aba991 src/main/java/de/intevation/lada/importer/laf/LafObjectMapper.java
--- a/src/main/java/de/intevation/lada/importer/laf/LafObjectMapper.java	Mon Oct 31 18:09:45 2016 +0100
+++ b/src/main/java/de/intevation/lada/importer/laf/LafObjectMapper.java	Mon Oct 31 18:25:02 2016 +0100
@@ -184,8 +184,10 @@
                         currentWarnings.add(new ReportItem("validation", warn.getKey(), code));
                     }
                 }
-                Response created = repository.create(probe, "land");
-                newProbe = ((Probe)created.getData());
+                if (!violation.hasErrors()) {
+                    Response created = repository.create(probe, "land");
+                    newProbe = ((Probe)created.getData());
+                }
             }
         } catch (InvalidTargetObjectTypeException e) {
             ReportItem err = new ReportItem();
@@ -203,36 +205,37 @@
             }
             return;
         }
-        if (newProbe == null) {
-            // Only occurs if object type is not probe
-            return;
-        }
-        // Create kommentar objects
-        List<KommentarP> kommentare = new ArrayList<KommentarP>();
-        for (int i = 0; i < object.getKommentare().size(); i++) {
-            KommentarP tmp = createProbeKommentar(object.getKommentare().get(i), newProbe.getId());
-            if (tmp != null) {
-                kommentare.add(tmp);
+        if (newProbe != null) {
+            // Create kommentar objects
+            List<KommentarP> kommentare = new ArrayList<KommentarP>();
+            for (int i = 0; i < object.getKommentare().size(); i++) {
+                KommentarP tmp = createProbeKommentar(
+                    object.getKommentare().get(i), newProbe.getId());
+                if (tmp != null) {
+                    kommentare.add(tmp);
+                }
+            }
+            // Persist kommentar objects
+            merger.mergeKommentare(newProbe, kommentare);
+
+            // Create zusatzwert objects
+            List<ZusatzWert> zusatzwerte = new ArrayList<ZusatzWert>();
+            for (int i = 0; i < object.getZusatzwerte().size(); i++) {
+                ZusatzWert tmp = createZusatzwert(
+                    object.getZusatzwerte().get(i), newProbe.getId());
+                if (tmp != null) {
+                    zusatzwerte.add(tmp);
+                }
+            }
+            // Persist zusatzwert objects
+            merger.mergeZusatzwerte(newProbe, zusatzwerte);
+
+            // Create messung objects
+            for (LafRawData.Messung messung : object.getMessungen()) {
+                create(messung, newProbe.getId(), newProbe.getMstId());
             }
         }
-        // Persist kommentar objects
-        merger.mergeKommentare(newProbe, kommentare);
 
-        // Create zusatzwert objects
-        List<ZusatzWert> zusatzwerte = new ArrayList<ZusatzWert>();
-        for (int i = 0; i < object.getZusatzwerte().size(); i++) {
-            ZusatzWert tmp = createZusatzwert(object.getZusatzwerte().get(i), newProbe.getId());
-            if (tmp != null) {
-                zusatzwerte.add(tmp);
-            }
-        }
-        // Persist zusatzwert objects
-        merger.mergeZusatzwerte(newProbe, zusatzwerte);
-
-        // Create messung objects
-        for (int i = 0; i < object.getMessungen().size(); i++) {
-            create(object.getMessungen().get(i), newProbe.getId(), newProbe.getMstId());
-        }
         if (currentErrors.size() > 0) {
             List<ReportItem> copyErr = new ArrayList<ReportItem>(currentErrors);
             errors.put(probe.getIdAlt(), copyErr);


More information about the Lada-commits mailing list