annotate src/main/java/de/intevation/lada/validation/rules/ort/IsUnique.java @ 1227:a0968660a4c5

Use reusable validation rule instead of in-service implementation.
author Tom Gottfried <tom@intevation.de>
date Fri, 09 Dec 2016 16:34:44 +0100
parents
children 86ef81592f67
rev   line source
1227
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
3 *
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU GPL (v>=3)
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
6 * the documentation coming with IMIS-Labordaten-Application for details.
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
7 */
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
8 package de.intevation.lada.validation.rules.ort;
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
9
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
10 import javax.inject.Inject;
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
11
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
12 import de.intevation.lada.model.stammdaten.Ort;
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
13 import de.intevation.lada.util.annotation.RepositoryConfig;
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
14 import de.intevation.lada.util.data.QueryBuilder;
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
15 import de.intevation.lada.util.data.Repository;
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
16 import de.intevation.lada.util.data.RepositoryType;
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
17 import de.intevation.lada.validation.Violation;
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
18 import de.intevation.lada.validation.annotation.ValidationRule;
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
19 import de.intevation.lada.validation.rules.Rule;
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
20
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
21 @ValidationRule("Ort")
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
22 public class IsUnique implements Rule {
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
23
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
24 @Inject
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
25 @RepositoryConfig(type=RepositoryType.RO)
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
26 private Repository repository;
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
27
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
28 @Override
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
29 public Violation execute(Object object) {
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
30 Ort ort = (Ort)object;
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
31
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
32 QueryBuilder<Ort> builder = new QueryBuilder<Ort>(
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
33 repository.entityManager("stamm"), Ort.class);
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
34 builder.and("netzbetreiberId", ort.getNetzbetreiberId());
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
35 builder.and("ortId", ort.getOrtId());
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
36 if (ort.getId() != null) {
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
37 // Consider UPDATE
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
38 builder.andNot("id", ort.getId());
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
39 }
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
40 if (!repository.filterPlain(builder.getQuery(), "stamm").isEmpty()) {
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
41 Violation violation = new Violation();
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
42 violation.addError("ortId", 672);
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
43 return violation;
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
44 }
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
45
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
46 return null;
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
47 }
a0968660a4c5 Use reusable validation rule instead of in-service implementation.
Tom Gottfried <tom@intevation.de>
parents:
diff changeset
48 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)