# HG changeset patch # User Tom Gottfried # 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 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); + 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 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); + } + } + // 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 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 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 copyErr = new ArrayList(currentErrors); errors.put(probe.getIdAlt(), copyErr);