comparison flys-backend/src/main/java/de/intevation/flys/importer/ImportRange.java @ 500:d50cd3a632e0

Importer: Use BigDecimals in hashing to prevent numerical problems. Cache ranges globally, too. flys-backend/trunk@1854 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Sun, 08 May 2011 22:41:07 +0000
parents cce054f27dac
children 2c99995395f5
comparison
equal deleted inserted replaced
499:cce054f27dac 500:d50cd3a632e0
1 package de.intevation.flys.importer; 1 package de.intevation.flys.importer;
2 2
3 import de.intevation.flys.model.Range; 3 import de.intevation.flys.model.Range;
4 import de.intevation.flys.model.River; 4 import de.intevation.flys.model.River;
5
6 import org.hibernate.Session;
7 import org.hibernate.Query;
8
9 import java.util.List;
10 5
11 import java.math.BigDecimal; 6 import java.math.BigDecimal;
12 7
13 import org.apache.log4j.Logger; 8 import org.apache.log4j.Logger;
14 9
65 this.b = b; 60 this.b = b;
66 } 61 }
67 62
68 public Range getPeer(River river) { 63 public Range getPeer(River river) {
69 if (peer == null) { 64 if (peer == null) {
70 Session session = ImporterSession.getInstance().getDatabaseSession(); 65 peer = ImporterSession.getInstance().getRange(river, a, b);
71 Query query = session.createQuery(
72 "from Range where a=:a and b=:b and river=:river");
73 query.setParameter("a", a);
74 query.setParameter("b", b);
75 query.setParameter("river", river);
76 //log.debug("a: " + a + " b: " + b + " river.id: " + river.getId());
77 List<Range> ranges = query.list();
78 if (ranges.isEmpty()) {
79 peer = new Range(a, b, river);
80 session.save(peer);
81 }
82 else {
83 peer = ranges.get(0);
84 }
85 } 66 }
86 return peer; 67 return peer;
87 } 68 }
88 } 69 }
89 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 70 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org