annotate flys-backend/src/main/java/de/intevation/flys/importer/ImportWaterlevel.java @ 3943:a5b003595d6c

Store minfo values into database only if their peer has been successfully stored. flys-backend/trunk@5520 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 19 Sep 2012 10:05:36 +0000
parents a65b5b0ade6f
children 1c34acb084ee
rev   line source
2843
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.importer;
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
3 import java.util.ArrayList;
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
4 import java.util.List;
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
5
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
6 import org.apache.log4j.Logger;
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8 import org.hibernate.Session;
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9 import org.hibernate.Query;
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import de.intevation.flys.model.River;
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12 import de.intevation.flys.model.Unit;
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13 import de.intevation.flys.model.Waterlevel;
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16 public class ImportWaterlevel {
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18 private static final Logger log = Logger.getLogger(ImportWaterlevel.class);
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 private ImportUnit unit;
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22 private String description;
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 private List<ImportWaterlevelQRange> qRanges;
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26 private Waterlevel peer;
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27
2845
a65b5b0ade6f Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2843
diff changeset
28 public ImportWaterlevel(String description) {
2843
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 this.qRanges = new ArrayList<ImportWaterlevelQRange>();
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 this.description = description;
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 }
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33
2845
a65b5b0ade6f Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2843
diff changeset
34 public void setUnit(ImportUnit unit) {
a65b5b0ade6f Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2843
diff changeset
35 this.unit = unit;
a65b5b0ade6f Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2843
diff changeset
36 }
a65b5b0ade6f Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2843
diff changeset
37
a65b5b0ade6f Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2843
diff changeset
38 public void addValue(ImportWaterlevelQRange qRange) {
a65b5b0ade6f Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2843
diff changeset
39 this.qRanges.add(qRange);
a65b5b0ade6f Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2843
diff changeset
40 }
a65b5b0ade6f Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2843
diff changeset
41
2843
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 public void storeDependencies(River river) {
2845
a65b5b0ade6f Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2843
diff changeset
43 log.info("store dependencies");
a65b5b0ade6f Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2843
diff changeset
44
2843
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 Waterlevel peer = getPeer(river);
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46
3943
a5b003595d6c Store minfo values into database only if their peer has been successfully stored.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2845
diff changeset
47 if (peer != null) {
a5b003595d6c Store minfo values into database only if their peer has been successfully stored.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2845
diff changeset
48 int i = 0;
2843
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49
3943
a5b003595d6c Store minfo values into database only if their peer has been successfully stored.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2845
diff changeset
50 for (ImportWaterlevelQRange qRange : qRanges) {
a5b003595d6c Store minfo values into database only if their peer has been successfully stored.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2845
diff changeset
51 qRange.storeDependencies(peer);
a5b003595d6c Store minfo values into database only if their peer has been successfully stored.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2845
diff changeset
52 i++;
a5b003595d6c Store minfo values into database only if their peer has been successfully stored.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2845
diff changeset
53 }
a5b003595d6c Store minfo values into database only if their peer has been successfully stored.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2845
diff changeset
54
a5b003595d6c Store minfo values into database only if their peer has been successfully stored.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2845
diff changeset
55 log.info("stored " + i + " waterlevel q ranges");
2843
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 }
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 }
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 public Waterlevel getPeer(River river) {
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 Unit u = unit != null ? unit.getPeer() : null;
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 if (u == null) {
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62 log.warn("skip invalid waterlevel - no unit set!");
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63 return null;
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 }
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66 if (peer == null) {
3943
a5b003595d6c Store minfo values into database only if their peer has been successfully stored.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2845
diff changeset
67 Session session = ImporterSession.getInstance()
a5b003595d6c Store minfo values into database only if their peer has been successfully stored.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2845
diff changeset
68 .getDatabaseSession();
a5b003595d6c Store minfo values into database only if their peer has been successfully stored.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2845
diff changeset
69 Query query = session.createQuery("from Waterlevel where "
a5b003595d6c Store minfo values into database only if their peer has been successfully stored.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2845
diff changeset
70 + " river=:river and " + " unit=:unit and "
a5b003595d6c Store minfo values into database only if their peer has been successfully stored.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2845
diff changeset
71 + " description=:description");
2843
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 query.setParameter("river", river);
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74 query.setParameter("unit", u);
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 query.setParameter("description", description);
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77 List<Waterlevel> wsts = query.list();
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 if (wsts.isEmpty()) {
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 peer = new Waterlevel(river, u, description);
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 session.save(peer);
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81 }
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82 else {
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 peer = wsts.get(0);
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 }
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85 }
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
87 return peer;
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88 }
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89 }
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
90 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org