annotate flys-backend/src/main/java/de/intevation/flys/importer/ImportWaterlevelQRange.java @ 5000:99b452967737

Doc.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Fri, 15 Feb 2013 12:47:15 +0100
parents a65b5b0ade6f
children 255898799ed9
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
5000
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2845
diff changeset
15 /** Has a Q and list of W,km values. */
2843
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16 public class ImportWaterlevelQRange {
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 =
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19 Logger.getLogger(ImportWaterlevelQRange.class);
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
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22 private Double q;
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<ImportWaterlevelValue> values;
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 WaterlevelQRange peer;
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
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 public ImportWaterlevelQRange(Double q) {
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 this.values = new ArrayList<ImportWaterlevelValue>();
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 this.q = q;
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
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 public void addValue(ImportWaterlevelValue value) {
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 this.values.add(value);
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
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 public void storeDependencies(Waterlevel waterlevel) {
2845
a65b5b0ade6f Completed the MINFO waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2843
diff changeset
40 log.info("store dependencies");
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 WaterlevelQRange peer = getPeer(waterlevel);
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 int i = 0;
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 for (ImportWaterlevelValue value: values) {
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 value.storeDependencies(peer);
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 i++;
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
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 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
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
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 public WaterlevelQRange getPeer(Waterlevel waterlevel) {
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 if (peer == null) {
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 Session session = ImporterSession.getInstance().getDatabaseSession();
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 Query query = session.createQuery(
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 "from WaterlevelQRange where " +
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 " waterlevel=:waterlevel and " +
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 " q=:q"
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
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 query.setParameter("waterlevel", waterlevel);
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 query.setParameter("q", q);
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 List<WaterlevelQRange> qRanges = query.list();
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 if (qRanges.isEmpty()) {
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 peer = new WaterlevelQRange(waterlevel, q);
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 session.save(peer);
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 }
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 else {
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 peer = qRanges.get(0);
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
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77 return peer;
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 }
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org