Mercurial > dive4elements > river
comparison flys-backend/src/main/java/de/intevation/flys/model/River.java @ 768:87ac543c7ab9
When
looking up a gauge by km containment use precision of 1e-6.
flys-backend/trunk@2232 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sun, 26 Jun 2011 12:16:36 +0000 |
parents | 5572d051347e |
children | 321b9e480f72 |
comparison
equal
deleted
inserted
replaced
767:5572d051347e | 768:87ac543c7ab9 |
---|---|
1 package de.intevation.flys.model; | 1 package de.intevation.flys.model; |
2 | 2 |
3 import java.io.Serializable; | 3 import java.io.Serializable; |
4 | 4 |
5 import java.math.BigDecimal; | 5 import java.math.BigDecimal; |
6 import java.math.MathContext; | |
6 | 7 |
7 import javax.persistence.Entity; | 8 import javax.persistence.Entity; |
8 import javax.persistence.Id; | 9 import javax.persistence.Id; |
9 import javax.persistence.Table; | 10 import javax.persistence.Table; |
10 import javax.persistence.GeneratedValue; | 11 import javax.persistence.GeneratedValue; |
25 @Entity | 26 @Entity |
26 @Table(name = "rivers") | 27 @Table(name = "rivers") |
27 public class River | 28 public class River |
28 implements Serializable | 29 implements Serializable |
29 { | 30 { |
31 public static final MathContext PRECISION = new MathContext(6); | |
32 | |
30 private Integer id; | 33 private Integer id; |
31 | 34 |
32 private String name; | 35 private String name; |
33 | 36 |
34 private boolean kmUp; | 37 private boolean kmUp; |
127 } | 130 } |
128 | 131 |
129 public Gauge determineGaugeByPosition(double p) { | 132 public Gauge determineGaugeByPosition(double p) { |
130 Session session = SessionHolder.HOLDER.get(); | 133 Session session = SessionHolder.HOLDER.get(); |
131 Query query = session.createQuery( | 134 Query query = session.createQuery( |
132 "from Gauge where river=:river " + | 135 "from Gauge g where river=:river " + |
133 "and :p between range.a and range.b"); | 136 "and :p between g.range.a and g.range.b"); |
134 query.setParameter("river", this); | 137 query.setParameter("river", this); |
135 query.setParameter("p", new BigDecimal(p)); | 138 query.setParameter("p", new BigDecimal(p, PRECISION)); |
136 List<Gauge> gauges = query.list(); | 139 List<Gauge> gauges = query.list(); |
137 return gauges.isEmpty() ? null : gauges.get(0); | 140 return gauges.isEmpty() ? null : gauges.get(0); |
138 } | 141 } |
139 | 142 |
140 public Gauge determineGaugeByStation(double a, double b) { | 143 public Gauge determineGaugeByStation(double a, double b) { |