Mercurial > dive4elements > river
comparison backend/src/main/java/org/dive4elements/river/importer/ImportDischargeTable.java @ 5885:09d9c14145a3
Do not import discharge tables twice if no time interval given
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Tue, 30 Apr 2013 19:03:44 +0200 |
parents | 4dd33b86dc61 |
children | a763fb7aa2e5 |
comparison
equal
deleted
inserted
replaced
5884:11e74ca3229a | 5885:09d9c14145a3 |
---|---|
74 | 74 |
75 public void setTimeInterval(ImportTimeInterval timeInterval) { | 75 public void setTimeInterval(ImportTimeInterval timeInterval) { |
76 this.timeInterval = timeInterval; | 76 this.timeInterval = timeInterval; |
77 } | 77 } |
78 | 78 |
79 | |
79 | 80 |
80 public DischargeTable getPeer(Gauge gauge) { | 81 public DischargeTable getPeer(Gauge gauge) { |
81 if (peer == null) { | 82 if (peer == null) { |
82 TimeInterval ti = timeInterval != null | 83 TimeInterval ti = timeInterval != null |
83 ? timeInterval.getPeer() | 84 ? timeInterval.getPeer() |
84 : null; | 85 : null; |
85 Session session = ImporterSession.getInstance().getDatabaseSession(); | 86 Session session = ImporterSession.getInstance().getDatabaseSession(); |
86 | 87 |
87 Query query = session.createQuery( | 88 String timeIntervalQuery = ti != null |
88 "from DischargeTable where " + | 89 ? "timeInterval=:interval" |
89 "gauge.id=:gauge and kind=:kind and " + | 90 : "timeInterval is null"; |
90 "description=:description and timeInterval=:interval"); | 91 |
91 query.setParameter("gauge", gauge.getId()); | 92 Query query = session.createQuery( |
92 query.setParameter("description", description); | 93 "from DischargeTable where " + |
93 query.setParameter("kind", kind); | 94 "gauge.id=:gauge and kind=:kind and " + |
94 query.setParameter("interval", ti); | 95 "description=:description and " + timeIntervalQuery); |
95 | 96 query.setParameter("gauge", gauge.getId()); |
96 List<DischargeTable> dischargeTables = query.list(); | 97 query.setParameter("description", description); |
97 if (dischargeTables.isEmpty()) { | 98 query.setParameter("kind", kind); |
98 peer = new DischargeTable(gauge, description, null, kind, ti); | 99 if (ti != null) { |
99 session.save(peer); | 100 query.setParameter("interval", ti); |
100 } | 101 } |
101 else { | 102 |
102 peer = dischargeTables.get(0); | 103 List<DischargeTable> dischargeTables = query.list(); |
103 } | 104 if (dischargeTables.isEmpty()) { |
104 } | 105 peer = new DischargeTable(gauge, description, null, kind, ti); |
105 | 106 session.save(peer); |
106 return peer; | 107 } |
108 else { | |
109 peer = dischargeTables.get(0); | |
110 } | |
111 } | |
112 | |
113 return peer; | |
107 } | 114 } |
108 | 115 |
109 | 116 |
110 public void storeDependencies(Gauge gauge) { | 117 public void storeDependencies(Gauge gauge) { |
111 log.info("store discharge table '" + description + "'"); | 118 log.info("store discharge table '" + description + "'"); |