annotate backend/src/main/java/org/dive4elements/river/model/River.java @ 6229:3fea9701d58d

Fix gauge determination. If we look upstream ( a > b ) we still have to compare the start value of our range against the gauge and not the end value. The start value is always the relevant value as we handle the direction by checking this against A or B of the gauge. Also: I will never compare doubles with == again. I will never compare doubles with == again. I will never compare doubles with == again. I will never compare doubles with == again. I will never compare doubles with == again.
author Andre Heinecke <aheinecke@intevation.de>
date Thu, 06 Jun 2013 18:23:17 +0200
parents 776229dd5bf7
children 6ff574778491
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;
4262
87c3a3ac6ddf Order MeasurementStations by station km
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4245
diff changeset
29 import javax.persistence.OrderBy;
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
30 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
31 import javax.persistence.Table;
168
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
32
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
33 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
34 import org.hibernate.Session;
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
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
36
168
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
37 @Entity
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
38 @Table(name = "rivers")
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
39 public class River
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
40 implements Serializable
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41 {
768
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 767
diff changeset
42 public static final MathContext PRECISION = new MathContext(6);
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 767
diff changeset
43
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
44 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
45
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
46 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
47 @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
48 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
49 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
50 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
51 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
52 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
53 }
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 };
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
168
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
56 private Integer id;
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
57
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
58 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
59
168
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
60 private String name;
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
61
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
62 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
63
174
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
64 private List<Gauge> gauges;
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
65
4245
6302db90b63f Add MeasurementStation to the River
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3947
diff changeset
66 private List<MeasurementStation> measurementstations;
6302db90b63f Add MeasurementStation to the River
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3947
diff changeset
67
2347
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
68 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
69
168
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
70 @Id
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
71 @SequenceGenerator(
171
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 169
diff changeset
72 name = "SEQUENCE_RIVERS_ID_SEQ",
169
7929f4144d2f Bound Apache Commons DBCP with Hibernate.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
73 sequenceName = "RIVERS_ID_SEQ",
7929f4144d2f Bound Apache Commons DBCP with Hibernate.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
74 allocationSize = 1)
168
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
75 @GeneratedValue(
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
76 strategy = GenerationType.SEQUENCE,
171
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 169
diff changeset
77 generator = "SEQUENCE_RIVERS_ID_SEQ")
168
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
78 @Column(name = "id")
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
79 public Integer getId() {
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
80 return id;
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
81 }
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
82
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
83 public void setId(Integer id) {
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
84 this.id = id;
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
85 }
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
86
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
87 @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
88 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
89 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
90 }
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
91
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
92 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
93 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
94 }
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
168
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
96 @Column(name = "name")
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
97 public String getName() {
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
98 return name;
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
99 }
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
100
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
101 public void setName(String name) {
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
102 this.name = name;
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
103 }
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
104
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
105 @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
106 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
107 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
108 }
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
109
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
110 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
111 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
112 }
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
113
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
114 public River() {
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
115 }
169
7929f4144d2f Bound Apache Commons DBCP with Hibernate.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
116
2347
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
117 public River(String name, Unit wstUnit) {
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
118 this.name = name;
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
119 this.wstUnit = wstUnit;
169
7929f4144d2f Bound Apache Commons DBCP with Hibernate.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
120 }
174
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
121
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
122 @OneToMany
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
123 @JoinColumn(name="river_id")
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
124 public List<Gauge> getGauges() {
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
125 return gauges;
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
126 }
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
127
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
128 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
129 this.gauges = gauges;
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
130 }
188
003ac16812dd Store annotations in backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 174
diff changeset
131
2347
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
132
4245
6302db90b63f Add MeasurementStation to the River
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3947
diff changeset
133 @OneToMany
4262
87c3a3ac6ddf Order MeasurementStations by station km
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4245
diff changeset
134 @OrderBy("station")
4245
6302db90b63f Add MeasurementStation to the River
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3947
diff changeset
135 @JoinColumn(name="river_id")
6302db90b63f Add MeasurementStation to the River
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3947
diff changeset
136 public List<MeasurementStation> getMeasurementStations() {
6302db90b63f Add MeasurementStation to the River
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3947
diff changeset
137 return measurementstations;
6302db90b63f Add MeasurementStation to the River
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3947
diff changeset
138 }
6302db90b63f Add MeasurementStation to the River
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3947
diff changeset
139
6302db90b63f Add MeasurementStation to the River
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3947
diff changeset
140 public void setMeasurementStations(List<MeasurementStation> mstations) {
6302db90b63f Add MeasurementStation to the River
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3947
diff changeset
141 this.measurementstations = mstations;
6302db90b63f Add MeasurementStation to the River
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3947
diff changeset
142 }
6302db90b63f Add MeasurementStation to the River
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3947
diff changeset
143
2347
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
144 @OneToOne
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
145 @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
146 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
147 return wstUnit;
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
148 }
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
149
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
150 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
151 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
152 }
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
153
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
154
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2345
diff changeset
155
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
156 @Override
188
003ac16812dd Store annotations in backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 174
diff changeset
157 public String toString() {
003ac16812dd Store annotations in backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 174
diff changeset
158 return name != null ? name : "";
003ac16812dd Store annotations in backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 174
diff changeset
159 }
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
160
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
161
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
162 /**
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
163 * 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
164 * <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
165 *
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
166 * @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
167 * @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
168 *
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
169 * @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
170 */
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
171 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
172 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
173
756
ca13926b8871 River: Make search for gauges independent of from/to order.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 505
diff changeset
174 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
175
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
176 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
177 "from Gauge where river=:river " +
5992
4c3ccf2b0304 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5880
diff changeset
178 "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
179 "((:b < least(range.a, range.b)) or" +
5992
4c3ccf2b0304 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5880
diff changeset
180 " (: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
181 "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
182 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
183 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
184 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
185
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
186 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
187 }
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
188
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
189 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
190 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
191 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
192 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
193 }
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
194
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
195 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
196
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
197 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
198
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
199 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
200
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
201 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
202 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
203 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
204 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
205
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
206 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
207
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
208 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
209 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
210
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
211 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
212
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
213 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
214 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
215 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
216 }
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 }
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
218
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
219 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
220 }
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
221
767
5572d051347e River: Added method to find gauge by its name.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 764
diff changeset
222 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
223 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
224 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
225 "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
226 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
227 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
228 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
229 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
230 }
5572d051347e River: Added method to find gauge by its name.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 764
diff changeset
231
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
232 public Gauge determineGaugeByPosition(double p) {
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
233 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
234 Query query = session.createQuery(
768
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 767
diff changeset
235 "from Gauge g where river=:river " +
5992
4c3ccf2b0304 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5880
diff changeset
236 "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
237 "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
238 "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
239 query.setParameter("river", this);
768
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 767
diff changeset
240 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
241 List<Gauge> gauges = query.list();
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
242 return gauges.isEmpty() ? null : gauges.get(0);
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
243 }
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
244
757
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
245 public Gauge determineGaugeByStation(double a, double b) {
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
246
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
247 if (a > b) { double t = a; a = b; b = t; }
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
248
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
249 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
250
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
251 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
252 "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
253 "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
254 query.setParameter("river", getId());
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
255 query.setParameter("a", new BigDecimal(a));
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
256 query.setParameter("b", new BigDecimal(b));
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
257
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
258 List<Gauge> gauges = query.list();
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
259 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
260 }
c19d4c643526 River: add method to find gauge by its station position.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
261
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
262 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
263 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
264
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
265 Query query = session.createQuery(
3795
f210432f4383 Fix hibernate query
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3794
diff changeset
266 "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
267 "from Wst as w " +
f210432f4383 Fix hibernate query
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3794
diff changeset
268 "join w.columns as wc " +
f210432f4383 Fix hibernate query
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3794
diff changeset
269 "join wc.columnQRanges as wcqr " +
f210432f4383 Fix hibernate query
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3794
diff changeset
270 "join wcqr.wstQRange as wqr " +
f210432f4383 Fix hibernate query
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3794
diff changeset
271 "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
272
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
273 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
274
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
275 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
276
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
277 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
278
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
279 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
280 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
281 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
282 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
283 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
284 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
285 }
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
286
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
287 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
288 }
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
289
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
290
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
291 /**
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
292 * This method returns the first gauge that is intersected by <i>a</i> and
6106
776229dd5bf7 determineGauge tries now to find the correct Gauge by handling overlapping borders
Andre Heinecke <aheinecke@intevation.de>
parents: 5992
diff changeset
293 * <i>b</i>, but which possibly does not ends with a or starts with b.
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
294 *
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
295 * @param a A start point.
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
296 * @param b An end point.
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
297 *
6106
776229dd5bf7 determineGauge tries now to find the correct Gauge by handling overlapping borders
Andre Heinecke <aheinecke@intevation.de>
parents: 5992
diff changeset
298 * @return the first intersecting gauge that does not border with a or b,
776229dd5bf7 determineGauge tries now to find the correct Gauge by handling overlapping borders
Andre Heinecke <aheinecke@intevation.de>
parents: 5992
diff changeset
299 * the first intersecting gauge if that is impossible.
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
300 */
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
301 public Gauge determineGauge(double a, double b) {
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
302 List<Gauge> gauges = determineGauges(a, b);
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
303
6106
776229dd5bf7 determineGauge tries now to find the correct Gauge by handling overlapping borders
Andre Heinecke <aheinecke@intevation.de>
parents: 5992
diff changeset
304 if (a > b) {
776229dd5bf7 determineGauge tries now to find the correct Gauge by handling overlapping borders
Andre Heinecke <aheinecke@intevation.de>
parents: 5992
diff changeset
305 for (int i = gauges.size() - 1; i >= 0; i--) {
776229dd5bf7 determineGauge tries now to find the correct Gauge by handling overlapping borders
Andre Heinecke <aheinecke@intevation.de>
parents: 5992
diff changeset
306 Gauge g = gauges.get(i);
6229
3fea9701d58d Fix gauge determination.
Andre Heinecke <aheinecke@intevation.de>
parents: 6106
diff changeset
307 if (KM_CMP.compare(g.getRange().getA().doubleValue(), a) == 0)
6106
776229dd5bf7 determineGauge tries now to find the correct Gauge by handling overlapping borders
Andre Heinecke <aheinecke@intevation.de>
parents: 5992
diff changeset
308 continue;
776229dd5bf7 determineGauge tries now to find the correct Gauge by handling overlapping borders
Andre Heinecke <aheinecke@intevation.de>
parents: 5992
diff changeset
309 return g;
776229dd5bf7 determineGauge tries now to find the correct Gauge by handling overlapping borders
Andre Heinecke <aheinecke@intevation.de>
parents: 5992
diff changeset
310 }
776229dd5bf7 determineGauge tries now to find the correct Gauge by handling overlapping borders
Andre Heinecke <aheinecke@intevation.de>
parents: 5992
diff changeset
311 }
776229dd5bf7 determineGauge tries now to find the correct Gauge by handling overlapping borders
Andre Heinecke <aheinecke@intevation.de>
parents: 5992
diff changeset
312
776229dd5bf7 determineGauge tries now to find the correct Gauge by handling overlapping borders
Andre Heinecke <aheinecke@intevation.de>
parents: 5992
diff changeset
313 for (Gauge g: gauges) {
6229
3fea9701d58d Fix gauge determination.
Andre Heinecke <aheinecke@intevation.de>
parents: 6106
diff changeset
314 if (KM_CMP.compare(g.getRange().getB().doubleValue(), a) == 0) {
6106
776229dd5bf7 determineGauge tries now to find the correct Gauge by handling overlapping borders
Andre Heinecke <aheinecke@intevation.de>
parents: 5992
diff changeset
315 continue;
776229dd5bf7 determineGauge tries now to find the correct Gauge by handling overlapping borders
Andre Heinecke <aheinecke@intevation.de>
parents: 5992
diff changeset
316 }
776229dd5bf7 determineGauge tries now to find the correct Gauge by handling overlapping borders
Andre Heinecke <aheinecke@intevation.de>
parents: 5992
diff changeset
317 return g;
776229dd5bf7 determineGauge tries now to find the correct Gauge by handling overlapping borders
Andre Heinecke <aheinecke@intevation.de>
parents: 5992
diff changeset
318 }
776229dd5bf7 determineGauge tries now to find the correct Gauge by handling overlapping borders
Andre Heinecke <aheinecke@intevation.de>
parents: 5992
diff changeset
319
776229dd5bf7 determineGauge tries now to find the correct Gauge by handling overlapping borders
Andre Heinecke <aheinecke@intevation.de>
parents: 5992
diff changeset
320 return null;
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
321 }
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
322
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
323 /**
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
324 * 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
325 * 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
326 * 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
327 *
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
328 * @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
329 */
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
330 public double[] determineMinMaxDistance() {
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
331 List<Gauge> gauges = getGauges();
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
332
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
333 if (gauges == null || gauges.isEmpty()) {
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
334 return null;
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
335 }
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
336
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
337 double minmax[] = new double[] { Double.MAX_VALUE, -Double.MAX_VALUE };
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
338
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
339 for (Gauge g: gauges) {
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
340 Range r = g.getRange();
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
341
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
342 if (r == null) {
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
343 continue;
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
344 }
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
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 a = r.getA().doubleValue();
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
347 if (a < minmax[0]) {
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
348 minmax[0] = a;
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
349 }
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
350 if (a > minmax[1]) {
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
351 minmax[1] = a;
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
352 }
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
353
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
354 BigDecimal bigB = r.getB();
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
355 if (bigB != null) {
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
356 double b = bigB.doubleValue();
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
357 if (b < minmax[0]) {
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
358 minmax[0] = b;
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
359 }
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
360 if (b > minmax[1]) {
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
361 minmax[1] = b;
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
362 }
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
363 }
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
364 }
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
365
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
366 return minmax;
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
367 }
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
368
2384
385170ff7b34 River: (fix) Renamed function which is not a getter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2383
diff changeset
369 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
370 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
371 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
372
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
373 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
374 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
375 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
376 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
377 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
378 }
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
379 }
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
380
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
381 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
382 }
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
383
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
384 }
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
385 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org