Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/validation/rules/probe/UniqueHauptprobenNr.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 | 7a97e4b1cc18 |
rev | line source |
---|---|
538
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.lada.validation.rules.probe; |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
2 |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
3 import java.util.List; |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
4 |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
5 import javax.inject.Inject; |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
6 |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
7 import de.intevation.lada.model.land.LProbe; |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
8 import de.intevation.lada.util.annotation.RepositoryConfig; |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
9 import de.intevation.lada.util.data.QueryBuilder; |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
10 import de.intevation.lada.util.data.Repository; |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
11 import de.intevation.lada.util.data.RepositoryType; |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
12 import de.intevation.lada.util.rest.Response; |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
13 import de.intevation.lada.validation.Violation; |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
14 import de.intevation.lada.validation.annotation.ValidationRule; |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
15 import de.intevation.lada.validation.rules.Rule; |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
16 |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
17 @ValidationRule("Probe") |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
18 public class UniqueHauptprobenNr implements Rule { |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
19 |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
20 @Inject |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
21 @RepositoryConfig(type=RepositoryType.RO) |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
22 private Repository repo; |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
23 |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
24 @SuppressWarnings("unchecked") |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
25 @Override |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
26 public Violation execute(Object object) { |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
27 LProbe probe = (LProbe)object; |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
28 QueryBuilder<LProbe> builder = new QueryBuilder<LProbe>( |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
29 repo.entityManager("land"), |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
30 LProbe.class); |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
31 builder.and("hauptprobenNr", probe.getHauptprobenNr()); |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
32 Response response = repo.filter(builder.getQuery(), "land"); |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
33 if (!((List<LProbe>)response.getData()).isEmpty()) { |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
34 LProbe found = ((List<LProbe>)response.getData()).get(0); |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
35 // The probe found in the db equals the new probe. (Update) |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
36 if (probe.getId() != null && probe.getId() == found.getId()) { |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
37 return null; |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
38 } |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
39 Violation violation = new Violation(); |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
40 violation.addError("hauptprobenNr", 611); |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
41 return violation; |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
42 } |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
43 return null; |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
44 } |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
45 |
fd927b584c54
Added first validation rules for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
46 } |