annotate backend/src/main/java/org/dive4elements/river/model/River.java @ 8810:dbdb7c9bd51b

Upgrade to new PostgreSQL JDBC-driver. This needs more explicit type mapping but fixes the sometimes occuring error because of unimplemented Jdbc4Connection.isValid().
author Tom Gottfried <tom@intevation.de>
date Tue, 14 Mar 2017 16:27:14 +0100
parents d5917ff74d8a
children c4ce25093953
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: 5880
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: 5880
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;
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10
5829
18619c1e7c2a Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5828
diff changeset
11 import org.dive4elements.river.backend.SessionHolder;
4809
8062b571884d Bugs in generated RiverAxis Mapfile fixed. Now the river axes are drawn by the WMS.
Christian Lins <christian.lins@intevation.de>
parents: 4262
diff changeset
12
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13 import java.io.Serializable;
465
c2c3ad4fda58 Added a method to River that returns the min and max distance of the river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 188
diff changeset
14 import java.math.BigDecimal;
768
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 767
diff changeset
15 import java.math.MathContext;
4809
8062b571884d Bugs in generated RiverAxis Mapfile fixed. Now the river axes are drawn by the WMS.
Christian Lins <christian.lins@intevation.de>
parents: 4262
diff changeset
16 import java.util.Comparator;
8062b571884d Bugs in generated RiverAxis Mapfile fixed. Now the river axes are drawn by the WMS.
Christian Lins <christian.lins@intevation.de>
parents: 4262
diff changeset
17 import java.util.List;
8062b571884d Bugs in generated RiverAxis Mapfile fixed. Now the river axes are drawn by the WMS.
Christian Lins <christian.lins@intevation.de>
parents: 4262
diff changeset
18 import java.util.Map;
8062b571884d Bugs in generated RiverAxis Mapfile fixed. Now the river axes are drawn by the WMS.
Christian Lins <christian.lins@intevation.de>
parents: 4262
diff changeset
19 import java.util.TreeMap;
465
c2c3ad4fda58 Added a method to River that returns the min and max distance of the river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 188
diff changeset
20
4809
8062b571884d Bugs in generated RiverAxis Mapfile fixed. Now the river axes are drawn by the WMS.
Christian Lins <christian.lins@intevation.de>
parents: 4262
diff changeset
21 import javax.persistence.Column;
168
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
22 import javax.persistence.Entity;
4809
8062b571884d Bugs in generated RiverAxis Mapfile fixed. Now the river axes are drawn by the WMS.
Christian Lins <christian.lins@intevation.de>
parents: 4262
diff changeset
23 import javax.persistence.GeneratedValue;
8062b571884d Bugs in generated RiverAxis Mapfile fixed. Now the river axes are drawn by the WMS.
Christian Lins <christian.lins@intevation.de>
parents: 4262
diff changeset
24 import javax.persistence.GenerationType;
168
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
25 import javax.persistence.Id;
4809
8062b571884d Bugs in generated RiverAxis Mapfile fixed. Now the river axes are drawn by the WMS.
Christian Lins <christian.lins@intevation.de>
parents: 4262
diff changeset
26 import javax.persistence.JoinColumn;
174
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
27 import javax.persistence.OneToMany;
2347
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
28 import javax.persistence.OneToOne;
4809
8062b571884d Bugs in generated RiverAxis Mapfile fixed. Now the river axes are drawn by the WMS.
Christian Lins <christian.lins@intevation.de>
parents: 4262
diff changeset
29 import javax.persistence.SequenceGenerator;
8062b571884d Bugs in generated RiverAxis Mapfile fixed. Now the river axes are drawn by the WMS.
Christian Lins <christian.lins@intevation.de>
parents: 4262
diff changeset
30 import javax.persistence.Table;
168
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
31
4809
8062b571884d Bugs in generated RiverAxis Mapfile fixed. Now the river axes are drawn by the WMS.
Christian Lins <christian.lins@intevation.de>
parents: 4262
diff changeset
32 import org.hibernate.Query;
472
1e196c75563b Added a new method to determine the selected gauge of a river based on a start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 465
diff changeset
33 import org.hibernate.Session;
8810
dbdb7c9bd51b Upgrade to new PostgreSQL JDBC-driver.
Tom Gottfried <tom@intevation.de>
parents: 8764
diff changeset
34 import org.hibernate.annotations.Type;
472
1e196c75563b Added a new method to determine the selected gauge of a river based on a start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 465
diff changeset
35
8724
47199406994a (issue1801) Determine gauge at a station always with same tolerance.
Tom Gottfried <tom@intevation.de>
parents: 8683
diff changeset
36 import org.apache.log4j.Logger;
472
1e196c75563b Added a new method to determine the selected gauge of a river based on a start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 465
diff changeset
37
168
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
38 @Entity
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
39 @Table(name = "rivers")
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
40 public class River
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41 implements Serializable
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
42 {
8724
47199406994a (issue1801) Determine gauge at a station always with same tolerance.
Tom Gottfried <tom@intevation.de>
parents: 8683
diff changeset
43 private static Logger log = Logger.getLogger(River.class);
47199406994a (issue1801) Determine gauge at a station always with same tolerance.
Tom Gottfried <tom@intevation.de>
parents: 8683
diff changeset
44
768
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 767
diff changeset
45 public static final MathContext PRECISION = new MathContext(6);
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 767
diff changeset
46
2383
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
47 public static final double EPSILON = 1e-5;
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
48
8724
47199406994a (issue1801) Determine gauge at a station always with same tolerance.
Tom Gottfried <tom@intevation.de>
parents: 8683
diff changeset
49 // Tolerance for determining whether we are at the station of a gauge
47199406994a (issue1801) Determine gauge at a station always with same tolerance.
Tom Gottfried <tom@intevation.de>
parents: 8683
diff changeset
50 public static final double GAUGE_EPSILON = 0.1;
47199406994a (issue1801) Determine gauge at a station always with same tolerance.
Tom Gottfried <tom@intevation.de>
parents: 8683
diff changeset
51
4809
8062b571884d Bugs in generated RiverAxis Mapfile fixed. Now the river axes are drawn by the WMS.
Christian Lins <christian.lins@intevation.de>
parents: 4262
diff changeset
52 public static final Comparator<Double> KM_CMP = new Comparator<Double>() {
2383
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
53 @Override
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
54 public int compare(Double a, Double b) {
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
55 double diff = a - b;
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
56 if (diff < -EPSILON) return -1;
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
57 if (diff > EPSILON) return +1;
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
58 return 0;
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
59 }
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
60 };
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
61
168
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
62 private Integer id;
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
63
3946
948c7289fc42 Backend: Added 'official_number' column to rivers table to model the 'Bundeswasserstrassen Identnummer'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3945
diff changeset
64 private Long officialNumber;
948c7289fc42 Backend: Added 'official_number' column to rivers table to model the 'Bundeswasserstrassen Identnummer'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3945
diff changeset
65
168
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
66 private String name;
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
67
505
ce9c6f05f464 Schema: Added a column which tells if a river counts its km up or downwards.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 488
diff changeset
68 private boolean kmUp;
ce9c6f05f464 Schema: Added a column which tells if a river counts its km up or downwards.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 488
diff changeset
69
7750
6ff574778491 Added model_uuid column to river model.
Raimund Renkert <rrenkert@intevation.de>
parents: 6229
diff changeset
70 private String modelUuid;
6ff574778491 Added model_uuid column to river model.
Raimund Renkert <rrenkert@intevation.de>
parents: 6229
diff changeset
71
174
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
72 private List<Gauge> gauges;
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
73
2347
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
74 private Unit wstUnit;
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
75
8683
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
76 private SeddbName seddbName;
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
77
168
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
78 @Id
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
79 @SequenceGenerator(
171
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 169
diff changeset
80 name = "SEQUENCE_RIVERS_ID_SEQ",
169
7929f4144d2f Bound Apache Commons DBCP with Hibernate.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
81 sequenceName = "RIVERS_ID_SEQ",
7929f4144d2f Bound Apache Commons DBCP with Hibernate.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
82 allocationSize = 1)
168
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
83 @GeneratedValue(
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
84 strategy = GenerationType.SEQUENCE,
171
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 169
diff changeset
85 generator = "SEQUENCE_RIVERS_ID_SEQ")
168
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
86 @Column(name = "id")
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
87 public Integer getId() {
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
88 return id;
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
89 }
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
90
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
91 public void setId(Integer id) {
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
92 this.id = id;
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
93 }
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
94
3946
948c7289fc42 Backend: Added 'official_number' column to rivers table to model the 'Bundeswasserstrassen Identnummer'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3945
diff changeset
95 @Column(name = "official_number")
948c7289fc42 Backend: Added 'official_number' column to rivers table to model the 'Bundeswasserstrassen Identnummer'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3945
diff changeset
96 public Long getOfficialNumber() {
948c7289fc42 Backend: Added 'official_number' column to rivers table to model the 'Bundeswasserstrassen Identnummer'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3945
diff changeset
97 return officialNumber;
948c7289fc42 Backend: Added 'official_number' column to rivers table to model the 'Bundeswasserstrassen Identnummer'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3945
diff changeset
98 }
948c7289fc42 Backend: Added 'official_number' column to rivers table to model the 'Bundeswasserstrassen Identnummer'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3945
diff changeset
99
948c7289fc42 Backend: Added 'official_number' column to rivers table to model the 'Bundeswasserstrassen Identnummer'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3945
diff changeset
100 public void setOfficialNumber(Long officialNumber) {
948c7289fc42 Backend: Added 'official_number' column to rivers table to model the 'Bundeswasserstrassen Identnummer'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3945
diff changeset
101 this.officialNumber = officialNumber;
948c7289fc42 Backend: Added 'official_number' column to rivers table to model the 'Bundeswasserstrassen Identnummer'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3945
diff changeset
102 }
948c7289fc42 Backend: Added 'official_number' column to rivers table to model the 'Bundeswasserstrassen Identnummer'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3945
diff changeset
103
168
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
104 @Column(name = "name")
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
105 public String getName() {
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
106 return name;
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
107 }
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
108
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
109 public void setName(String name) {
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
110 this.name = name;
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
111 }
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
112
8810
dbdb7c9bd51b Upgrade to new PostgreSQL JDBC-driver.
Tom Gottfried <tom@intevation.de>
parents: 8764
diff changeset
113 @Type(type="numeric_boolean")
505
ce9c6f05f464 Schema: Added a column which tells if a river counts its km up or downwards.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 488
diff changeset
114 @Column(name = "km_up")
ce9c6f05f464 Schema: Added a column which tells if a river counts its km up or downwards.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 488
diff changeset
115 public boolean getKmUp() {
ce9c6f05f464 Schema: Added a column which tells if a river counts its km up or downwards.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 488
diff changeset
116 return kmUp;
ce9c6f05f464 Schema: Added a column which tells if a river counts its km up or downwards.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 488
diff changeset
117 }
ce9c6f05f464 Schema: Added a column which tells if a river counts its km up or downwards.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 488
diff changeset
118
ce9c6f05f464 Schema: Added a column which tells if a river counts its km up or downwards.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 488
diff changeset
119 public void setKmUp(boolean kmUp) {
ce9c6f05f464 Schema: Added a column which tells if a river counts its km up or downwards.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 488
diff changeset
120 this.kmUp = kmUp;
ce9c6f05f464 Schema: Added a column which tells if a river counts its km up or downwards.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 488
diff changeset
121 }
ce9c6f05f464 Schema: Added a column which tells if a river counts its km up or downwards.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 488
diff changeset
122
7750
6ff574778491 Added model_uuid column to river model.
Raimund Renkert <rrenkert@intevation.de>
parents: 6229
diff changeset
123 @Column(name = "model_uuid")
6ff574778491 Added model_uuid column to river model.
Raimund Renkert <rrenkert@intevation.de>
parents: 6229
diff changeset
124 public String getModelUuid() {
6ff574778491 Added model_uuid column to river model.
Raimund Renkert <rrenkert@intevation.de>
parents: 6229
diff changeset
125 return this.modelUuid;
6ff574778491 Added model_uuid column to river model.
Raimund Renkert <rrenkert@intevation.de>
parents: 6229
diff changeset
126 }
6ff574778491 Added model_uuid column to river model.
Raimund Renkert <rrenkert@intevation.de>
parents: 6229
diff changeset
127
6ff574778491 Added model_uuid column to river model.
Raimund Renkert <rrenkert@intevation.de>
parents: 6229
diff changeset
128 public void setModelUuid(String modelUuid) {
6ff574778491 Added model_uuid column to river model.
Raimund Renkert <rrenkert@intevation.de>
parents: 6229
diff changeset
129 this.modelUuid = modelUuid;
6ff574778491 Added model_uuid column to river model.
Raimund Renkert <rrenkert@intevation.de>
parents: 6229
diff changeset
130 }
6ff574778491 Added model_uuid column to river model.
Raimund Renkert <rrenkert@intevation.de>
parents: 6229
diff changeset
131
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
132 public River() {
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
133 }
169
7929f4144d2f Bound Apache Commons DBCP with Hibernate.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
134
7750
6ff574778491 Added model_uuid column to river model.
Raimund Renkert <rrenkert@intevation.de>
parents: 6229
diff changeset
135 public River(String name, Unit wstUnit, String modelUuid) {
6ff574778491 Added model_uuid column to river model.
Raimund Renkert <rrenkert@intevation.de>
parents: 6229
diff changeset
136 this.name = name;
6ff574778491 Added model_uuid column to river model.
Raimund Renkert <rrenkert@intevation.de>
parents: 6229
diff changeset
137 this.modelUuid = modelUuid;
6ff574778491 Added model_uuid column to river model.
Raimund Renkert <rrenkert@intevation.de>
parents: 6229
diff changeset
138 this.wstUnit = wstUnit;
169
7929f4144d2f Bound Apache Commons DBCP with Hibernate.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
139 }
174
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
140
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
141 @OneToMany
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
142 @JoinColumn(name="river_id")
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
143 public List<Gauge> getGauges() {
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
144 return gauges;
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
145 }
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
146
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
147 public void setGauges(List<Gauge> gauges) {
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
148 this.gauges = gauges;
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
149 }
188
003ac16812dd Store annotations in backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 174
diff changeset
150
2347
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
151 @OneToOne
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
152 @JoinColumn(name = "wst_unit_id" )
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
153 public Unit getWstUnit() {
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
154 return wstUnit;
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
155 }
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
156
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
157 public void setWstUnit(Unit wstUnit) {
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
158 this.wstUnit = wstUnit;
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
159 }
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
160
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
161
8683
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
162 /**
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
163 * Get alternative seddb name.
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
164 *
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
165 * This is the name should be used in seddb queries
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
166 * and might differ from "our" backend db name.
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
167 *
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
168 * @return The name River in the seddb.
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
169 */
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
170 public String nameForSeddb() {
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
171 SeddbName alt = getSeddbName();
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
172 if (alt == null) {
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
173 return getName();
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
174 }
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
175 return alt.getName();
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
176 }
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
177
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
178
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
179 @OneToOne
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
180 @JoinColumn(name = "seddb_name_id" )
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
181 public SeddbName getSeddbName() {
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
182 return seddbName;
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
183 }
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
184
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
185 public void setSeddbName(SeddbName name) {
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
186 this.seddbName = name;
cfafe5764509 (issue 1796) Scheme change! Add model for seddb_name lookup table.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8424
diff changeset
187 }
2347
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
188
4809
8062b571884d Bugs in generated RiverAxis Mapfile fixed. Now the river axes are drawn by the WMS.
Christian Lins <christian.lins@intevation.de>
parents: 4262
diff changeset
189 @Override
188
003ac16812dd Store annotations in backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 174
diff changeset
190 public String toString() {
003ac16812dd Store annotations in backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 174
diff changeset
191 return name != null ? name : "";
003ac16812dd Store annotations in backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 174
diff changeset
192 }
465
c2c3ad4fda58 Added a method to River that returns the min and max distance of the river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 188
diff changeset
193
472
1e196c75563b Added a new method to determine the selected gauge of a river based on a start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 465
diff changeset
194
1e196c75563b Added a new method to determine the selected gauge of a river based on a start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 465
diff changeset
195 /**
488
b316d2106598 River got a new method that returns all gauges intersected by a given start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 472
diff changeset
196 * This method returns the gauges that intersect with <i>a</i> and
b316d2106598 River got a new method that returns all gauges intersected by a given start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 472
diff changeset
197 * <i>b</i>,
b316d2106598 River got a new method that returns all gauges intersected by a given start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 472
diff changeset
198 *
b316d2106598 River got a new method that returns all gauges intersected by a given start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 472
diff changeset
199 * @param a A start point.
b316d2106598 River got a new method that returns all gauges intersected by a given start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 472
diff changeset
200 * @param b An end point.
b316d2106598 River got a new method that returns all gauges intersected by a given start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 472
diff changeset
201 *
b316d2106598 River got a new method that returns all gauges intersected by a given start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 472
diff changeset
202 * @return the intersecting gauges.
b316d2106598 River got a new method that returns all gauges intersected by a given start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 472
diff changeset
203 */
b316d2106598 River got a new method that returns all gauges intersected by a given start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 472
diff changeset
204 public List<Gauge> determineGauges(double a, double b) {
b316d2106598 River got a new method that returns all gauges intersected by a given start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 472
diff changeset
205 Session session = SessionHolder.HOLDER.get();
b316d2106598 River got a new method that returns all gauges intersected by a given start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 472
diff changeset
206
756
ca13926b8871 River: Make search for gauges independent of from/to order.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 505
diff changeset
207 if (a > b) { double t = a; a = b; b = t; }
ca13926b8871 River: Make search for gauges independent of from/to order.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 505
diff changeset
208
488
b316d2106598 River got a new method that returns all gauges intersected by a given start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 472
diff changeset
209 Query query = session.createQuery(
b316d2106598 River got a new method that returns all gauges intersected by a given start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 472
diff changeset
210 "from Gauge where river=:river " +
5992
4c3ccf2b0304 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5880
diff changeset
211 "and not " +
5880
1f52b2bff737 Another part of flys/issue1247: Now the main values are determined right if the gauge limits are in abitrary order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5878
diff changeset
212 "((:b < least(range.a, range.b)) or" +
5992
4c3ccf2b0304 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5880
diff changeset
213 " (:a > greatest(range.a, range.b)))" +
5880
1f52b2bff737 Another part of flys/issue1247: Now the main values are determined right if the gauge limits are in abitrary order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5878
diff changeset
214 "order by a");
488
b316d2106598 River got a new method that returns all gauges intersected by a given start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 472
diff changeset
215 query.setParameter("river", this);
769
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
216 query.setParameter("a", new BigDecimal(a, PRECISION));
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
217 query.setParameter("b", new BigDecimal(b, PRECISION));
488
b316d2106598 River got a new method that returns all gauges intersected by a given start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 472
diff changeset
218
b316d2106598 River got a new method that returns all gauges intersected by a given start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 472
diff changeset
219 return query.list();
b316d2106598 River got a new method that returns all gauges intersected by a given start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 472
diff changeset
220 }
b316d2106598 River got a new method that returns all gauges intersected by a given start and end point.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 472
diff changeset
221
769
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
222 public Gauge maxOverlap(double a, double b) {
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
223 List<Gauge> gauges = determineGauges(a, b);
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
224 if (gauges == null) {
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
225 return null;
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
226 }
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
227
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
228 if (a > b) { double t = a; a = b; b = t; }
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
229
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
230 double max = -Double.MAX_VALUE;
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
231
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
232 Gauge result = null;
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
233
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
234 for (Gauge gauge: gauges) {
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
235 Range r = gauge.getRange();
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
236 double c = r.getA().doubleValue();
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
237 double d = r.getB().doubleValue();
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
238
5878
a7b56219b362 Partial fix for flys/issue1247: When trying to find gauges take care of the fact that start and end position are in abitrary order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5844
diff changeset
239 if (c > d) { double t = c; c = d; d = t; }
a7b56219b362 Partial fix for flys/issue1247: When trying to find gauges take care of the fact that start and end position are in abitrary order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5844
diff changeset
240
769
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
241 double start = c >= a ? c : a;
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
242 double stop = d <= b ? d : b;
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
243
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
244 double length = stop - start;
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
245
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
246 if (length > max) {
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
247 max = length;
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
248 result = gauge;
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
249 }
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
250 }
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
251
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
252 return result;
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
253 }
321b9e480f72 Added a method to river to find the gauge with the max overlap with a given interval.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 768
diff changeset
254
767
5572d051347e River: Added method to find gauge by its name.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 764
diff changeset
255 public Gauge determineGaugeByName(String name) {
5572d051347e River: Added method to find gauge by its name.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 764
diff changeset
256 Session session = SessionHolder.HOLDER.get();
5572d051347e River: Added method to find gauge by its name.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 764
diff changeset
257 Query query = session.createQuery(
5572d051347e River: Added method to find gauge by its name.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 764
diff changeset
258 "from Gauge where river=:river and name=:name");
5572d051347e River: Added method to find gauge by its name.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 764
diff changeset
259 query.setParameter("river", this);
5572d051347e River: Added method to find gauge by its name.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 764
diff changeset
260 query.setParameter("name", name);
5572d051347e River: Added method to find gauge by its name.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 764
diff changeset
261 List<Gauge> gauges = query.list();
5572d051347e River: Added method to find gauge by its name.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 764
diff changeset
262 return gauges.isEmpty() ? null : gauges.get(0);
5572d051347e River: Added method to find gauge by its name.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 764
diff changeset
263 }
5572d051347e River: Added method to find gauge by its name.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 764
diff changeset
264
764
e09f00ecb915 river model: Added method to find gauge by a position lying in its range.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 757
diff changeset
265 public Gauge determineGaugeByPosition(double p) {
8727
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
266 // Per default, we prefer the gauge downstream
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
267 return determineGaugeByPosition(p, getKmUp());
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
268 }
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
269
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
270 /**
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
271 * @param p Station on this river for which the gauge is searched
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
272 * @param kmLower At boundary of two gauge ranges, should gauge at lower
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
273 * km be returned?
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
274 */
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
275 public Gauge determineGaugeByPosition(double p, boolean kmLower) {
764
e09f00ecb915 river model: Added method to find gauge by a position lying in its range.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 757
diff changeset
276 Session session = SessionHolder.HOLDER.get();
e09f00ecb915 river model: Added method to find gauge by a position lying in its range.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 757
diff changeset
277 Query query = session.createQuery(
768
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 767
diff changeset
278 "from Gauge g where river=:river " +
5992
4c3ccf2b0304 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5880
diff changeset
279 "and :p between " +
5878
a7b56219b362 Partial fix for flys/issue1247: When trying to find gauges take care of the fact that start and end position are in abitrary order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5844
diff changeset
280 "least(g.range.a, g.range.b) and " +
a7b56219b362 Partial fix for flys/issue1247: When trying to find gauges take care of the fact that start and end position are in abitrary order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5844
diff changeset
281 "greatest(g.range.a, g.range.b)");
764
e09f00ecb915 river model: Added method to find gauge by a position lying in its range.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 757
diff changeset
282 query.setParameter("river", this);
768
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 767
diff changeset
283 query.setParameter("p", new BigDecimal(p, PRECISION));
764
e09f00ecb915 river model: Added method to find gauge by a position lying in its range.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 757
diff changeset
284 List<Gauge> gauges = query.list();
8727
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
285 if (gauges.isEmpty()) {
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
286 return null;
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
287 }
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
288 if (gauges.size() == 1) {
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
289 return gauges.get(0);
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
290 }
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
291 if (gauges.size() > 2) {
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
292 // TODO: database schema should prevent this.
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
293 log.warn("More than two gauge ranges overlap km " + p +
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
294 ". Returning arbitrary result.");
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
295 }
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
296 Gauge g0 = gauges.get(0);
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
297 Gauge g1 = gauges.get(1);
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
298 if (kmLower) {
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
299 return
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
300 g0.getStation().doubleValue() < g1.getStation().doubleValue()
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
301 ? g0
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
302 : g1;
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
303 }
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
304 return g0.getStation().doubleValue() > g1.getStation().doubleValue()
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
305 ? g0
20b543616e6d (issue1801) Return defined gauge at limit between two gauge ranges.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
306 : g1;
764
e09f00ecb915 river model: Added method to find gauge by a position lying in its range.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 757
diff changeset
307 }
e09f00ecb915 river model: Added method to find gauge by a position lying in its range.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 757
diff changeset
308
757
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
309
8724
47199406994a (issue1801) Determine gauge at a station always with same tolerance.
Tom Gottfried <tom@intevation.de>
parents: 8683
diff changeset
310 /**
47199406994a (issue1801) Determine gauge at a station always with same tolerance.
Tom Gottfried <tom@intevation.de>
parents: 8683
diff changeset
311 * @param s station at which the gauge is requested.
47199406994a (issue1801) Determine gauge at a station always with same tolerance.
Tom Gottfried <tom@intevation.de>
parents: 8683
diff changeset
312 * @return Gauge within tolerance at given station. null if there is none.
47199406994a (issue1801) Determine gauge at a station always with same tolerance.
Tom Gottfried <tom@intevation.de>
parents: 8683
diff changeset
313 */
47199406994a (issue1801) Determine gauge at a station always with same tolerance.
Tom Gottfried <tom@intevation.de>
parents: 8683
diff changeset
314 public Gauge determineGaugeAtStation(double s) {
757
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
315 Session session = SessionHolder.HOLDER.get();
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
316
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
317 Query query = session.createQuery(
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
318 "from Gauge where river.id=:river " +
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
319 "and station between :a and :b");
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
320 query.setParameter("river", getId());
8724
47199406994a (issue1801) Determine gauge at a station always with same tolerance.
Tom Gottfried <tom@intevation.de>
parents: 8683
diff changeset
321 query.setParameter("a", new BigDecimal(s - GAUGE_EPSILON));
47199406994a (issue1801) Determine gauge at a station always with same tolerance.
Tom Gottfried <tom@intevation.de>
parents: 8683
diff changeset
322 query.setParameter("b", new BigDecimal(s + GAUGE_EPSILON));
757
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
323
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
324 List<Gauge> gauges = query.list();
8724
47199406994a (issue1801) Determine gauge at a station always with same tolerance.
Tom Gottfried <tom@intevation.de>
parents: 8683
diff changeset
325 if (gauges.size() > 1) {
47199406994a (issue1801) Determine gauge at a station always with same tolerance.
Tom Gottfried <tom@intevation.de>
parents: 8683
diff changeset
326 log.warn("More than one gauge found at km " + s +
47199406994a (issue1801) Determine gauge at a station always with same tolerance.
Tom Gottfried <tom@intevation.de>
parents: 8683
diff changeset
327 " within +-" + GAUGE_EPSILON +
47199406994a (issue1801) Determine gauge at a station always with same tolerance.
Tom Gottfried <tom@intevation.de>
parents: 8683
diff changeset
328 ". Returning arbitrary result.");
47199406994a (issue1801) Determine gauge at a station always with same tolerance.
Tom Gottfried <tom@intevation.de>
parents: 8683
diff changeset
329 }
757
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
330 return gauges.isEmpty() ? null : gauges.get(0);
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
331 }
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
332
3794
42db09d101f3 Add new method determineMinMaxQ to the River class to fetch the mimimum and maximum q values
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2384
diff changeset
333 public double[] determineMinMaxQ() {
42db09d101f3 Add new method determineMinMaxQ to the River class to fetch the mimimum and maximum q values
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2384
diff changeset
334 Session session = SessionHolder.HOLDER.get();
42db09d101f3 Add new method determineMinMaxQ to the River class to fetch the mimimum and maximum q values
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2384
diff changeset
335
42db09d101f3 Add new method determineMinMaxQ to the River class to fetch the mimimum and maximum q values
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2384
diff changeset
336 Query query = session.createQuery(
3795
f210432f4383 Fix hibernate query
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3794
diff changeset
337 "select min(wqr.q) as min, max(wqr.q) as max " +
f210432f4383 Fix hibernate query
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3794
diff changeset
338 "from Wst as w " +
f210432f4383 Fix hibernate query
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3794
diff changeset
339 "join w.columns as wc " +
f210432f4383 Fix hibernate query
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3794
diff changeset
340 "join wc.columnQRanges as wcqr " +
f210432f4383 Fix hibernate query
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3794
diff changeset
341 "join wcqr.wstQRange as wqr " +
f210432f4383 Fix hibernate query
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3794
diff changeset
342 "where w.kind = 0 and river_id = :river");
3794
42db09d101f3 Add new method determineMinMaxQ to the River class to fetch the mimimum and maximum q values
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2384
diff changeset
343
42db09d101f3 Add new method determineMinMaxQ to the River class to fetch the mimimum and maximum q values
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2384
diff changeset
344 query.setParameter("river", getId());
42db09d101f3 Add new method determineMinMaxQ to the River class to fetch the mimimum and maximum q values
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2384
diff changeset
345
5878
a7b56219b362 Partial fix for flys/issue1247: When trying to find gauges take care of the fact that start and end position are in abitrary order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5844
diff changeset
346 double minmax[] = new double[] { Double.MAX_VALUE, -Double.MAX_VALUE };
3794
42db09d101f3 Add new method determineMinMaxQ to the River class to fetch the mimimum and maximum q values
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2384
diff changeset
347
42db09d101f3 Add new method determineMinMaxQ to the River class to fetch the mimimum and maximum q values
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2384
diff changeset
348 List<Object> results = query.list();
42db09d101f3 Add new method determineMinMaxQ to the River class to fetch the mimimum and maximum q values
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2384
diff changeset
349
42db09d101f3 Add new method determineMinMaxQ to the River class to fetch the mimimum and maximum q values
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2384
diff changeset
350 if (!results.isEmpty()) {
42db09d101f3 Add new method determineMinMaxQ to the River class to fetch the mimimum and maximum q values
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2384
diff changeset
351 Object[] arr = (Object[]) results.get(0);
42db09d101f3 Add new method determineMinMaxQ to the River class to fetch the mimimum and maximum q values
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2384
diff changeset
352 BigDecimal minq = (BigDecimal)arr[0];
42db09d101f3 Add new method determineMinMaxQ to the River class to fetch the mimimum and maximum q values
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2384
diff changeset
353 BigDecimal maxq = (BigDecimal)arr[1];
42db09d101f3 Add new method determineMinMaxQ to the River class to fetch the mimimum and maximum q values
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2384
diff changeset
354 minmax[0] = minq.doubleValue();
42db09d101f3 Add new method determineMinMaxQ to the River class to fetch the mimimum and maximum q values
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2384
diff changeset
355 minmax[1] = maxq.doubleValue();
42db09d101f3 Add new method determineMinMaxQ to the River class to fetch the mimimum and maximum q values
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2384
diff changeset
356 }
42db09d101f3 Add new method determineMinMaxQ to the River class to fetch the mimimum and maximum q values
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2384
diff changeset
357
42db09d101f3 Add new method determineMinMaxQ to the River class to fetch the mimimum and maximum q values
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2384
diff changeset
358 return minmax;
42db09d101f3 Add new method determineMinMaxQ to the River class to fetch the mimimum and maximum q values
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2384
diff changeset
359 }
42db09d101f3 Add new method determineMinMaxQ to the River class to fetch the mimimum and maximum q values
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 2384
diff changeset
360
465
c2c3ad4fda58 Added a method to River that returns the min and max distance of the river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 188
diff changeset
361 /**
8755
30b1ddadf275 (issue1801) Unify reference gauge finding code
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8727
diff changeset
362 * Determine reference gauge dependent on direction of calculation
30b1ddadf275 (issue1801) Unify reference gauge finding code
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8727
diff changeset
363 * for a range calculation, otherwise dependent on flow direction.
30b1ddadf275 (issue1801) Unify reference gauge finding code
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8727
diff changeset
364 */
30b1ddadf275 (issue1801) Unify reference gauge finding code
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8727
diff changeset
365 public Gauge determineRefGauge(double[] range, boolean isRange) {
30b1ddadf275 (issue1801) Unify reference gauge finding code
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8727
diff changeset
366 if (isRange) {
30b1ddadf275 (issue1801) Unify reference gauge finding code
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8727
diff changeset
367 return determineGaugeByPosition(
30b1ddadf275 (issue1801) Unify reference gauge finding code
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8727
diff changeset
368 range[0],
30b1ddadf275 (issue1801) Unify reference gauge finding code
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8727
diff changeset
369 range[0] > range[1]);
30b1ddadf275 (issue1801) Unify reference gauge finding code
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8727
diff changeset
370 }
30b1ddadf275 (issue1801) Unify reference gauge finding code
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8727
diff changeset
371 else {
30b1ddadf275 (issue1801) Unify reference gauge finding code
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8727
diff changeset
372 return determineGaugeByPosition(range[0]);
30b1ddadf275 (issue1801) Unify reference gauge finding code
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8727
diff changeset
373 }
30b1ddadf275 (issue1801) Unify reference gauge finding code
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8727
diff changeset
374 }
30b1ddadf275 (issue1801) Unify reference gauge finding code
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8727
diff changeset
375
30b1ddadf275 (issue1801) Unify reference gauge finding code
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8727
diff changeset
376 /**
465
c2c3ad4fda58 Added a method to River that returns the min and max distance of the river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 188
diff changeset
377 * Returns the min and max distance of this river. The first position in the
c2c3ad4fda58 Added a method to River that returns the min and max distance of the river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 188
diff changeset
378 * resulting array contains the min distance, the second position the max
c2c3ad4fda58 Added a method to River that returns the min and max distance of the river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 188
diff changeset
379 * distance.
c2c3ad4fda58 Added a method to River that returns the min and max distance of the river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 188
diff changeset
380 *
c2c3ad4fda58 Added a method to River that returns the min and max distance of the river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 188
diff changeset
381 * @return the min and max distance of this river.
c2c3ad4fda58 Added a method to River that returns the min and max distance of the river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 188
diff changeset
382 */
c2c3ad4fda58 Added a method to River that returns the min and max distance of the river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 188
diff changeset
383 public double[] determineMinMaxDistance() {
8764
d5917ff74d8a (issue1838) Get min and max directly from database.
Tom Gottfried <tom@intevation.de>
parents: 8756
diff changeset
384 Session session = SessionHolder.HOLDER.get();
2373
056b3a5aa181 Removed "NOT NULL" constraint from gauges.range_id because there are gauges which dont have a Gueltigkeitsbereich.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2347
diff changeset
385
8764
d5917ff74d8a (issue1838) Get min and max directly from database.
Tom Gottfried <tom@intevation.de>
parents: 8756
diff changeset
386 Query query = session.createQuery(
d5917ff74d8a (issue1838) Get min and max directly from database.
Tom Gottfried <tom@intevation.de>
parents: 8756
diff changeset
387 "select min(range.a), max(range.b) from Gauge "
d5917ff74d8a (issue1838) Get min and max directly from database.
Tom Gottfried <tom@intevation.de>
parents: 8756
diff changeset
388 + "where river=:river "
d5917ff74d8a (issue1838) Get min and max directly from database.
Tom Gottfried <tom@intevation.de>
parents: 8756
diff changeset
389 + "and range is not null");
d5917ff74d8a (issue1838) Get min and max directly from database.
Tom Gottfried <tom@intevation.de>
parents: 8756
diff changeset
390 query.setParameter("river", this);
d5917ff74d8a (issue1838) Get min and max directly from database.
Tom Gottfried <tom@intevation.de>
parents: 8756
diff changeset
391
d5917ff74d8a (issue1838) Get min and max directly from database.
Tom Gottfried <tom@intevation.de>
parents: 8756
diff changeset
392 List<Object[]> result = query.list();
d5917ff74d8a (issue1838) Get min and max directly from database.
Tom Gottfried <tom@intevation.de>
parents: 8756
diff changeset
393
d5917ff74d8a (issue1838) Get min and max directly from database.
Tom Gottfried <tom@intevation.de>
parents: 8756
diff changeset
394 if (!result.isEmpty()) {
d5917ff74d8a (issue1838) Get min and max directly from database.
Tom Gottfried <tom@intevation.de>
parents: 8756
diff changeset
395 Object[] minMax = result.get(0);
d5917ff74d8a (issue1838) Get min and max directly from database.
Tom Gottfried <tom@intevation.de>
parents: 8756
diff changeset
396 return new double[] { ((BigDecimal)minMax[0]).doubleValue(),
d5917ff74d8a (issue1838) Get min and max directly from database.
Tom Gottfried <tom@intevation.de>
parents: 8756
diff changeset
397 ((BigDecimal)minMax[1]).doubleValue() };
465
c2c3ad4fda58 Added a method to River that returns the min and max distance of the river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 188
diff changeset
398 }
c2c3ad4fda58 Added a method to River that returns the min and max distance of the river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 188
diff changeset
399
8764
d5917ff74d8a (issue1838) Get min and max directly from database.
Tom Gottfried <tom@intevation.de>
parents: 8756
diff changeset
400 return null;
465
c2c3ad4fda58 Added a method to River that returns the min and max distance of the river.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 188
diff changeset
401 }
2383
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
402
2384
385170ff7b34 River: (fix) Renamed function which is not a getter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2383
diff changeset
403 public Map<Double, Double> queryGaugeDatumsKMs() {
2383
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
404 List<Gauge> gauges = getGauges();
5878
a7b56219b362 Partial fix for flys/issue1247: When trying to find gauges take care of the fact that start and end position are in abitrary order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5844
diff changeset
405 Map<Double, Double> result = new TreeMap<Double, Double>(KM_CMP);
2383
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
406
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
407 for (Gauge gauge: gauges) {
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
408 BigDecimal km = gauge.getStation();
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
409 BigDecimal datum = gauge.getDatum();
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
410 if (km != null && datum != null) {
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
411 result.put(km.doubleValue(), datum.doubleValue());
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
412 }
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
413 }
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
414
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
415 return result;
6605dcd6745f Added a method to build a map from gauge stations to the datums of the gauges.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2373
diff changeset
416 }
3944
5fea100c5334 Add a new method to River and Gauge classes to return a http url for additional
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3795
diff changeset
417
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
418 }
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
419 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org