# HG changeset patch # User Raimund Renkert # Date 1430827771 -7200 # Node ID 4da01934e46f699a586ef05bee596d580f2477e5 # Parent ac7f69201d4af653451e481aa9fda0d50396112d Added new validation rules for messung objects. diff -r ac7f69201d4a -r 4da01934e46f src/main/java/de/intevation/lada/validation/rules/messung/Date.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/intevation/lada/validation/rules/messung/Date.java Tue May 05 14:09:31 2015 +0200 @@ -0,0 +1,46 @@ +package de.intevation.lada.validation.rules.messung; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.inject.Inject; + +import de.intevation.lada.model.land.LMessung; +import de.intevation.lada.model.land.LProbe; +import de.intevation.lada.util.annotation.RepositoryConfig; +import de.intevation.lada.util.data.Repository; +import de.intevation.lada.util.data.RepositoryType; +import de.intevation.lada.util.rest.Response; +import de.intevation.lada.validation.Violation; +import de.intevation.lada.validation.annotation.ValidationRule; +import de.intevation.lada.validation.rules.Rule; + +@ValidationRule("Messung") +public class Date implements Rule { + + @Inject + @RepositoryConfig(type=RepositoryType.RO) + private Repository repository; + + @Override + public Violation execute(Object object) { + LMessung messung = (LMessung)object; + Integer probeId = messung.getProbeId(); + Response response = repository.getById(LProbe.class, probeId, "land"); + @SuppressWarnings("unchecked") + List list = (List) response.getData(); + if (list.isEmpty()) { + Map errors = new HashMap(); + errors.put("lprobe", 604); + } + LProbe probe = list.get(0); + if (probe.getProbeentnahmeEnde() == null || + probe.getProbeentnahmeEnde().after(messung.getMesszeitpunkt())) { + Violation violation = new Violation(); + violation.addWarning("messzeitpunkt", 661); + return violation; + } + return null; + } +} diff -r ac7f69201d4a -r 4da01934e46f src/main/java/de/intevation/lada/validation/rules/messung/HasPflichtmessgroessen.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/intevation/lada/validation/rules/messung/HasPflichtmessgroessen.java Tue May 05 14:09:31 2015 +0200 @@ -0,0 +1,61 @@ +package de.intevation.lada.validation.rules.messung; + +import java.util.List; + +import javax.inject.Inject; + +import de.intevation.lada.model.land.LMessung; +import de.intevation.lada.model.land.LMesswert; +import de.intevation.lada.model.stamm.PflichtMessgroesse; +import de.intevation.lada.util.annotation.RepositoryConfig; +import de.intevation.lada.util.data.QueryBuilder; +import de.intevation.lada.util.data.Repository; +import de.intevation.lada.util.data.RepositoryType; +import de.intevation.lada.util.rest.Response; +import de.intevation.lada.validation.Violation; +import de.intevation.lada.validation.annotation.ValidationRule; +import de.intevation.lada.validation.rules.Rule; + +@ValidationRule("Messung") +public class HasPflichtmessgroessen implements Rule { + + @Inject + @RepositoryConfig(type=RepositoryType.RO) + private Repository repository; + + @Override + public Violation execute(Object object) { + LMessung messung = (LMessung)object; + QueryBuilder builder = + new QueryBuilder( + repository.entityManager("stamm"), + PflichtMessgroesse.class); + builder.and("mmtId", messung.getMmtId()); + Response response = repository.filter(builder.getQuery(), "stamm"); + List pflicht = + (List)response.getData(); + + QueryBuilder wertBuilder = + new QueryBuilder( + repository.entityManager("land"), LMesswert.class); + wertBuilder.and("messungsId", messung.getId()) + .and("probeId", messung.getProbeId()); + Response wertResponse = + repository.filter(wertBuilder.getQuery(), "land"); + List messwerte = (List)wertResponse.getData(); + Violation violation = new Violation(); + boolean hit = false; + for (PflichtMessgroesse p : pflicht) { + hit = false; + for (LMesswert wert : messwerte) { + if (p.getMessgroesseId().equals(wert.getMessgroesseId())) { + hit = true; + } + } + if (!hit) { + violation.addWarning("pflichtmessgroesse", 631); + } + } + return violation.hasWarnings() ? violation : null; + } +} diff -r ac7f69201d4a -r 4da01934e46f src/main/java/de/intevation/lada/validation/rules/messung/MessgroesseToMessmethode.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/intevation/lada/validation/rules/messung/MessgroesseToMessmethode.java Tue May 05 14:09:31 2015 +0200 @@ -0,0 +1,62 @@ +package de.intevation.lada.validation.rules.messung; + +import java.util.List; + +import javax.inject.Inject; + +import de.intevation.lada.model.land.LMessung; +import de.intevation.lada.model.land.LMesswert; +import de.intevation.lada.model.stamm.MmtMessgroesse; +import de.intevation.lada.util.annotation.RepositoryConfig; +import de.intevation.lada.util.data.QueryBuilder; +import de.intevation.lada.util.data.Repository; +import de.intevation.lada.util.data.RepositoryType; +import de.intevation.lada.util.rest.Response; +import de.intevation.lada.validation.Violation; +import de.intevation.lada.validation.annotation.ValidationRule; +import de.intevation.lada.validation.rules.Rule; + +@ValidationRule("Messung") +public class MessgroesseToMessmethode implements Rule { + + @Inject + @RepositoryConfig(type=RepositoryType.RO) + private Repository repository; + + @Override + public Violation execute(Object object) { + LMessung messung = (LMessung)object; + String mmt = messung.getMmtId(); + QueryBuilder builder = + new QueryBuilder( + repository.entityManager("land"), LMesswert.class); + builder.and("messungsId", messung.getId()) + .and("probeId", messung.getProbeId()); + Response response = repository.filter(builder.getQuery(), "land"); + List messwerte = (List)response.getData(); + + QueryBuilder mmtBuilder = + new QueryBuilder( + repository.entityManager("stamm"), MmtMessgroesse.class); + builder.and("mmtId", mmt); + + Response results = + repository.filter(mmtBuilder.getQuery(), "stamm"); + List messgroessen = + (List)results.getData(); + Violation violation = new Violation(); + for(LMesswert messwert: messwerte) { + boolean hit = false; + for (MmtMessgroesse messgroesse: messgroessen) { + if (messwert.getMessgroesseId().equals( + messgroesse.getMmtMessgroessePK().getMmtId().toString())) { + hit = true; + } + } + if (!hit) { + violation.addWarning("messgroesse", 632); + } + } + return violation.hasWarnings() ? violation : null; + } +}