annotate flys-backend/src/main/java/de/intevation/flys/model/RiverAxis.java @ 4174:eaf83d4ae6b1

Sorted gauges for reference gauge selection in historical discharge calculation based on their name. Now, Gauge implements the Java Comparable interface and takes its name into account.
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Thu, 18 Oct 2012 13:12:24 +0200
parents 6b1ca6ec4e3c
children b195fede1c3b
rev   line source
1230
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.model;
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
3 import java.io.Serializable;
1231
22eea1c9e907 Added a function in RiverAxis to retrieve the RiverAxis of a given river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1230
diff changeset
4 import java.util.List;
1230
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
5
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
6 import javax.persistence.Column;
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7 import javax.persistence.Entity;
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8 import javax.persistence.Id;
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9 import javax.persistence.JoinColumn;
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10 import javax.persistence.OneToOne;
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import javax.persistence.Table;
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12
1231
22eea1c9e907 Added a function in RiverAxis to retrieve the RiverAxis of a given river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1230
diff changeset
13 import org.hibernate.Session;
22eea1c9e907 Added a function in RiverAxis to retrieve the RiverAxis of a given river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1230
diff changeset
14 import org.hibernate.Query;
1230
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 import org.hibernate.annotations.Type;
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17 import com.vividsolutions.jts.geom.LineString;
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18
1231
22eea1c9e907 Added a function in RiverAxis to retrieve the RiverAxis of a given river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1230
diff changeset
19 import de.intevation.flys.backend.SessionHolder;
22eea1c9e907 Added a function in RiverAxis to retrieve the RiverAxis of a given river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1230
diff changeset
20
1230
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21
2375
61cb16549eb1 Modified the signature of RiverAxis.getRiverAxis() which now returns a list of RiverAxis objects instead of a single instance.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1231
diff changeset
22 /**
61cb16549eb1 Modified the signature of RiverAxis.getRiverAxis() which now returns a list of RiverAxis objects instead of a single instance.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1231
diff changeset
23 * There is a modeling problem with the RiverAxis. The initial idea was, that a
61cb16549eb1 Modified the signature of RiverAxis.getRiverAxis() which now returns a list of RiverAxis objects instead of a single instance.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1231
diff changeset
24 * river can have a riveraxis that consist of exact one geometry. Now, it has
61cb16549eb1 Modified the signature of RiverAxis.getRiverAxis() which now returns a list of RiverAxis objects instead of a single instance.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1231
diff changeset
25 * turned out, that a single geometry is not enough for a riveraxis (arm of a
61cb16549eb1 Modified the signature of RiverAxis.getRiverAxis() which now returns a list of RiverAxis objects instead of a single instance.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1231
diff changeset
26 * river, inflows, ...). As workaround, we now expect, that a river can just
61cb16549eb1 Modified the signature of RiverAxis.getRiverAxis() which now returns a list of RiverAxis objects instead of a single instance.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1231
diff changeset
27 * have a single riveraxis.
61cb16549eb1 Modified the signature of RiverAxis.getRiverAxis() which now returns a list of RiverAxis objects instead of a single instance.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1231
diff changeset
28 */
1230
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 @Entity
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 @Table(name = "river_axes")
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 public class RiverAxis
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 implements Serializable
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33 {
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 private Integer id;
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 private Integer kind;
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 private River river;
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 private LineString geom;
3959
6b1ca6ec4e3c Added a new method to RiverAxis to query a special kind of river axes (default, official, outsourced).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2375
diff changeset
38
6b1ca6ec4e3c Added a new method to RiverAxis to query a special kind of river axes (default, official, outsourced).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2375
diff changeset
39 public static final int DEFAULT_KIND = 0;
6b1ca6ec4e3c Added a new method to RiverAxis to query a special kind of river axes (default, official, outsourced).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2375
diff changeset
40
6b1ca6ec4e3c Added a new method to RiverAxis to query a special kind of river axes (default, official, outsourced).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2375
diff changeset
41 public static final int KIND_OFFICIAL = 1;
6b1ca6ec4e3c Added a new method to RiverAxis to query a special kind of river axes (default, official, outsourced).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2375
diff changeset
42 public static final int KIND_OUTSOURCED = 2;
1230
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 public RiverAxis() {
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 }
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 @Id
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 @Column(name = "id")
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 public Integer getId() {
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 return id;
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 }
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 public void setId(Integer id) {
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 this.id = id;
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 }
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 @OneToOne
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 @JoinColumn(name = "river_id")
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62 public River getRiver() {
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63 return river;
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 }
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 public void setRiver(River river) {
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 this.river = river;
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 }
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 @Column(name = "kind")
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 public Integer getKind() {
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74 return kind;
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 }
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 public void setKind(Integer kind) {
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 this.kind = kind;
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 }
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 @Column(name = "geom")
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 @Type(type = "org.hibernatespatial.GeometryUserType")
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85 public LineString getGeom() {
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86 return geom;
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
87 }
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
90 public void setGeom(LineString geom) {
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
91 this.geom = geom;
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
92 }
1231
22eea1c9e907 Added a function in RiverAxis to retrieve the RiverAxis of a given river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1230
diff changeset
93
22eea1c9e907 Added a function in RiverAxis to retrieve the RiverAxis of a given river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1230
diff changeset
94
2375
61cb16549eb1 Modified the signature of RiverAxis.getRiverAxis() which now returns a list of RiverAxis objects instead of a single instance.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1231
diff changeset
95 public static List<RiverAxis> getRiverAxis(String river) {
3959
6b1ca6ec4e3c Added a new method to RiverAxis to query a special kind of river axes (default, official, outsourced).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2375
diff changeset
96 return getRiverAxis(river, DEFAULT_KIND);
6b1ca6ec4e3c Added a new method to RiverAxis to query a special kind of river axes (default, official, outsourced).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2375
diff changeset
97 }
6b1ca6ec4e3c Added a new method to RiverAxis to query a special kind of river axes (default, official, outsourced).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2375
diff changeset
98
6b1ca6ec4e3c Added a new method to RiverAxis to query a special kind of river axes (default, official, outsourced).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2375
diff changeset
99 public static List<RiverAxis> getRiverAxis(String river, int kind) {
1231
22eea1c9e907 Added a function in RiverAxis to retrieve the RiverAxis of a given river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1230
diff changeset
100 Session session = SessionHolder.HOLDER.get();
22eea1c9e907 Added a function in RiverAxis to retrieve the RiverAxis of a given river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1230
diff changeset
101
22eea1c9e907 Added a function in RiverAxis to retrieve the RiverAxis of a given river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1230
diff changeset
102 Query query = session.createQuery(
3959
6b1ca6ec4e3c Added a new method to RiverAxis to query a special kind of river axes (default, official, outsourced).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2375
diff changeset
103 "from RiverAxis where river.name =:river AND kind =:kind");
1231
22eea1c9e907 Added a function in RiverAxis to retrieve the RiverAxis of a given river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1230
diff changeset
104 query.setParameter("river", river);
3959
6b1ca6ec4e3c Added a new method to RiverAxis to query a special kind of river axes (default, official, outsourced).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2375
diff changeset
105 query.setParameter("kind", kind);
1231
22eea1c9e907 Added a function in RiverAxis to retrieve the RiverAxis of a given river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1230
diff changeset
106
22eea1c9e907 Added a function in RiverAxis to retrieve the RiverAxis of a given river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1230
diff changeset
107 List<RiverAxis> list = query.list();
22eea1c9e907 Added a function in RiverAxis to retrieve the RiverAxis of a given river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1230
diff changeset
108
2375
61cb16549eb1 Modified the signature of RiverAxis.getRiverAxis() which now returns a list of RiverAxis objects instead of a single instance.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1231
diff changeset
109 return list.isEmpty() ? null : list;
1231
22eea1c9e907 Added a function in RiverAxis to retrieve the RiverAxis of a given river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1230
diff changeset
110 }
1230
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
111 }
e2deda3b77a7 Introduced support for FLYS spatial data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
112 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org