comparison src/main/java/de/intevation/lada/importer/ProbeIdentifier.java @ 1097:186d602e031a

Merged branch schema-update into default.
author Tom Gottfried <tom@intevation.de>
date Fri, 14 Oct 2016 18:17:42 +0200
parents
children 2593ba20487e
comparison
equal deleted inserted replaced
1096:565c8a67034d 1097:186d602e031a
1 /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz
2 * Software engineering by Intevation GmbH
3 *
4 * This file is Free Software under the GNU GPL (v>=3)
5 * and comes with ABSOLUTELY NO WARRANTY! Check out
6 * the documentation coming with IMIS-Labordaten-Application for details.
7 */
8 package de.intevation.lada.importer;
9
10 import java.util.List;
11
12 import javax.inject.Inject;
13 import javax.management.modelmbean.InvalidTargetObjectTypeException;
14
15 import de.intevation.lada.model.land.Probe;
16 import de.intevation.lada.util.annotation.RepositoryConfig;
17 import de.intevation.lada.util.data.QueryBuilder;
18 import de.intevation.lada.util.data.Repository;
19 import de.intevation.lada.util.data.RepositoryType;
20
21 @IdentifierConfig(type="Probe")
22 public class ProbeIdentifier implements Identifier {
23
24 @Inject
25 @RepositoryConfig(type=RepositoryType.RO)
26 private Repository repository;
27
28 @Override
29 public Identified find(Object object)
30 throws InvalidTargetObjectTypeException
31 {
32 if (!(object instanceof Probe)) {
33 throw new InvalidTargetObjectTypeException(
34 "Object is not of type Probe");
35 }
36 Probe probe = (Probe)object;
37 QueryBuilder<Probe> builder = new QueryBuilder<Probe>(
38 repository.entityManager("land"),
39 Probe.class
40 );
41
42 // idAlt null and hauptprobenNr not null and mstId not null.
43 if (probe.getIdAlt() == null &&
44 probe.getHauptprobenNr() != null &&
45 probe.getMstId() != null
46 ) {
47 builder.and("mstId", probe.getMstId());
48 builder.and("hauptprobenNr", probe.getHauptprobenNr());
49 List<Probe> proben = repository.filterPlain(builder.getQuery(), "land");
50 if (proben.size() > 1) {
51 // Should never happen. DB has unique constraint for
52 // "hauptprobenNr"
53 return Identified.REJECT;
54 }
55 if (proben.isEmpty()) {
56 return Identified.NEW;
57 }
58 return Identified.UPDATE;
59 }
60 else if (probe.getIdAlt() != null &&
61 (probe.getHauptprobenNr() == null ||
62 probe.getMstId() == null)
63 ) {
64 builder.and("idAlt", probe.getIdAlt());
65 List<Probe> proben =
66 repository.filterPlain(builder.getQuery(), "land");
67 if (proben.size() > 1) {
68 // Should never happen. DB has unique constraint for "idAlt"
69 return Identified.REJECT;
70 }
71 if (proben.isEmpty()) {
72 return Identified.NEW;
73 }
74 return Identified.UPDATE;
75 }
76 else {
77 builder.and("idAlt", probe.getIdAlt());
78 List<Probe> proben =
79 repository.filterPlain(builder.getQuery(), "land");
80 if (proben.size() > 1) {
81 // Should never happen. DB has unique constraint for "idAlt"
82 return Identified.REJECT;
83 }
84 if (proben.isEmpty()) {
85 return Identified.NEW;
86 }
87 if (proben.get(0).getHauptprobenNr().equals(
88 probe.getHauptprobenNr()) ||
89 probe.getHauptprobenNr().isEmpty() ||
90 proben.get(0).getHauptprobenNr().isEmpty()
91 ) {
92 return Identified.UPDATE;
93 }
94 else {
95 return Identified.REJECT;
96 }
97 }
98 }
99 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)