Mercurial > lada > lada-server
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()) {