changeset 1155:fec7ba34cd1b

Check for errors in probe objects and cancel import writing out the errors.
author Raimund Renkert <raimund.renkert@intevation.de>
date Tue, 08 Nov 2016 10:30:07 +0100
parents 7c3d022a899f
children 07631488e9c0
files src/main/java/de/intevation/lada/importer/laf/LafObjectMapper.java
diffstat 1 files changed, 53 insertions(+), 44 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/de/intevation/lada/importer/laf/LafObjectMapper.java	Tue Nov 08 10:29:17 2016 +0100
+++ b/src/main/java/de/intevation/lada/importer/laf/LafObjectMapper.java	Tue Nov 08 10:30:07 2016 +0100
@@ -153,8 +153,18 @@
             Probe old = (Probe)probeIdentifier.getExisting();
             // Matching probe was found in the db. Update it!
             if(i == Identified.UPDATE) {
-                merger.merge(old, probe);
-                newProbe = old;
+                Violation violation = probeValidator.validate(probe);
+                if (violation.hasErrors()) {
+                    for (Entry<String, List<Integer>> err : violation.getErrors().entrySet()) {
+                        for (Integer code : err.getValue()) {
+                            currentErrors.add(new ReportItem("validation", err.getKey(), code));
+                        }
+                    }
+                }
+                else {
+                    merger.merge(old, probe);
+                    newProbe = old;
+                }
             }
             // Probe was found but some data does not match
             else if(i == Identified.REJECT){
@@ -171,7 +181,6 @@
                     warnings.put(object.getIdentifier(),
                         new ArrayList<ReportItem>(currentWarnings));
                 }
-                return;
             }
             // It is a brand new probe!
             else if(i == Identified.NEW){
@@ -182,10 +191,11 @@
                             currentErrors.add(new ReportItem("validation", err.getKey(), code));
                         }
                     }
-                    return;
                 }
-                Response created = repository.create(probe, "land");
-                newProbe = ((Probe)created.getData());
+                else {
+                    Response created = repository.create(probe, "land");
+                    newProbe = ((Probe)created.getData());
+                }
             }
         } catch (InvalidTargetObjectTypeException e) {
             ReportItem err = new ReportItem();
@@ -203,49 +213,48 @@
             }
             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);
-            }
-        }
-        // 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);
+        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 zusatzwert objects
-        merger.mergeZusatzwerte(newProbe, zusatzwerte);
-
-        // Merge entnahmeOrt
-        createEntnahmeOrt(object.getEntnahmeOrt(), newProbe.getId());
+            // Persist kommentar objects
+            merger.mergeKommentare(newProbe, kommentare);
 
-        // Create ursprungsOrte
-        List<Ortszuordnung> uOrte = new ArrayList<Ortszuordnung>();
-        for (int i = 0; i < object.getUrsprungsOrte().size(); i++) {
-            Ortszuordnung tmp = createUrsprungsOrt(object.getUrsprungsOrte().get(i), newProbe.getId());
-            if (tmp != null) {
-                uOrte.add(tmp);
+            // 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 ursprungsOrte
-        merger.mergeUrsprungsOrte(newProbe.getId(), uOrte);
+            // 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());
+            // Merge entnahmeOrt
+            createEntnahmeOrt(object.getEntnahmeOrt(), newProbe.getId());
+
+            // Create ursprungsOrte
+            List<Ortszuordnung> uOrte = new ArrayList<Ortszuordnung>();
+            for (int i = 0; i < object.getUrsprungsOrte().size(); i++) {
+                Ortszuordnung tmp = createUrsprungsOrt(object.getUrsprungsOrte().get(i), newProbe.getId());
+                if (tmp != null) {
+                    uOrte.add(tmp);
+                }
+            }
+            // Persist ursprungsOrte
+            merger.mergeUrsprungsOrte(newProbe.getId(), uOrte);
+
+            // Create messung objects
+            for (int i = 0; i < object.getMessungen().size(); i++) {
+                create(object.getMessungen().get(i), newProbe.getId(), newProbe.getMstId());
+            }
         }
         Violation violation = probeValidator.validate(newProbe);
         for (Entry<String, List<Integer>> warn : violation.getWarnings().entrySet()) {
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)