Mercurial > dive4elements > river
annotate flys-backend/src/main/java/de/intevation/flys/importer/ImportWaterlevelQRange.java @ 4735:94b39073f0f7
Moved EpsilonComparator to utils package becaus its not only useful for TIM parsing. Used EpsilonComparator in DA60 and DA66 case. Maybe TODO: Use in PRF, too.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Tue, 01 Jan 2013 13:54:08 +0100 |
parents | a65b5b0ade6f |
children | 99b452967737 |
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.Waterlevel; |
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.WaterlevelQRange; |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
13 |
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 public class ImportWaterlevelQRange { |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
16 |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
17 private static final Logger log = |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
18 Logger.getLogger(ImportWaterlevelQRange.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 |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
21 private Double q; |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
22 |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
23 private List<ImportWaterlevelValue> values; |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
24 |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
25 private WaterlevelQRange peer; |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
26 |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
27 |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
28 public ImportWaterlevelQRange(Double q) { |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
29 this.values = new ArrayList<ImportWaterlevelValue>(); |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
30 this.q = q; |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
31 } |
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 public void addValue(ImportWaterlevelValue value) { |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
34 this.values.add(value); |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
35 } |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
36 |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
37 |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
38 public void storeDependencies(Waterlevel waterlevel) { |
2845
a65b5b0ade6f
Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2843
diff
changeset
|
39 log.info("store dependencies"); |
a65b5b0ade6f
Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2843
diff
changeset
|
40 |
2843
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
41 WaterlevelQRange peer = getPeer(waterlevel); |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
42 |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
43 int i = 0; |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
44 |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
45 for (ImportWaterlevelValue value: values) { |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
46 value.storeDependencies(peer); |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
47 i++; |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
48 } |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
49 |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
50 log.info("stored " + i + " waterlevel values"); |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
51 } |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
52 |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
53 |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
54 public WaterlevelQRange getPeer(Waterlevel waterlevel) { |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
55 if (peer == null) { |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
56 Session session = ImporterSession.getInstance().getDatabaseSession(); |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
57 Query query = session.createQuery( |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
58 "from WaterlevelQRange where " + |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
59 " waterlevel=:waterlevel and " + |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
60 " q=:q" |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
61 ); |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
62 |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
63 query.setParameter("waterlevel", waterlevel); |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
64 query.setParameter("q", q); |
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 List<WaterlevelQRange> qRanges = query.list(); |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
67 if (qRanges.isEmpty()) { |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
68 peer = new WaterlevelQRange(waterlevel, q); |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
69 session.save(peer); |
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 else { |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
72 peer = qRanges.get(0); |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
73 } |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
74 } |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
75 |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
76 return peer; |
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 } |
6a9f45697f81
Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
79 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |