Mercurial > dive4elements > river
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 : |