# HG changeset patch # User Raimund Renkert # Date 1389624426 -3600 # Node ID 146b2dfd7ddfad7cf37629d65e738f3246bf0600 # Parent c63281230bc372f8e3858aa2450ec774113a6976# Parent b6fcf49d75d5b352dc0832e99466476d9fac9d4a merged. diff -r b6fcf49d75d5 -r 146b2dfd7ddf src/main/java/de/intevation/lada/data/importer/LAFParser.java --- a/src/main/java/de/intevation/lada/data/importer/LAFParser.java Wed Jan 08 16:45:19 2014 +0100 +++ b/src/main/java/de/intevation/lada/data/importer/LAFParser.java Mon Jan 13 15:47:06 2014 +0100 @@ -9,6 +9,12 @@ import javax.inject.Named; import de.intevation.lada.auth.AuthenticationResponse; +import de.intevation.lada.model.LMessung; +import de.intevation.lada.model.LMesswert; +import de.intevation.lada.model.LOrt; +import de.intevation.lada.model.LProbe; +import de.intevation.lada.validation.ValidationException; +import de.intevation.lada.validation.Validator; /** * This parser is used to read data in LAF based key-value pair structure. @@ -29,6 +35,19 @@ @Named("lafwriter") private Writer writer; + @Inject + @Named("lprobevalidator") + private Validator probeValidator; + @Inject + @Named("lmessungvalidator") + private Validator messungValidator; + @Inject + @Named("lmesswertvalidator") + private Validator messwertValidator; + @Inject + @Named("lortvalidator") + private Validator ortValidator; + private Map> warnings; private Map> errors; @@ -128,7 +147,6 @@ boolean p = writer.writeProbe(auth, producer.getProbe()); if (!p) { this.errors.put(probeId, writer.getErrors()); - this.warnings.put(probeId, writer.getWarnings()); return; } writer.writeProbenKommentare(auth, producer.getProbenKommentare()); @@ -140,20 +158,156 @@ writer.writeLOrte(auth, producer.getLOrte()); writer.writeMessungKommentare(auth, producer.getMessungsKommentare()); writer.writeMesswerte(auth, producer.getMesswerte()); - List err = this.errors.get(probeId); - if (err == null) { - this.errors.put(probeId, writer.getErrors()); - } - else { - err.addAll(writer.getErrors()); + this.validateProbe(producer.getProbe()); + this.validateMessungen(producer.getMessungen()); + this.validateMesswerte(producer.getMesswerte()); + this.validateLOrte(producer.getLOrte()); + } + + private boolean validateProbe(LProbe probe) { + try { + Map warn = + probeValidator.validate(probe, false); + if (warn != null) { + List warns = new ArrayList(); + for (String key: warn.keySet()) { + warns.add(new ReportData(key, "validation", warn.get(key))); + } + this.appendWarnings(probe.getProbeId(), warns); + } } - List warn = this.warnings.get(probeId); - if (warn == null) { - this.warnings.put(probeId, writer.getWarnings()); + catch (ValidationException e) { + Map err = e.getErrors(); + List errs = new ArrayList(); + for(String key: err.keySet()) { + errs.add(new ReportData(key, "validation", err.get(key))); + } + this.appendErrors(probe.getProbeId(), errs); + Map warn = e.getWarnings(); + if (warn != null) { + List warns = new ArrayList(); + for (String key: warn.keySet()) { + warns.add(new ReportData(key, "validation", warn.get(key))); + } + this.appendWarnings(probe.getProbeId(), warns); + } + return false; } - else { - warn.addAll(writer.getWarnings()); + return true; + } + + private boolean validateMessungen(List messungen) { + for(LMessung messung: messungen) { + try { + Map warn = + messungValidator.validate(messung, false); + if (warn != null) { + List warns = new ArrayList(); + for (String key : warn.keySet()) { + warns.add( + new ReportData(key, "validation", warn.get(key))); + } + this.appendWarnings(messung.getProbeId(), warns); + } + } + catch (ValidationException e) { + Map err = e.getErrors(); + List errs = new ArrayList(); + for(String key: err.keySet()) { + errs.add( + new ReportData(key, "validation", err.get(key))); + } + this.appendErrors(messung.getProbeId(), errs); + Map warn = e.getWarnings(); + if (warn != null) { + List warns = new ArrayList(); + for (String key: warn.keySet()) { + warns.add( + new ReportData(key, "validation", warn.get(key))); + } + this.appendWarnings(messung.getProbeId(), warns); + } + return false; + } } + + return true; + + } + + private boolean validateMesswerte(List werte) { + for(LMesswert messwert: werte) { + try { + Map warn = + messwertValidator.validate(messwert, false); + if (warn != null) { + List warns = new ArrayList(); + for (String key : warn.keySet()) { + warns.add( + new ReportData(key, "validation", warn.get(key))); + } + this.appendWarnings(messwert.getProbeId(), warns); + } + } + catch (ValidationException e) { + Map err = e.getErrors(); + List errs = new ArrayList(); + for(String key: err.keySet()) { + errs.add( + new ReportData(key, "validation", err.get(key))); + } + this.appendErrors(messwert.getProbeId(), errs); + Map warn = e.getWarnings(); + if (warn != null) { + List warns = new ArrayList(); + for (String key: warn.keySet()) { + warns.add( + new ReportData(key, "validation", warn.get(key))); + } + this.appendWarnings(messwert.getProbeId(), warns); + } + return false; + } + } + return true; + } + + private boolean validateLOrte(List orte) { + for(LOrt ort: orte) { + try { + Map warn = + ortValidator.validate(ort, false); + if (warn != null) { + List warns = new ArrayList(); + for (String key : warn.keySet()) { + warns.add( + new ReportData(key, "validation", warn.get(key))); + } + this.appendWarnings(ort.getProbeId(), warns); + } + } + catch (ValidationException e) { + Map err = e.getErrors(); + List errs = new ArrayList(); + for(String key: err.keySet()) { + errs.add( + new ReportData(key, "validation", err.get(key))); + } + this.appendErrors(ort.getProbeId(), errs); + Map warn = e.getWarnings(); + if (warn != null) { + List warns = new ArrayList(); + for (String key: warn.keySet()) { + warns.add( + new ReportData(key, "validation", warn.get(key))); + } + this.appendWarnings(ort.getProbeId(), warns); + } + return false; + } + } + return true; + } /** @@ -306,4 +460,27 @@ this.errors = new HashMap>(); this.warnings = new HashMap>(); } + + private void appendErrors(String probeId, List errs) { + List err = this.errors.get(probeId); + if (err == null) { + this.errors.put(probeId, errs); + } + else { + err.addAll(errs); + this.errors.put(probeId, err); + } + } + + private void appendWarnings(String probeId, List warns) { + List warn = this.warnings.get(probeId); + if (warn == null) { + this.warnings.put(probeId, warns); + } + else { + warn.addAll(warns); + this.warnings.put(probeId, warn); + } + } + } diff -r b6fcf49d75d5 -r 146b2dfd7ddf src/main/java/de/intevation/lada/data/importer/LAFWriter.java --- a/src/main/java/de/intevation/lada/data/importer/LAFWriter.java Wed Jan 08 16:45:19 2014 +0100 +++ b/src/main/java/de/intevation/lada/data/importer/LAFWriter.java Mon Jan 13 15:47:06 2014 +0100 @@ -41,19 +41,6 @@ private EntityManager em; @Inject - @Named("lprobevalidator") - private Validator probeValidator; - @Inject - @Named("lmessungvalidator") - private Validator messungValidator; - @Inject - @Named("lortvalidator") - private Validator ortValidator; - @Inject - @Named("lmesswertvalidator") - private Validator messwertValidator; - - @Inject @Named("lproberepository") private Repository probeRepository; @Inject @@ -100,32 +87,7 @@ errors.add(new ReportData("auth", "not authorized", 699)); return false; } - try { - Map warn = - probeValidator.validate(probe, false); - if (warn != null) { - for (String key: warn.keySet()) { - warnings.add(new ReportData(key, "validation", warn.get(key))); - } - } - } - catch (ValidationException e) { - Map err = e.getErrors(); - for(String key: err.keySet()) { - errors.add(new ReportData(key, "validation", err.get(key))); - } - Map warn = e.getWarnings(); - if (warn != null) { - for (String key: warn.keySet()) { - warnings.add(new ReportData(key, "validation", warn.get(key))); - } - } - if (probe.getProbeId() == null) { - errors.add(new ReportData("probeId", "missing", 673)); - } - return false; - } - if (probe.getProbeId() == null) { + if (probe.getProbeId() == null) { errors.add(new ReportData("probeId", "missing", 673)); return false; } @@ -153,34 +115,8 @@ List messungen ) { for(LMessung messung: messungen) { - try { - Map warn = - messungValidator.validate(messung, false); - messungRepository.create(messung); - if (warn != null) { - for (String key : warn.keySet()) { - warnings.add( - new ReportData(key, "validation", warn.get(key))); - } - } - } - catch (ValidationException e) { - Map err = e.getErrors(); - for(String key: err.keySet()) { - errors.add( - new ReportData(key, "validation", err.get(key))); - } - Map warn = e.getWarnings(); - if (warn != null) { - for (String key: warn.keySet()) { - warnings.add( - new ReportData(key, "validation", warn.get(key))); - } - } - return false; - } + messungRepository.create(messung); } - return true; } @@ -209,32 +145,7 @@ @Override public boolean writeLOrte(AuthenticationResponse auth, List orte) { for(LOrt ort: orte) { - try { - Map warn = - ortValidator.validate(ort, false); - lortRepository.create(ort); - if (warn != null) { - for (String key : warn.keySet()) { - warnings.add( - new ReportData(key, "validation", warn.get(key))); - } - } - } - catch (ValidationException e) { - Map err = e.getErrors(); - for(String key: err.keySet()) { - errors.add( - new ReportData(key, "validation", err.get(key))); - } - Map warn = e.getWarnings(); - if (warn != null) { - for (String key: warn.keySet()) { - warnings.add( - new ReportData(key, "validation", warn.get(key))); - } - } - return false; - } + lortRepository.create(ort); } return true; } @@ -293,34 +204,9 @@ List werte ) { for(LMesswert messwert: werte) { - try { - Map warn = - messwertValidator.validate(messwert, false); - messwertRepository.create(messwert); - if (warn != null) { - for (String key : warn.keySet()) { - warnings.add( - new ReportData(key, "validation", warn.get(key))); - } - } - } - catch (ValidationException e) { - Map err = e.getErrors(); - for(String key: err.keySet()) { - errors.add( - new ReportData(key, "validation", err.get(key))); - } - Map warn = e.getWarnings(); - if (warn != null) { - for (String key: warn.keySet()) { - warnings.add( - new ReportData(key, "validation", warn.get(key))); - } - } - return false; - } + messwertRepository.create(messwert); } - return false; + return true; } /**