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 + "'");

http://dive4elements.wald.intevation.org