# HG changeset patch # User Raimund Renkert # Date 1478597407 -3600 # Node ID fec7ba34cd1b0a614d003ff5648c647749e1d0c9 # Parent 7c3d022a899f9cf7f5e6fa7ec82f74dc1fdc9ef8 Check for errors in probe objects and cancel import writing out the errors. diff -r 7c3d022a899f -r fec7ba34cd1b src/main/java/de/intevation/lada/importer/laf/LafObjectMapper.java --- 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> 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(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 kommentare = new ArrayList(); - 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 zusatzwerte = new ArrayList(); - 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 kommentare = new ArrayList(); + 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 uOrte = new ArrayList(); - 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 zusatzwerte = new ArrayList(); + 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 uOrte = new ArrayList(); + 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> warn : violation.getWarnings().entrySet()) {