comparison flys-backend/src/main/java/de/intevation/flys/importer/ImportWaterlevel.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
comparison
equal deleted inserted replaced
2842:0d55b7722fae 2843:6a9f45697f81
1 package de.intevation.flys.importer;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import org.apache.log4j.Logger;
7
8 import org.hibernate.Session;
9 import org.hibernate.Query;
10
11 import de.intevation.flys.model.River;
12 import de.intevation.flys.model.Unit;
13 import de.intevation.flys.model.Waterlevel;
14
15
16 public class ImportWaterlevel {
17
18 private static final Logger log = Logger.getLogger(ImportWaterlevel.class);
19
20
21 private ImportUnit unit;
22
23 private String description;
24
25 private List<ImportWaterlevelQRange> qRanges;
26
27 private Waterlevel peer;
28
29
30 public ImportWaterlevel(ImportUnit unit, String description) {
31 this.qRanges = new ArrayList<ImportWaterlevelQRange>();
32
33 this.unit = unit;
34 this.description = description;
35 }
36
37
38 public void storeDependencies(River river) {
39 Waterlevel peer = getPeer(river);
40
41 int i = 0;
42
43 for (ImportWaterlevelQRange qRange: qRanges) {
44 qRange.storeDependencies(peer);
45 i++;
46 }
47
48 log.info("stored " + i + " waterlevel q ranges");
49 }
50
51
52 public Waterlevel getPeer(River river) {
53 Unit u = unit != null ? unit.getPeer() : null;
54 if (u == null) {
55 log.warn("skip invalid waterlevel - no unit set!");
56 return null;
57 }
58
59 if (peer == null) {
60 Session session = ImporterSession.getInstance().getDatabaseSession();
61 Query query = session.createQuery(
62 "from Waterlevel where " +
63 " river=:river and " +
64 " unit=:unit and " +
65 " description=:description"
66 );
67
68 query.setParameter("river", river);
69 query.setParameter("unit", u);
70 query.setParameter("description", description);
71
72 List<Waterlevel> wsts = query.list();
73 if (wsts.isEmpty()) {
74 peer = new Waterlevel(river, u, description);
75 session.save(peer);
76 }
77 else {
78 peer = wsts.get(0);
79 }
80 }
81
82 return peer;
83 }
84 }
85 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org