annotate backend/src/main/java/org/dive4elements/river/model/NamedMainValue.java @ 8755:30b1ddadf275

(issue1801) Unify reference gauge finding code The basic way as described in the method comment of the determineRefGauge method is now used in the WINFOArtifact, MainValuesService and RiverUtils.getGauge method. RiverUtils.getGauge previously just returned the first gauge found. While this is now a behavior change I believe that it is always more correct then the undeterministic behavior of the previous implmenentation.
author Andre Heinecke <andre.heinecke@intevation.de>
date Wed, 24 Jun 2015 14:07:26 +0200
parents 5910ada51a9f
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: 5844
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: 5844
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;
189
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 import java.io.Serializable;
6344
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5992
diff changeset
12 import java.util.List;
189
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14 import javax.persistence.Entity;
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15 import javax.persistence.Id;
6355
d6ae01d6a7cb Backend: Added one to many getter to fetch the official lines associated with a namend main value.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
16 import javax.persistence.OneToMany;
189
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17 import javax.persistence.Table;
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18 import javax.persistence.GeneratedValue;
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19 import javax.persistence.Column;
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
20 import javax.persistence.SequenceGenerator;
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21 import javax.persistence.GenerationType;
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22 import javax.persistence.OneToOne;
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23 import javax.persistence.JoinColumn;
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24
6344
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5992
diff changeset
25 import org.hibernate.Query;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5992
diff changeset
26 import org.hibernate.Session;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5992
diff changeset
27
189
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28 @Entity
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
29 @Table(name = "named_main_values")
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
30 public class NamedMainValue
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
31 implements Serializable
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
32 {
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
33 private Integer id;
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
34 private String name;
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
35 private MainValueType type;
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
36
6355
d6ae01d6a7cb Backend: Added one to many getter to fetch the official lines associated with a namend main value.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
37 private List<OfficialLine> officialLines;
d6ae01d6a7cb Backend: Added one to many getter to fetch the official lines associated with a namend main value.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
38
189
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
39 public NamedMainValue() {
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
40 }
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41
195
8d3533a03e10 Second part of parsing/storing main values. Should be finished now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 189
diff changeset
42 public NamedMainValue(String name, MainValueType type) {
8d3533a03e10 Second part of parsing/storing main values. Should be finished now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 189
diff changeset
43 this.name = name;
8d3533a03e10 Second part of parsing/storing main values. Should be finished now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 189
diff changeset
44 this.type = type;
8d3533a03e10 Second part of parsing/storing main values. Should be finished now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 189
diff changeset
45 }
8d3533a03e10 Second part of parsing/storing main values. Should be finished now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 189
diff changeset
46
189
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
47 @Id
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
48 @SequenceGenerator(
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
49 name = "SEQUENCE_NAMED_MAIN_VALUES_ID_SEQ",
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
50 sequenceName = "NAMED_MAIN_VALUES_ID_SEQ",
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
51 allocationSize = 1)
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
52 @GeneratedValue(
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
53 strategy = GenerationType.SEQUENCE,
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
54 generator = "SEQUENCE_NAMED_MAIN_VALUES_ID_SEQ")
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
55 @Column(name = "id")
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
56 public Integer getId() {
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
57 return id;
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
58 }
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
59
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
60 public void setId(Integer id) {
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
61 this.id = id;
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
62 }
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
63
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
64 @Column(name = "name")
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
65 public String getName() {
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
66 return name;
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
67 }
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
68
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
69 public void setName(String name) {
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
70 this.name = name;
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
71 }
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
72
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
73 @OneToOne
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
74 @JoinColumn(name = "type_id" )
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
75 public MainValueType getType() {
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
76 return type;
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
77 }
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
78
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
79 public void setType(MainValueType type) {
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
80 this.type = type;
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
81 }
6344
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5992
diff changeset
82
6355
d6ae01d6a7cb Backend: Added one to many getter to fetch the official lines associated with a namend main value.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
83 @OneToMany
d6ae01d6a7cb Backend: Added one to many getter to fetch the official lines associated with a namend main value.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
84 @JoinColumn(name = "named_main_value_id")
d6ae01d6a7cb Backend: Added one to many getter to fetch the official lines associated with a namend main value.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
85 public List<OfficialLine> getOfficialLines() {
d6ae01d6a7cb Backend: Added one to many getter to fetch the official lines associated with a namend main value.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
86 return officialLines;
d6ae01d6a7cb Backend: Added one to many getter to fetch the official lines associated with a namend main value.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
87 }
d6ae01d6a7cb Backend: Added one to many getter to fetch the official lines associated with a namend main value.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
88
d6ae01d6a7cb Backend: Added one to many getter to fetch the official lines associated with a namend main value.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
89 public void setOfficialLines(List<OfficialLine> officialLines) {
d6ae01d6a7cb Backend: Added one to many getter to fetch the official lines associated with a namend main value.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
90 this.officialLines = officialLines;
d6ae01d6a7cb Backend: Added one to many getter to fetch the official lines associated with a namend main value.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
91 }
d6ae01d6a7cb Backend: Added one to many getter to fetch the official lines associated with a namend main value.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
92
6481
5910ada51a9f Reference only Q main values for official lines
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6355
diff changeset
93 public static NamedMainValue fetchByNameAndType(
5910ada51a9f Reference only Q main values for official lines
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6355
diff changeset
94 String name, String type, Session session) {
6344
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5992
diff changeset
95 Query query = session.createQuery(
6481
5910ada51a9f Reference only Q main values for official lines
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6355
diff changeset
96 "from NamedMainValue where name=:name and type.name = :type");
6344
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5992
diff changeset
97 query.setString("name", name);
6481
5910ada51a9f Reference only Q main values for official lines
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6355
diff changeset
98 query.setString("type", type);
6344
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5992
diff changeset
99 List<NamedMainValue> named = query.list();
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5992
diff changeset
100 return named.isEmpty() ? null : named.get(0);
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5992
diff changeset
101 }
189
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
102 }
bc3747a371cc First part of parsing main values.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
103 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org