Mercurial > lada > lada-server
diff src/main/java/de/intevation/lada/validation/rules/probe/HasEntnahmeOrt.java @ 538:fd927b584c54
Added first validation rules for probe objects.
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Tue, 24 Feb 2015 10:58:06 +0100 |
parents | |
children | de47b7193bdb |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/intevation/lada/validation/rules/probe/HasEntnahmeOrt.java Tue Feb 24 10:58:06 2015 +0100 @@ -0,0 +1,50 @@ +package de.intevation.lada.validation.rules.probe; + +import java.util.List; + +import javax.inject.Inject; + +import de.intevation.lada.model.land.LOrt; +import de.intevation.lada.model.land.LProbe; +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("Probe") +public class HasEntnahmeOrt implements Rule { + + @Inject + @RepositoryConfig(type=RepositoryType.RO) + private Repository repo; + + @Override + public Violation execute(Object object) { + LProbe probe = (LProbe)object; + Integer id = probe.getId(); + if (id == null) { + Violation violation = new Violation(); + violation.addWarning("entnahmeOrt", 631); + return violation; + } + QueryBuilder<LOrt> builder = + new QueryBuilder<LOrt>(repo.entityManager("land"), LOrt.class); + builder.and("probeId", id); + Response response = repo.filter(builder.getQuery(), "land"); + @SuppressWarnings("unchecked") + List<LOrt> orte = (List<LOrt>)response.getData(); + for (LOrt ort: orte) { + if (ort.getOrtsTyp().equals("E")) { + return null; + } + } + Violation violation = new Violation(); + violation.addWarning("entnahmeOrt", 631); + return violation; + } + +}