annotate backend/src/main/java/org/dive4elements/river/model/Wst.java @ 9801:1d7a72a50183 3.2.x tip

Assume Compose V2, consistently
author Tom Gottfried <tom@intevation.de>
date Thu, 23 Nov 2023 10:14:13 +0100
parents 0a5239a1e46e
children
rev   line source
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5992
4c3ccf2b0304 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 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
9726
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8856
diff changeset
26 import org.apache.logging.log4j.Logger;
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8856
diff changeset
27 import org.apache.logging.log4j.LogManager;
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
28
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
29 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
30 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
31 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
32 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
33
5829
18619c1e7c2a Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5828
diff changeset
34 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
35
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
36
6555
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5992
diff changeset
37 /** DB-mapped WST. */
171
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
38 @Entity
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
39 @Table(name = "wsts")
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
40 public class Wst
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41 implements Serializable
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
42 {
9726
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8856
diff changeset
43 private static Logger log = LogManager.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
44
171
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
45 private Integer id;
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
46 private River river;
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
47 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
48 private Integer kind;
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
49
475
9aa0eddc5221 Add forgotten one to many relation Wst -> WstColumn.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 469
diff changeset
50 private List<WstColumn> columns;
9aa0eddc5221 Add forgotten one to many relation Wst -> WstColumn.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 469
diff changeset
51
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
52
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 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
54 "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
55 "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
56
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
57 public Wst() {
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
58 }
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
59
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
60 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
61 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
62 }
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
63
2347
0acf28a3d28a Removed the Unit from Wsts - added a WstUnit column to rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2346
diff changeset
64 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
65 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
66 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
67 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
68 }
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
69
171
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
70 @Id
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
71 @SequenceGenerator(
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
72 name = "SEQUENCE_WSTS_ID_SEQ",
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
73 sequenceName = "WSTS_ID_SEQ",
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
74 allocationSize = 1)
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
75 @GeneratedValue(
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
76 strategy = GenerationType.SEQUENCE,
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
77 generator = "SEQUENCE_WSTS_ID_SEQ")
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
78 @Column(name = "id")
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
79 public Integer getId() {
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
80 return id;
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
81 }
4a83e14f40f9 Added entity and id annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 168
diff changeset
82
168
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
174
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 172
diff changeset
87 @OneToOne
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 172
diff changeset
88 @JoinColumn(name = "river_id" )
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 172
diff changeset
89 public River getRiver() {
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 172
diff changeset
90 return river;
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 172
diff changeset
91 }
249390dd24e7 Added foreign key constraint annotations to model classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 172
diff changeset
92
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
93 public void setRiver(River river) {
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
94 this.river = river;
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
95 }
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
96
172
605320b7df94 Added column annotations for simple fields. TODO: foreign keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
97 @Column(name = "description")
605320b7df94 Added column annotations for simple fields. TODO: foreign keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
98 public String getDescription() {
605320b7df94 Added column annotations for simple fields. TODO: foreign keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
99 return description;
605320b7df94 Added column annotations for simple fields. TODO: foreign keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
100 }
605320b7df94 Added column annotations for simple fields. TODO: foreign keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 171
diff changeset
101
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
102 public void setDescription(String description) {
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
103 this.description = description;
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
104 }
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
105
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 @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
107 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
108 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
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
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 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
112 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
113 }
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
114
475
9aa0eddc5221 Add forgotten one to many relation Wst -> WstColumn.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 469
diff changeset
115 @OneToMany
9aa0eddc5221 Add forgotten one to many relation Wst -> WstColumn.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 469
diff changeset
116 @JoinColumn(name="wst_id")
9aa0eddc5221 Add forgotten one to many relation Wst -> WstColumn.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 469
diff changeset
117 public List<WstColumn> getColumns() {
9aa0eddc5221 Add forgotten one to many relation Wst -> WstColumn.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 469
diff changeset
118 return columns;
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
9aa0eddc5221 Add forgotten one to many relation Wst -> WstColumn.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 469
diff changeset
121 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
122 this.columns = columns;
9aa0eddc5221 Add forgotten one to many relation Wst -> WstColumn.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 469
diff changeset
123 }
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
124
2346
f834b411ca57 Added db table, model class and importer stuff for units.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 475
diff changeset
125
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
126 /**
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 * 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
128 * 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
129 * 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
130 *
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 * @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
132 */
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 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
134 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
135 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
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 /**
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 * 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
141 * 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
142 * 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
143 *
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 * @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
145 *
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 * @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
147 */
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
148 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
149 if (range != null) {
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
150 return determineMinMaxQ(
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
151 range.getA().doubleValue(),
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
152 range.getB().doubleValue());
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
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
155 return null;
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 /**
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
160 * 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
161 * 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
162 * 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
163 *
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
164 * @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
165 * @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
166 *
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
167 * @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
168 */
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
169 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
170 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
171
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 Query query = session.createQuery(
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8842
diff changeset
173 "select min(q), max(q) from WstQRange where "
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8842
diff changeset
174 + "id in "
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8842
diff changeset
175 + " (select wstQRange.id from WstColumnQRange where "
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8842
diff changeset
176 + " wstColumn.id in (select id from WstColumn where wst.id = :wst)) "
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8842
diff changeset
177 + "and range.id in "
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8842
diff changeset
178 + " (select id from Range where not (a > :end or b < :start))");
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
179
469
b5ca22aae092 Fixed index problem when an empty list is returned.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 468
diff changeset
180 query.setParameter("wst", getId());
2372
027736510a30 Added a new method Wst.determineMinMaxQ(double,double).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2347
diff changeset
181 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
182 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
183
469
b5ca22aae092 Fixed index problem when an empty list is returned.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 468
diff changeset
184 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
185
469
b5ca22aae092 Fixed index problem when an empty list is returned.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 468
diff changeset
186 if (results.isEmpty()) {
b5ca22aae092 Fixed index problem when an empty list is returned.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 468
diff changeset
187 return null;
b5ca22aae092 Fixed index problem when an empty list is returned.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 468
diff changeset
188 }
b5ca22aae092 Fixed index problem when an empty list is returned.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 468
diff changeset
189
5850
df5d29987df8 Wst: Avoid NPE.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
190 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
191 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
192 return null;
df5d29987df8 Wst: Avoid NPE.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
193 }
df5d29987df8 Wst: Avoid NPE.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5844
diff changeset
194
469
b5ca22aae092 Fixed index problem when an empty list is returned.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 468
diff changeset
195 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
196
b5ca22aae092 Fixed index problem when an empty list is returned.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 468
diff changeset
197 return new double [] {
b5ca22aae092 Fixed index problem when an empty list is returned.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 468
diff changeset
198 ((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
199 ((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
200 }
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
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
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 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
204 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
205
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 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
207 .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
208 .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
209
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.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
211 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
212
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 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
214
2794
3c26e16ae6c2 Fix or workaround flys/issue632, avoid NPE.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2374
diff changeset
215
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
216 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
217 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
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
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 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
221
2794
3c26e16ae6c2 Fix or workaround flys/issue632, avoid NPE.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2374
diff changeset
222 if (mm[0] == null || mm[1] == null) {
8842
ff27548d078c Whitespace cosmetics.
Tom Gottfried <tom@intevation.de>
parents: 8200
diff changeset
223 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
224 return null;
3c26e16ae6c2 Fix or workaround flys/issue632, avoid NPE.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2374
diff changeset
225 }
3c26e16ae6c2 Fix or workaround flys/issue632, avoid NPE.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2374
diff changeset
226
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
227 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
228 }
167
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
229 }
15d515fe15f5 Added POJOs to be mapped to schema.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
230 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org