Mercurial > lada > lada-server
changeset 340:02803c0e7bd1
More vaidation for messung objects.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Fri, 30 Aug 2013 09:17:03 +0200 |
parents | 17904ad125f3 |
children | 920520121fd8 |
files | src/main/java/de/intevation/lada/validation/LMessungValidator.java |
diffstat | 1 files changed, 88 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/main/java/de/intevation/lada/validation/LMessungValidator.java Thu Aug 29 10:05:27 2013 +0200 +++ b/src/main/java/de/intevation/lada/validation/LMessungValidator.java Fri Aug 30 09:17:03 2013 +0200 @@ -11,8 +11,10 @@ import de.intevation.lada.data.QueryBuilder; import de.intevation.lada.data.Repository; import de.intevation.lada.model.LMessung; +import de.intevation.lada.model.LMesswert; import de.intevation.lada.model.LProbe; import de.intevation.lada.model.LProbeInfo; +import de.intevation.lada.model.SPflichtMessgroesse; import de.intevation.lada.rest.Response; /** @@ -33,6 +35,14 @@ @Named("lmessungrepository") private Repository messungRepository; + @Inject + @Named("lmesswertrepository") + private Repository messwertRepository; + + @Inject + @Named("readonlyrepository") + private Repository readonlyRepository; + /** * Validate a LMessung object. * @@ -56,12 +66,90 @@ validateHasNebenprobenNr(messung, warnings); validateDatum(messung, warnings); + validateHasMesswert(messung, warnings); + validateMessgroesse(messung, warnings); + validatePflichtmessgroessen(messung, warnings); if (!update) { validateUniqueNebenprobenNr(messung, warnings); } return warnings; } + private void validateHasMesswert( + LMessung messung, + Map<String, Integer> warnings) { + QueryBuilder<LMesswert> wertBuilder = + new QueryBuilder<LMesswert>( + messwertRepository.getEntityManager(), LMesswert.class); + wertBuilder.and("messungsId", messung.getMessungsId()) + .and("probeId", messung.getProbeId()); + Response wertResponse = messwertRepository.filter(wertBuilder.getQuery()); + List<LMesswert> messwerte = (List<LMesswert>)wertResponse.getData(); + if (messwerte == null || messwerte.isEmpty()) { + warnings.put("messwert", 631); + } + } + + private void validatePflichtmessgroessen( + LMessung messung, + Map<String, Integer> warnings) { + QueryBuilder<SPflichtMessgroesse> builder = + new QueryBuilder<SPflichtMessgroesse>( + readonlyRepository.getEntityManager(), + SPflichtMessgroesse.class); + builder.and("mmtId", messung.getMmtId()); + Response response = readonlyRepository.filter(builder.getQuery()); + List<SPflichtMessgroesse> pflicht = + (List<SPflichtMessgroesse>)response.getData(); + + QueryBuilder<LMesswert> wertBuilder = + new QueryBuilder<LMesswert>( + messwertRepository.getEntityManager(), LMesswert.class); + wertBuilder.and("messungsId", messung.getMessungsId()) + .and("probeId", messung.getProbeId()); + Response wertResponse = + messwertRepository.filter(wertBuilder.getQuery()); + List<LMesswert> messwerte = (List<LMesswert>)wertResponse.getData(); + for (SPflichtMessgroesse p : pflicht) { + boolean hit = false; + for (LMesswert wert : messwerte) { + if (p.getMessgroesseId().equals(wert.getMessgroesseId())) { + hit = true; + } + } + if (!hit) { + warnings.put("pflichtmessgroesse", 631); + } + } + } + + private void validateMessgroesse( + LMessung messung, + Map<String, Integer> warnings + ) { + String mmt = messung.getMmtId(); + QueryBuilder<LMesswert> builder = + new QueryBuilder<LMesswert>( + messwertRepository.getEntityManager(), LMesswert.class); + builder.and("messungsId", messung.getMessungsId()) + .and("probeId", messung.getProbeId()); + Response response = messwertRepository.filter(builder.getQuery()); + List<LMesswert> messwerte = (List<LMesswert>)response.getData(); + String query = "select messgroesse_id from S_mmt_messgroesse where mmt_id = " + mmt; + List<Object[]> results = readonlyRepository.getEntityManager().createNativeQuery(query).getResultList(); + for(LMesswert messwert: messwerte) { + boolean hit = false; + for (Object[] row: results) { + if (messwert.getMessgroesseId().equals(row[0].toString())) { + hit = true; + } + } + if (!hit) { + warnings.put("messgroesse", 632); + } + } + } + /** * Check if the object has a 'Nebenproben Nr.'. *