comparison backend/src/main/java/org/dive4elements/river/model/RiverAxisKm.java @ 9563:3955ecc1a516

Restrict inundation map to selected river range
author gernotbelger
date Mon, 29 Oct 2018 17:57:30 +0100
parents 4c3ccf2b0304
children
comparison
equal deleted inserted replaced
9562:2b1626fa4a95 9563:3955ecc1a516
8 8
9 package org.dive4elements.river.model; 9 package org.dive4elements.river.model;
10 10
11 import java.io.Serializable; 11 import java.io.Serializable;
12 import java.math.BigDecimal; 12 import java.math.BigDecimal;
13 import java.util.Collections;
13 import java.util.List; 14 import java.util.List;
14 15
15 import javax.persistence.Column; 16 import javax.persistence.Column;
16 import javax.persistence.Entity; 17 import javax.persistence.Entity;
17 import javax.persistence.Id; 18 import javax.persistence.Id;
18 import javax.persistence.JoinColumn; 19 import javax.persistence.JoinColumn;
19 import javax.persistence.OneToOne; 20 import javax.persistence.OneToOne;
20 import javax.persistence.Table; 21 import javax.persistence.Table;
21 22
23 import org.dive4elements.river.backend.SessionHolder;
24 import org.hibernate.Query;
22 import org.hibernate.Session; 25 import org.hibernate.Session;
23 import org.hibernate.Query;
24 import org.hibernate.annotations.Type; 26 import org.hibernate.annotations.Type;
25 27
26 import com.vividsolutions.jts.geom.Point; 28 import com.vividsolutions.jts.geom.Point;
27 29
28 import org.dive4elements.river.backend.SessionHolder;
29
30
31 @Entity 30 @Entity
32 @Table(name = "river_axes_km") 31 @Table(name = "river_axes_km")
33 public class RiverAxisKm 32 public class RiverAxisKm implements Serializable {
34 implements Serializable 33
35 { 34 private static final long serialVersionUID = 1L;
36 private Integer id; 35
37 private River river; 36 private Integer id;
37 private River river;
38 private BigDecimal km; 38 private BigDecimal km;
39 private Point geom; 39 private Point geom;
40
41 40
42 public RiverAxisKm() { 41 public RiverAxisKm() {
43 } 42 }
44 43
45
46 @Id 44 @Id
47 @Column(name = "id") 45 @Column(name = "id")
48 public Integer getId() { 46 public Integer getId() {
49 return id; 47 return this.id;
50 } 48 }
51 49
52 50 public void setId(final Integer id) {
53 public void setId(Integer id) {
54 this.id = id; 51 this.id = id;
55 } 52 }
56
57 53
58 @OneToOne 54 @OneToOne
59 @JoinColumn(name = "river_id") 55 @JoinColumn(name = "river_id")
60 public River getRiver() { 56 public River getRiver() {
61 return river; 57 return this.river;
62 } 58 }
63 59
64 60 public void setRiver(final River river) {
65 public void setRiver(River river) {
66 this.river = river; 61 this.river = river;
67 } 62 }
68 63
69
70 @Column(name = "km") 64 @Column(name = "km")
71 public BigDecimal getKm() { 65 public BigDecimal getKm() {
72 return km; 66 return this.km;
73 } 67 }
74 68
75 69 public void setKm(final BigDecimal km) {
76 public void setKm(BigDecimal km) {
77 this.km = km; 70 this.km = km;
78 } 71 }
79
80 72
81 @Column(name = "geom") 73 @Column(name = "geom")
82 @Type(type = "org.hibernatespatial.GeometryUserType") 74 @Type(type = "org.hibernatespatial.GeometryUserType")
83 public Point getGeom() { 75 public Point getGeom() {
84 return geom; 76 return this.geom;
85 } 77 }
86 78
87 79 public void setGeom(final Point geom) {
88 public void setGeom(Point geom) {
89 this.geom = geom; 80 this.geom = geom;
90 } 81 }
91
92 82
93 /** 83 /**
94 * Returns a list of RiverAxisKm objects for a given river. 84 * Returns a list of RiverAxisKm objects for a given river.
95 * 85 *
96 * @param riverid The ID of a river in the database. 86 * @param riverid
87 * The ID of a river in the database.
97 * 88 *
98 * @return a list of RiverAxisKm objects. 89 * @return a list of RiverAxisKm objects.
99 */ 90 */
100 public static List<RiverAxisKm> getRiverAxisKms(int riverid) { 91 public static List<RiverAxisKm> getRiverAxisKms(final int riverid) {
101 Session session = SessionHolder.HOLDER.get(); 92 final Session session = SessionHolder.HOLDER.get();
102 93
103 Query query = session.createQuery( 94 final Query query = session.createQuery("from RiverAxisKm where river.id =:riverid");
104 "from RiverAxisKm where river.id =:riverid");
105 query.setParameter("riverid", riverid); 95 query.setParameter("riverid", riverid);
106 96
107 List<RiverAxisKm> list = query.list(); 97 final List<RiverAxisKm> list = query.list();
98
99 return list;
100 }
101
102 public static List<RiverAxisKm> getRiverAxisKms(final int riverId, final double lowerKm, final double upperKm) {
103 final Session session = SessionHolder.HOLDER.get();
104
105 assert lowerKm <= upperKm;
106
107 if (Double.isNaN(lowerKm) || Double.isInfinite(lowerKm))
108 return Collections.emptyList();
109 if (Double.isNaN(upperKm) || Double.isInfinite(upperKm))
110 return Collections.emptyList();
111
112 final BigDecimal fromKm = BigDecimal.valueOf(lowerKm);
113 final BigDecimal toKm = BigDecimal.valueOf(upperKm);
114
115 final Query query = session.createQuery("from RiverAxisKm where river.id =:riverid AND km >= :fromKm AND km <= :toKm");
116 query.setParameter("riverid", riverId);
117 query.setParameter("fromKm", fromKm);
118 query.setParameter("toKm", toKm);
119
120 final List<RiverAxisKm> list = query.list();
108 121
109 return list; 122 return list;
110 } 123 }
111 } 124 }
112 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org