raimund@711: /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz
raimund@711: * Software engineering by Intevation GmbH
raimund@711: *
raimund@711: * This file is Free Software under the GNU GPL (v>=3)
raimund@711: * and comes with ABSOLUTELY NO WARRANTY! Check out
raimund@711: * the documentation coming with IMIS-Labordaten-Application for details.
raimund@711: */
raimund@537: package de.intevation.lada.validation;
raimund@537:
raimund@537: import javax.enterprise.context.ApplicationScoped;
raimund@537: import javax.enterprise.inject.Instance;
raimund@537: import javax.inject.Inject;
raimund@537:
raimund@540: import de.intevation.lada.model.land.LProbe;
raimund@540: import de.intevation.lada.validation.annotation.ValidationConfig;
raimund@537: import de.intevation.lada.validation.annotation.ValidationRule;
raimund@537: import de.intevation.lada.validation.rules.Rule;
raimund@537:
raimund@711: /**
raimund@711: * Validation for probe objects.
raimund@711: *
raimund@711: * Instantiates the set of rules for probe objects and uses these rules to
raimund@711: * validate the object.
raimund@711: *
raimund@711: * @author Raimund Renkert
raimund@711: */
raimund@537: @ValidationConfig(type="Probe")
raimund@537: @ApplicationScoped
raimund@537: public class ProbeValidator implements Validator {
raimund@537:
raimund@537: @Inject
raimund@537: @ValidationRule("Probe")
raimund@537: private Instance rules;
raimund@537:
raimund@537: @Override
raimund@537: public Violation validate(Object object) {
raimund@537: Violation violations = new Violation();
raimund@540: if (!(object instanceof LProbe)) {
raimund@540: violations.addError("probe", 602);
raimund@540: return violations;
raimund@540: }
raimund@537: for(Rule rule: rules) {
raimund@537: Violation result = rule.execute(object);
raimund@537: if (result != null) {
raimund@537: if (result.hasWarnings()) {
raimund@537: violations.addWarnings(result.getWarnings());
raimund@537: }
raimund@537: if (result.hasErrors()) {
raimund@537: violations.addErrors(result.getErrors());
raimund@537: }
raimund@537: }
raimund@537: }
raimund@537: return violations;
raimund@537: }
raimund@537: }