annotate 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
rev   line source
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5992
4c3ccf2b0304 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5844
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5992
4c3ccf2b0304 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5844
diff changeset
6 * documentation coming with Dive4Elements River for details.
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5829
18619c1e7c2a Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5828
diff changeset
9 package org.dive4elements.river.model;
2360
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import java.io.Serializable;
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12 import java.math.BigDecimal;
9563
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
13 import java.util.Collections;
2360
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14 import java.util.List;
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16 import javax.persistence.Column;
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17 import javax.persistence.Entity;
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18 import javax.persistence.Id;
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19 import javax.persistence.JoinColumn;
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 import javax.persistence.OneToOne;
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21 import javax.persistence.Table;
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22
9563
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
23 import org.dive4elements.river.backend.SessionHolder;
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
24 import org.hibernate.Query;
2360
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 import org.hibernate.Session;
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26 import org.hibernate.annotations.Type;
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 import com.vividsolutions.jts.geom.Point;
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 @Entity
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 @Table(name = "river_axes_km")
9563
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
32 public class RiverAxisKm implements Serializable {
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
33
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
34 private static final long serialVersionUID = 1L;
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
35
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
36 private Integer id;
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
37 private River river;
2360
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38 private BigDecimal km;
9563
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
39 private Point geom;
2360
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 public RiverAxisKm() {
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 }
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 @Id
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 @Column(name = "id")
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 public Integer getId() {
9563
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
47 return this.id;
2360
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 }
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49
9563
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
50 public void setId(final Integer id) {
2360
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 this.id = id;
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 }
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54 @OneToOne
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 @JoinColumn(name = "river_id")
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 public River getRiver() {
9563
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
57 return this.river;
2360
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 }
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59
9563
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
60 public void setRiver(final River river) {
2360
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 this.river = river;
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62 }
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 @Column(name = "km")
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 public BigDecimal getKm() {
9563
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
66 return this.km;
2360
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 }
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68
9563
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
69 public void setKm(final BigDecimal km) {
2360
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 this.km = km;
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 }
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 @Column(name = "geom")
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74 @Type(type = "org.hibernatespatial.GeometryUserType")
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 public Point getGeom() {
9563
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
76 return this.geom;
2360
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77 }
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78
9563
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
79 public void setGeom(final Point geom) {
2360
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 this.geom = geom;
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81 }
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 /**
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 * Returns a list of RiverAxisKm objects for a given river.
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85 *
9563
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
86 * @param riverid
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
87 * The ID of a river in the database.
2360
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88 *
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89 * @return a list of RiverAxisKm objects.
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
90 */
9563
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
91 public static List<RiverAxisKm> getRiverAxisKms(final int riverid) {
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
92 final Session session = SessionHolder.HOLDER.get();
2360
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
93
9563
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
94 final Query query = session.createQuery("from RiverAxisKm where river.id =:riverid");
2360
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
95 query.setParameter("riverid", riverid);
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
96
9563
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
97 final List<RiverAxisKm> list = query.list();
2360
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
98
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
99 return list;
9df06b88c079 Added model class for relation 'river_axes_km'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
100 }
9563
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
101
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
102 public static List<RiverAxisKm> getRiverAxisKms(final int riverId, final double lowerKm, final double upperKm) {
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
103 final Session session = SessionHolder.HOLDER.get();
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
104
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
105 assert lowerKm <= upperKm;
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
106
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
107 if (Double.isNaN(lowerKm) || Double.isInfinite(lowerKm))
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
108 return Collections.emptyList();
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
109 if (Double.isNaN(upperKm) || Double.isInfinite(upperKm))
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
110 return Collections.emptyList();
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
111
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
112 final BigDecimal fromKm = BigDecimal.valueOf(lowerKm);
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
113 final BigDecimal toKm = BigDecimal.valueOf(upperKm);
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
114
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
115 final Query query = session.createQuery("from RiverAxisKm where river.id =:riverid AND km >= :fromKm AND km <= :toKm");
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
116 query.setParameter("riverid", riverId);
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
117 query.setParameter("fromKm", fromKm);
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
118 query.setParameter("toKm", toKm);
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
119
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
120 final List<RiverAxisKm> list = query.list();
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
121
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
122 return list;
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
123 }
3955ecc1a516 Restrict inundation map to selected river range
gernotbelger
parents: 5992
diff changeset
124 }

http://dive4elements.wald.intevation.org