Mercurial > dive4elements > river
comparison flys-backend/src/main/java/de/intevation/flys/importer/ImportWaterlevel.java @ 3943:a5b003595d6c
Store minfo values into database only if their peer has been successfully stored.
flys-backend/trunk@5520 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 19 Sep 2012 10:05:36 +0000 |
parents | a65b5b0ade6f |
children | 1c34acb084ee |
comparison
equal
deleted
inserted
replaced
3942:43aa1ac8614b | 3943:a5b003595d6c |
---|---|
15 | 15 |
16 public class ImportWaterlevel { | 16 public class ImportWaterlevel { |
17 | 17 |
18 private static final Logger log = Logger.getLogger(ImportWaterlevel.class); | 18 private static final Logger log = Logger.getLogger(ImportWaterlevel.class); |
19 | 19 |
20 | |
21 private ImportUnit unit; | 20 private ImportUnit unit; |
22 | 21 |
23 private String description; | 22 private String description; |
24 | 23 |
25 private List<ImportWaterlevelQRange> qRanges; | 24 private List<ImportWaterlevelQRange> qRanges; |
26 | 25 |
27 private Waterlevel peer; | 26 private Waterlevel peer; |
28 | 27 |
29 | |
30 public ImportWaterlevel(String description) { | 28 public ImportWaterlevel(String description) { |
31 this.qRanges = new ArrayList<ImportWaterlevelQRange>(); | 29 this.qRanges = new ArrayList<ImportWaterlevelQRange>(); |
32 | 30 |
33 this.description = description; | 31 this.description = description; |
34 } | 32 } |
35 | 33 |
36 | |
37 public void setUnit(ImportUnit unit) { | 34 public void setUnit(ImportUnit unit) { |
38 this.unit = unit; | 35 this.unit = unit; |
39 } | 36 } |
40 | 37 |
41 | |
42 public void addValue(ImportWaterlevelQRange qRange) { | 38 public void addValue(ImportWaterlevelQRange qRange) { |
43 this.qRanges.add(qRange); | 39 this.qRanges.add(qRange); |
44 } | 40 } |
45 | |
46 | 41 |
47 public void storeDependencies(River river) { | 42 public void storeDependencies(River river) { |
48 log.info("store dependencies"); | 43 log.info("store dependencies"); |
49 | 44 |
50 Waterlevel peer = getPeer(river); | 45 Waterlevel peer = getPeer(river); |
51 | 46 |
52 int i = 0; | 47 if (peer != null) { |
48 int i = 0; | |
53 | 49 |
54 for (ImportWaterlevelQRange qRange: qRanges) { | 50 for (ImportWaterlevelQRange qRange : qRanges) { |
55 qRange.storeDependencies(peer); | 51 qRange.storeDependencies(peer); |
56 i++; | 52 i++; |
53 } | |
54 | |
55 log.info("stored " + i + " waterlevel q ranges"); | |
57 } | 56 } |
58 | |
59 log.info("stored " + i + " waterlevel q ranges"); | |
60 } | 57 } |
61 | |
62 | 58 |
63 public Waterlevel getPeer(River river) { | 59 public Waterlevel getPeer(River river) { |
64 Unit u = unit != null ? unit.getPeer() : null; | 60 Unit u = unit != null ? unit.getPeer() : null; |
65 if (u == null) { | 61 if (u == null) { |
66 log.warn("skip invalid waterlevel - no unit set!"); | 62 log.warn("skip invalid waterlevel - no unit set!"); |
67 return null; | 63 return null; |
68 } | 64 } |
69 | 65 |
70 if (peer == null) { | 66 if (peer == null) { |
71 Session session = ImporterSession.getInstance().getDatabaseSession(); | 67 Session session = ImporterSession.getInstance() |
72 Query query = session.createQuery( | 68 .getDatabaseSession(); |
73 "from Waterlevel where " + | 69 Query query = session.createQuery("from Waterlevel where " |
74 " river=:river and " + | 70 + " river=:river and " + " unit=:unit and " |
75 " unit=:unit and " + | 71 + " description=:description"); |
76 " description=:description" | |
77 ); | |
78 | 72 |
79 query.setParameter("river", river); | 73 query.setParameter("river", river); |
80 query.setParameter("unit", u); | 74 query.setParameter("unit", u); |
81 query.setParameter("description", description); | 75 query.setParameter("description", description); |
82 | 76 |