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) {

http://dive4elements.wald.intevation.org