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