changeset 1127:997899aba991

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.
author Tom Gottfried <tom@intevation.de>
date Mon, 31 Oct 2016 18:25:02 +0100
parents 70b51893f15b
children 830a47aeb15d
files src/main/java/de/intevation/lada/importer/laf/LafObjectMapper.java
diffstat 1 files changed, 32 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- 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);
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)