annotate flys-backend/src/main/java/de/intevation/flys/importer/ImportWaterlevelQRange.java @ 2843:6a9f45697f81

Added importer classes used for MINFO specific waterlevel import. flys-backend/trunk@4282 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 20 Apr 2012 08:16:39 +0000
parents
children a65b5b0ade6f
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) {
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 WaterlevelQRange peer = getPeer(waterlevel);
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 int i = 0;
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 for (ImportWaterlevelValue value: values) {
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 value.storeDependencies(peer);
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 i++;
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 }
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 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
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
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 public WaterlevelQRange getPeer(Waterlevel waterlevel) {
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53 if (peer == null) {
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54 Session session = ImporterSession.getInstance().getDatabaseSession();
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 Query query = session.createQuery(
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 "from WaterlevelQRange where " +
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 " waterlevel=:waterlevel and " +
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 " q=:q"
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 );
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 query.setParameter("waterlevel", waterlevel);
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62 query.setParameter("q", q);
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 List<WaterlevelQRange> qRanges = query.list();
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 if (qRanges.isEmpty()) {
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66 peer = new WaterlevelQRange(waterlevel, q);
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 session.save(peer);
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 else {
6a9f45697f81 Added importer classes used for MINFO specific waterlevel import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 peer = qRanges.get(0);
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 }
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 return peer;
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 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org