annotate backend/src/main/java/org/dive4elements/river/model/Wst.java @ 8813:8abe94270f32

Do not filter cross section points for display. Filtering coordinates outside an extent probably aimed at omitting outliers from the diagram. This is obsolete and had the side effect of filtering the important point at x = 0.
author Tom Gottfried <tom@intevation.de>
date Fri, 28 Apr 2017 19:03:56 +0200
parents 9d2e69f971f5
children ff27548d078c
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: 5850
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: 5850
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
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 import java.io.Serializable;
468
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
12 import java.math.BigDecimal;
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
13 import java.util.List;
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14
171
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
15 import javax.persistence.Entity;
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
16 import javax.persistence.Id;
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
17 import javax.persistence.Table;
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
18 import javax.persistence.GeneratedValue;
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
19 import javax.persistence.Column;
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
20 import javax.persistence.SequenceGenerator;
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
21 import javax.persistence.GenerationType;
174
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 172
diff changeset
22 import javax.persistence.JoinColumn;
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 172
diff changeset
23 import javax.persistence.OneToOne;
475
9aa0eddc5221 Add forgotten one to many relation Wst -> WstColumn.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 469
diff changeset
24 import javax.persistence.OneToMany;
171
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
25
468
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
26 import org.apache.log4j.Logger;
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
27
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
28 import org.hibernate.Session;
2374
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
29 import org.hibernate.SQLQuery;
468
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
30 import org.hibernate.Query;
2374
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
31 import org.hibernate.type.StandardBasicTypes;
468
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
32
5829
18619c1e7c2a Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5828
diff changeset
33 import org.dive4elements.river.backend.SessionHolder;
468
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
34
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
35
6555
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5992
diff changeset
36 /** DB-mapped WST. */
171
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
37 @Entity
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
38 @Table(name = "wsts")
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
39 public class Wst
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 {
8200
9d2e69f971f5 sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6555
diff changeset
42 private static Logger log = Logger.getLogger(Wst.class);
468
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
43
171
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
44 private Integer id;
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
45 private River river;
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
46 private String description;
467
c8c09e31cdb8 Added new column 'kind' in discharge tables and wst to distinguish between different types.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 201
diff changeset
47 private Integer kind;
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
48
475
9aa0eddc5221 Add forgotten one to many relation Wst -> WstColumn.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 469
diff changeset
49 private List<WstColumn> columns;
9aa0eddc5221 Add forgotten one to many relation Wst -> WstColumn.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 469
diff changeset
50
2374
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
51
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
52 public static final String SQL_SELECT_MINMAX =
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
53 "select min(q) as minQ, max(q) as maxQ from wst_q_values " +
2794
3c26e16ae6c2 Fix or workaround flys/issue632, avoid NPE.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2374
diff changeset
54 "where wst_id = :wst and not (a > :km or b < :km)";
2374
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
55
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
56 public Wst() {
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
57 }
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
58
201
3169b559ca3c Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 174
diff changeset
59 public Wst(River river, String description) {
2347
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2346
diff changeset
60 this(river, description, 0);
467
c8c09e31cdb8 Added new column 'kind' in discharge tables and wst to distinguish between different types.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 201
diff changeset
61 }
c8c09e31cdb8 Added new column 'kind' in discharge tables and wst to distinguish between different types.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 201
diff changeset
62
2347
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2346
diff changeset
63 public Wst(River river, String description, Integer kind) {
201
3169b559ca3c Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 174
diff changeset
64 this.river = river;
3169b559ca3c Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 174
diff changeset
65 this.description = description;
467
c8c09e31cdb8 Added new column 'kind' in discharge tables and wst to distinguish between different types.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 201
diff changeset
66 this.kind = kind;
201
3169b559ca3c Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 174
diff changeset
67 }
3169b559ca3c Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 174
diff changeset
68
171
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
69 @Id
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
70 @SequenceGenerator(
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
71 name = "SEQUENCE_WSTS_ID_SEQ",
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
72 sequenceName = "WSTS_ID_SEQ",
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
73 allocationSize = 1)
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
74 @GeneratedValue(
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
75 strategy = GenerationType.SEQUENCE,
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
76 generator = "SEQUENCE_WSTS_ID_SEQ")
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
77 @Column(name = "id")
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
78 public Integer getId() {
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
79 return id;
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
80 }
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
81
168
86a1bd9cc50e More Hibernate/JPA stuff
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 167
diff changeset
82 public void setId(Integer id) {
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
83 this.id = id;
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
84 }
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
85
174
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 172
diff changeset
86 @OneToOne
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 172
diff changeset
87 @JoinColumn(name = "river_id" )
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 172
diff changeset
88 public River getRiver() {
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 172
diff changeset
89 return river;
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 172
diff changeset
90 }
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 172
diff changeset
91
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
92 public void setRiver(River river) {
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
93 this.river = river;
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
94 }
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
95
172
605320b7df94 Added column annotations for simple fields. TODO: foreign keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
96 @Column(name = "description")
605320b7df94 Added column annotations for simple fields. TODO: foreign keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
97 public String getDescription() {
605320b7df94 Added column annotations for simple fields. TODO: foreign keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
98 return description;
605320b7df94 Added column annotations for simple fields. TODO: foreign keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
99 }
605320b7df94 Added column annotations for simple fields. TODO: foreign keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
100
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
101 public void setDescription(String description) {
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
102 this.description = description;
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
103 }
467
c8c09e31cdb8 Added new column 'kind' in discharge tables and wst to distinguish between different types.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 201
diff changeset
104
c8c09e31cdb8 Added new column 'kind' in discharge tables and wst to distinguish between different types.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 201
diff changeset
105 @Column(name = "kind")
c8c09e31cdb8 Added new column 'kind' in discharge tables and wst to distinguish between different types.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 201
diff changeset
106 public Integer getKind() {
c8c09e31cdb8 Added new column 'kind' in discharge tables and wst to distinguish between different types.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 201
diff changeset
107 return kind;
c8c09e31cdb8 Added new column 'kind' in discharge tables and wst to distinguish between different types.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 201
diff changeset
108 }
c8c09e31cdb8 Added new column 'kind' in discharge tables and wst to distinguish between different types.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 201
diff changeset
109
c8c09e31cdb8 Added new column 'kind' in discharge tables and wst to distinguish between different types.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 201
diff changeset
110 public void setKind(Integer kind) {
c8c09e31cdb8 Added new column 'kind' in discharge tables and wst to distinguish between different types.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 201
diff changeset
111 this.kind = kind;
c8c09e31cdb8 Added new column 'kind' in discharge tables and wst to distinguish between different types.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 201
diff changeset
112 }
468
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
113
475
9aa0eddc5221 Add forgotten one to many relation Wst -> WstColumn.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 469
diff changeset
114 @OneToMany
9aa0eddc5221 Add forgotten one to many relation Wst -> WstColumn.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 469
diff changeset
115 @JoinColumn(name="wst_id")
9aa0eddc5221 Add forgotten one to many relation Wst -> WstColumn.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 469
diff changeset
116 public List<WstColumn> getColumns() {
9aa0eddc5221 Add forgotten one to many relation Wst -> WstColumn.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 469
diff changeset
117 return columns;
9aa0eddc5221 Add forgotten one to many relation Wst -> WstColumn.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 469
diff changeset
118 }
9aa0eddc5221 Add forgotten one to many relation Wst -> WstColumn.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 469
diff changeset
119
9aa0eddc5221 Add forgotten one to many relation Wst -> WstColumn.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 469
diff changeset
120 public void setColumns(List<WstColumn> columns) {
9aa0eddc5221 Add forgotten one to many relation Wst -> WstColumn.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 469
diff changeset
121 this.columns = columns;
9aa0eddc5221 Add forgotten one to many relation Wst -> WstColumn.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 469
diff changeset
122 }
468
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
123
2346
f834b411ca57 Added db table, model class and importer stuff for units.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 475
diff changeset
124
468
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
125 /**
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
126 * Determines the min and max Q values of this WST. The min value is placed
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
127 * in the first field of the resulting array - the max value is placed in
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
128 * the second field.
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
129 *
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
130 * @return the min and max Q values of this WST.
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
131 */
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
132 public double[] determineMinMaxQ() {
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
133 double[] ab = river.determineMinMaxDistance();
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
134 return determineMinMaxQ(new Range(ab[0], ab[1], river));
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
135 }
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
136
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
137
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
138 /**
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
139 * Determines the min and max Q values of this WST in the given range. The
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
140 * min value is placed in the first field of the resulting array - the max
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
141 * value is placed in the second field.
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
142 *
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
143 * @param range The range used for querying the Q values.
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
144 *
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
145 * @return the min and max Q values of this WST.
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
146 */
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
147 public double[] determineMinMaxQ(Range range) {
2372
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
148 if (range != null) {
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
149 return determineMinMaxQ(
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
150 range.getA().doubleValue(),
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
151 range.getB().doubleValue());
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
152 }
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
153
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
154 return null;
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
155 }
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
156
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
157
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
158 /**
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
159 * Determines the min and max Q values of this WST in the given range. The
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
160 * min value is placed in the first field of the resulting array - the max
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
161 * value is placed in the second field.
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
162 *
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
163 * @param fromKm the lower km value.
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
164 * @param toKm the upper km value.
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
165 *
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
166 * @return the min and max Q values of this WST.
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
167 */
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
168 public double[] determineMinMaxQ(double fromKm, double toKm) {
468
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
169 Session session = SessionHolder.HOLDER.get();
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
170
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
171 Query query = session.createQuery(
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
172 "select min(q), max(q) from WstQRange where " +
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
173 " id in " +
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
174 " (select wstQRange.id from WstColumnQRange where " +
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
175 " wstColumn.id in (select id from WstColumn where wst.id = :wst)) " +
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
176 " and range.id in " +
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
177 " (select id from Range where not (a > :end or b < :start))");
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
178
469
b5ca22aae092 Fixed index problem when an empty list is returned.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 468
diff changeset
179 query.setParameter("wst", getId());
2372
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
180 query.setParameter("start", new BigDecimal(fromKm));
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
181 query.setParameter("end", new BigDecimal(toKm));
468
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
182
469
b5ca22aae092 Fixed index problem when an empty list is returned.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 468
diff changeset
183 List<Object []> results = query.list();
468
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
184
469
b5ca22aae092 Fixed index problem when an empty list is returned.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 468
diff changeset
185 if (results.isEmpty()) {
b5ca22aae092 Fixed index problem when an empty list is returned.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 468
diff changeset
186 return null;
b5ca22aae092 Fixed index problem when an empty list is returned.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 468
diff changeset
187 }
b5ca22aae092 Fixed index problem when an empty list is returned.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 468
diff changeset
188
5850
df5d29987df8 Wst: Avoid NPE.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
189 if (results.get(0)[0] == null || results.get(0)[1] == null) {
8200
9d2e69f971f5 sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6555
diff changeset
190 log.warn("Could not process result from min/maxQ query.");
5850
df5d29987df8 Wst: Avoid NPE.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
191 return null;
df5d29987df8 Wst: Avoid NPE.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
192 }
df5d29987df8 Wst: Avoid NPE.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
193
469
b5ca22aae092 Fixed index problem when an empty list is returned.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 468
diff changeset
194 Object [] result = results.get(0);
b5ca22aae092 Fixed index problem when an empty list is returned.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 468
diff changeset
195
b5ca22aae092 Fixed index problem when an empty list is returned.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 468
diff changeset
196 return new double [] {
b5ca22aae092 Fixed index problem when an empty list is returned.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 468
diff changeset
197 ((BigDecimal)result[0]).doubleValue(),
b5ca22aae092 Fixed index problem when an empty list is returned.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 468
diff changeset
198 ((BigDecimal)result[1]).doubleValue() };
468
8d76556c9616 Added methods to retrieve the min and max W and Q values of a Wst and Gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 467
diff changeset
199 }
2374
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
200
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
201
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
202 public double[] determineMinMaxQFree(double km) {
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
203 Session session = SessionHolder.HOLDER.get();
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
204
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
205 SQLQuery sqlQuery = session.createSQLQuery(SQL_SELECT_MINMAX)
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
206 .addScalar("minQ", StandardBasicTypes.DOUBLE)
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
207 .addScalar("maxQ", StandardBasicTypes.DOUBLE);
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
208
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
209 sqlQuery.setInteger("wst", getId());
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
210 sqlQuery.setDouble("km", km);
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
211
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
212 List<Object[]> minmaxQ = sqlQuery.list();
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
213
2794
3c26e16ae6c2 Fix or workaround flys/issue632, avoid NPE.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2374
diff changeset
214
2374
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
215 if (minmaxQ.isEmpty()) {
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
216 return null;
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
217 }
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
218
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
219 Object[] mm = minmaxQ.get(0);
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
220
2794
3c26e16ae6c2 Fix or workaround flys/issue632, avoid NPE.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2374
diff changeset
221 if (mm[0] == null || mm[1] == null) {
8200
9d2e69f971f5 sed -i src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6555
diff changeset
222 log.warn ("No min/max Q for km " + km + " found.");
2794
3c26e16ae6c2 Fix or workaround flys/issue632, avoid NPE.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2374
diff changeset
223 return null;
3c26e16ae6c2 Fix or workaround flys/issue632, avoid NPE.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2374
diff changeset
224 }
3c26e16ae6c2 Fix or workaround flys/issue632, avoid NPE.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2374
diff changeset
225
2374
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
226 return new double[] { (Double) mm[0], (Double) mm[1] };
ab1e642e7c85 Added a new method Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2372
diff changeset
227 }
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
228 }
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
229 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org