Mercurial > dive4elements > river
annotate flys-backend/src/main/java/de/intevation/flys/importer/ImportWaterlevel.java @ 5048:1c34acb084ee
Import*: Add getters to ImportWaterlevel*- classes needed to convert to Wst.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Wed, 20 Feb 2013 11:52:52 +0100 |
parents | a5b003595d6c |
children | 8320427ecd5c |
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 |
5048
1c34acb084ee
Import*: Add getters to ImportWaterlevel*- classes needed to convert to Wst.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3943
diff
changeset
|
34 public String getDescription() { |
1c34acb084ee
Import*: Add getters to ImportWaterlevel*- classes needed to convert to Wst.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3943
diff
changeset
|
35 return this.description; |
1c34acb084ee
Import*: Add getters to ImportWaterlevel*- classes needed to convert to Wst.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3943
diff
changeset
|
36 } |
1c34acb084ee
Import*: Add getters to ImportWaterlevel*- classes needed to convert to Wst.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3943
diff
changeset
|
37 |
2845
a65b5b0ade6f
Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2843
diff
changeset
|
38 public void setUnit(ImportUnit unit) { |
a65b5b0ade6f
Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2843
diff
changeset
|
39 this.unit = unit; |
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 |
5048
1c34acb084ee
Import*: Add getters to ImportWaterlevel*- classes needed to convert to Wst.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3943
diff
changeset
|
42 public ImportUnit getUnit() { |
1c34acb084ee
Import*: Add getters to ImportWaterlevel*- classes needed to convert to Wst.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3943
diff
changeset
|
43 return this.unit; |
1c34acb084ee
Import*: Add getters to ImportWaterlevel*- classes needed to convert to Wst.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3943
diff
changeset
|
44 } |
1c34acb084ee
Import*: Add getters to ImportWaterlevel*- classes needed to convert to Wst.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3943
diff
changeset
|
45 |
2845
a65b5b0ade6f
Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2843
diff
changeset
|
46 public void addValue(ImportWaterlevelQRange qRange) { |
a65b5b0ade6f
Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2843
diff
changeset
|
47 this.qRanges.add(qRange); |
a65b5b0ade6f
Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2843
diff
changeset
|
48 } |
a65b5b0ade6f
Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2843
diff
changeset
|
49 |
5048
1c34acb084ee
Import*: Add getters to ImportWaterlevel*- classes needed to convert to Wst.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3943
diff
changeset
|
50 public List<ImportWaterlevelQRange> getQRanges() { |
1c34acb084ee
Import*: Add getters to ImportWaterlevel*- classes needed to convert to Wst.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3943
diff
changeset
|
51 return this.qRanges; |
1c34acb084ee
Import*: Add getters to ImportWaterlevel*- classes needed to convert to Wst.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3943
diff
changeset
|
52 } |
1c34acb084ee
Import*: Add getters to ImportWaterlevel*- classes needed to convert to Wst.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3943
diff
changeset
|
53 |
2843
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
54 public void storeDependencies(River river) { |
2845
a65b5b0ade6f
Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2843
diff
changeset
|
55 log.info("store dependencies"); |
a65b5b0ade6f
Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2843
diff
changeset
|
56 |
2843
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
57 Waterlevel peer = getPeer(river); |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
58 |
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
|
59 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
|
60 int i = 0; |
2843
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
61 |
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
|
62 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
|
63 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
|
64 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
|
65 } |
a5b003595d6c
Store minfo values into database only if their peer has been successfully stored.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2845
diff
changeset
|
66 |
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 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
|
68 } |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
69 } |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
70 |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
71 public Waterlevel getPeer(River river) { |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
72 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
|
73 if (u == null) { |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
74 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
|
75 return null; |
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 |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
78 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
|
79 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
|
80 .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
|
81 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
|
82 + " 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
|
83 + " description=:description"); |
2843
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 query.setParameter("river", river); |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
86 query.setParameter("unit", u); |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
87 query.setParameter("description", description); |
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 List<Waterlevel> wsts = query.list(); |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
90 if (wsts.isEmpty()) { |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
91 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
|
92 session.save(peer); |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
93 } |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
94 else { |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
95 peer = wsts.get(0); |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
96 } |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
97 } |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
98 |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
99 return peer; |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
100 } |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
101 } |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
102 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |