Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/sq/StaticSQFactory.java @ 8605:b0e5a2ce0b09
(issue1750) Fix id handling with oracle
On oracle the id is returned as BigDecimal. This could probably
be done better with hibernate but checking the Object also works.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Fri, 20 Mar 2015 18:42:00 +0100 |
parents | 958342db7a15 |
children | 9bb7f19cbb6f |
rev | line source |
---|---|
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
2 * Software engineering by Intevation GmbH |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
3 * |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
7 */ |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
8 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5500
diff
changeset
|
9 package org.dive4elements.river.artifacts.model.sq; |
5500
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
10 |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
11 import java.math.BigDecimal; |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
12 import java.util.Date; |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
13 import java.util.List; |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
14 |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
15 import net.sf.ehcache.Cache; |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
16 import net.sf.ehcache.Element; |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
17 |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
18 import org.apache.log4j.Logger; |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
19 import org.hibernate.Query; |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
20 import org.hibernate.Session; |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
21 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5500
diff
changeset
|
22 import org.dive4elements.river.artifacts.cache.CacheFactory; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5500
diff
changeset
|
23 import org.dive4elements.river.backend.SessionHolder; |
5500
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
24 |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
25 |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
26 public class StaticSQFactory |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
27 { |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
28 private static final Logger log = |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
29 Logger.getLogger(StaticSQFactory.class); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
30 |
8543
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
31 public static final String SQL_STATIONS_AT_RANGE = |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
32 "SELECT "+ |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
33 "ms.id AS ms_id " + |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
34 "FROM measurement_station ms " + |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
35 "JOIN ranges ra ON ra.id = ms.range_id " + |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
36 "JOIN rivers r ON r.id = ra.river_id " + |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
37 "WHERE r.name = :river AND " + |
8604
958342db7a15
(issue1750) Check for stations according to measurement station range logic
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8545
diff
changeset
|
38 "CASE WHEN r.km_up = 1 AND ra.b IS NOT NULL " + |
958342db7a15
(issue1750) Check for stations according to measurement station range logic
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8545
diff
changeset
|
39 "THEN ra.b " + |
958342db7a15
(issue1750) Check for stations according to measurement station range logic
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8545
diff
changeset
|
40 "ELSE ra.a " + |
958342db7a15
(issue1750) Check for stations according to measurement station range logic
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8545
diff
changeset
|
41 "END = (SELECT " + |
958342db7a15
(issue1750) Check for stations according to measurement station range logic
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8545
diff
changeset
|
42 "CASE WHEN r.km_up = 1 AND ra.b IS NOT NULL " + |
958342db7a15
(issue1750) Check for stations according to measurement station range logic
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8545
diff
changeset
|
43 "THEN ra.b " + |
958342db7a15
(issue1750) Check for stations according to measurement station range logic
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8545
diff
changeset
|
44 "ELSE ra.a " + |
958342db7a15
(issue1750) Check for stations according to measurement station range logic
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8545
diff
changeset
|
45 "END " + |
958342db7a15
(issue1750) Check for stations according to measurement station range logic
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8545
diff
changeset
|
46 "FROM measurement_station ms " + |
958342db7a15
(issue1750) Check for stations according to measurement station range logic
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8545
diff
changeset
|
47 "JOIN ranges ra ON ra.id = ms.range_id " + |
958342db7a15
(issue1750) Check for stations according to measurement station range logic
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8545
diff
changeset
|
48 "JOIN rivers r ON r.id = ra.river_id " + |
958342db7a15
(issue1750) Check for stations according to measurement station range logic
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8545
diff
changeset
|
49 "WHERE r.name = :river AND " + |
958342db7a15
(issue1750) Check for stations according to measurement station range logic
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8545
diff
changeset
|
50 "ms.id = :ms_id)"; |
8543
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
51 |
5500
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
52 public static final String SQL_SQ = |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
53 "SELECT " + |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
54 "sq.description AS description,"+ |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
55 "ti.start_time AS start_time," + |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
56 "ti.stop_time AS stop_time, " + |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
57 "ms.name AS station_name, " + |
8412
17db08570637
SCHEMA CHANGE: removed superfluous columns station and river_id from measurement_stations and adapted other components accordingly.
Tom Gottfried <tom@intevation.de>
parents:
7236
diff
changeset
|
58 "CASE WHEN r.km_up = 1 AND ra.b IS NOT NULL " + |
17db08570637
SCHEMA CHANGE: removed superfluous columns station and river_id from measurement_stations and adapted other components accordingly.
Tom Gottfried <tom@intevation.de>
parents:
7236
diff
changeset
|
59 "THEN ra.b " + |
17db08570637
SCHEMA CHANGE: removed superfluous columns station and river_id from measurement_stations and adapted other components accordingly.
Tom Gottfried <tom@intevation.de>
parents:
7236
diff
changeset
|
60 "ELSE ra.a " + |
17db08570637
SCHEMA CHANGE: removed superfluous columns station and river_id from measurement_stations and adapted other components accordingly.
Tom Gottfried <tom@intevation.de>
parents:
7236
diff
changeset
|
61 "END AS station_km, " + |
5500
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
62 "ms.measurement_type AS measurement_type, " + |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
63 "sqv.parameter AS parameter, " + |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
64 "sqv.a AS a, " + |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
65 "sqv.b AS b, " + |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
66 "sqv.qmax AS qmax " + |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
67 "FROM sq_relation sq " + |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
68 "JOIN time_intervals ti ON ti.id = sq.time_interval_id " + |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
69 "JOIN sq_relation_value sqv ON sqv.sq_relation_id = sq.id " + |
8412
17db08570637
SCHEMA CHANGE: removed superfluous columns station and river_id from measurement_stations and adapted other components accordingly.
Tom Gottfried <tom@intevation.de>
parents:
7236
diff
changeset
|
70 "JOIN measurement_station ms " + |
17db08570637
SCHEMA CHANGE: removed superfluous columns station and river_id from measurement_stations and adapted other components accordingly.
Tom Gottfried <tom@intevation.de>
parents:
7236
diff
changeset
|
71 "ON sqv.measurement_station_id = ms.id " + |
17db08570637
SCHEMA CHANGE: removed superfluous columns station and river_id from measurement_stations and adapted other components accordingly.
Tom Gottfried <tom@intevation.de>
parents:
7236
diff
changeset
|
72 "JOIN ranges ra ON ra.id = ms.range_id " + |
17db08570637
SCHEMA CHANGE: removed superfluous columns station and river_id from measurement_stations and adapted other components accordingly.
Tom Gottfried <tom@intevation.de>
parents:
7236
diff
changeset
|
73 "JOIN rivers r ON r.id = ra.river_id "; |
7236
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
74 |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
75 public static final String STATION_CLAUSE = |
5500
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
76 "WHERE " + |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
77 "r.name = :river " + |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
78 "AND ms.id = :ms_id "; |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
79 |
7236
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
80 public static final String ID_CLAUSE = |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
81 "WHERE " + |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
82 "sqv.id = :dis_id "; |
5500
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
83 |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
84 private StaticSQFactory() { |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
85 } |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
86 |
8543
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
87 /** Get SQ relations for a measurement station's location. |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
88 * Returns all SQRelations for the location of the station and |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
89 * not just for the station. E.g. for a "Geschiebemessstelle" |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
90 * and a "Schwebstoffmesstelle" at the same place.*/ |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
91 public static StaticSQContainer getSQRelationsForLocation( |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
92 String river, |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
93 int measurementStation |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
94 ) { |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
95 Session session = SessionHolder.HOLDER.get(); |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
96 Query query = session.createSQLQuery(SQL_STATIONS_AT_RANGE) |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
97 .setParameter("river", river) |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
98 .setParameter("ms_id", measurementStation); |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
99 /* Take the first container for the station requested. */ |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
100 StaticSQContainer retval = getSQRelations(river, measurementStation); |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
101 |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
102 /* And some others */ |
8605
b0e5a2ce0b09
(issue1750) Fix id handling with oracle
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8604
diff
changeset
|
103 List<Object> list = query.list(); |
8543
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
104 if (list == null || list.isEmpty()) { |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
105 log.error("Did not even find one measurement station. Broken Query?"); |
8604
958342db7a15
(issue1750) Check for stations according to measurement station range logic
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8545
diff
changeset
|
106 log.debug("River: " + river); |
958342db7a15
(issue1750) Check for stations according to measurement station range logic
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8545
diff
changeset
|
107 log.debug("Mesurement station id: " + measurementStation); |
8543
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
108 return retval; |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
109 } |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
110 |
8545
c6723e5b6857
(issue1750) It is an error if there are more then two stations at the same range.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8543
diff
changeset
|
111 if (list.size() > 2) { |
c6723e5b6857
(issue1750) It is an error if there are more then two stations at the same range.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8543
diff
changeset
|
112 log.error("More then two measurement stations found at the same range. Bad Data!"); |
c6723e5b6857
(issue1750) It is an error if there are more then two stations at the same range.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8543
diff
changeset
|
113 return retval; |
c6723e5b6857
(issue1750) It is an error if there are more then two stations at the same range.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8543
diff
changeset
|
114 } |
c6723e5b6857
(issue1750) It is an error if there are more then two stations at the same range.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8543
diff
changeset
|
115 |
8605
b0e5a2ce0b09
(issue1750) Fix id handling with oracle
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8604
diff
changeset
|
116 for (Object stationIdO: list) { |
b0e5a2ce0b09
(issue1750) Fix id handling with oracle
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8604
diff
changeset
|
117 Integer stationId; |
b0e5a2ce0b09
(issue1750) Fix id handling with oracle
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8604
diff
changeset
|
118 if (stationIdO instanceof BigDecimal) { |
b0e5a2ce0b09
(issue1750) Fix id handling with oracle
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8604
diff
changeset
|
119 stationId = ((BigDecimal)stationIdO).intValue(); |
b0e5a2ce0b09
(issue1750) Fix id handling with oracle
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8604
diff
changeset
|
120 } else { |
b0e5a2ce0b09
(issue1750) Fix id handling with oracle
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8604
diff
changeset
|
121 /* If it is something else entirely we die here. */ |
b0e5a2ce0b09
(issue1750) Fix id handling with oracle
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8604
diff
changeset
|
122 stationId = (Integer) stationIdO; |
b0e5a2ce0b09
(issue1750) Fix id handling with oracle
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8604
diff
changeset
|
123 } |
8543
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
124 log.debug("Collecting SQ Relations for: "+ stationId); |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
125 if (stationId == measurementStation) { |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
126 /* Skip the same station */ |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
127 continue; |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
128 } |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
129 |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
130 StaticSQContainer additional = getSQRelations(river, stationId); |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
131 if (additional == null || additional.getSQRelations() == null) { |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
132 continue; |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
133 } |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
134 |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
135 if (retval == null || retval.getSQRelations() == null || retval.getSQRelations().isEmpty()) { |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
136 /* Old one is empty, just take the new one. */ |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
137 retval = additional; |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
138 continue; |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
139 } |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
140 |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
141 for (StaticSQRelation rel: additional.getSQRelations()) { |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
142 /* Check if we already have one for this parameter. |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
143 * This is highly unlikely in the data scheme of things. */ |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
144 List<StaticSQRelation> old = retval.getRelationsByParameter( |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
145 rel.getParameter()); |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
146 if (old != null || !old.isEmpty()) { |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
147 log.warn("Multiple SQ relation Parameters found for different " + |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
148 "measurement_stations at the same range. This should not happen."); |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
149 continue; |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
150 } |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
151 retval.addSQRelation(rel); |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
152 } |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
153 |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
154 } |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
155 return retval; |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
156 } |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
157 |
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
158 |
5500
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
159 public static StaticSQContainer getSQRelations( |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
160 String river, |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
161 int measurementStation |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
162 ) { |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
163 Cache cache = CacheFactory.getCache(StaticSQCacheKey.CACHE_NAME); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
164 |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
165 StaticSQCacheKey cacheKey; |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
166 |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
167 if (cache != null) { |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
168 cacheKey = new StaticSQCacheKey(river, measurementStation); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
169 Element element = cache.get(cacheKey); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
170 if (element != null) { |
8543
9a5b3079aad4
(issue1750) Take Static SQ Relations based on a range and merge them together
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8412
diff
changeset
|
171 log.debug("Got static sq relations from cache"); |
5500
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
172 return (StaticSQContainer)element.getValue(); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
173 } |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
174 } |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
175 else { |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
176 cacheKey = null; |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
177 } |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
178 |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
179 StaticSQContainer values = getUncached(river, measurementStation); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
180 |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
181 if (values != null && cacheKey != null) { |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
182 log.debug("Store static sq relations in cache."); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
183 Element element = new Element(cacheKey, values); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
184 cache.put(element); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
185 } |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
186 return values; |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
187 } |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
188 |
7236
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
189 public static StaticSQContainer getDistinctRelation(int id) { |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
190 Session session = SessionHolder.HOLDER.get(); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
191 |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
192 Query query = session.createSQLQuery(SQL_SQ + ID_CLAUSE) |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
193 .addScalar("description") |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
194 .addScalar("start_time") |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
195 .addScalar("stop_time") |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
196 .addScalar("station_name") |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
197 .addScalar("station_km") |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
198 .addScalar("measurement_type") |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
199 .addScalar("parameter") |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
200 .addScalar("a") |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
201 .addScalar("b") |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
202 .addScalar("qmax"); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
203 |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
204 query.setParameter("dis_id", id); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
205 |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
206 /* This could be done nicer with hibernate */ |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
207 List<Object []> list = query.list(); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
208 if (list.isEmpty()) { |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
209 log.debug("Query returened nothing"); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
210 return null; |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
211 } |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
212 Object [] row = list.get(0); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
213 |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
214 StaticSQContainer sq = new StaticSQContainer(); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
215 sq.setDescription((String)list.get(0)[0]); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
216 sq.setStationName((String)list.get(0)[3]); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
217 sq.setKm(((BigDecimal)list.get(0)[4]).doubleValue()); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
218 |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
219 StaticSQRelation relation = new StaticSQRelation(); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
220 relation.setStartTime((Date)row[1]); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
221 relation.setStopTime((Date)row[2]); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
222 relation.setType((String)row[5]); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
223 relation.setParameter((String)row[6]); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
224 relation.setA(((BigDecimal)row[7]).doubleValue()); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
225 relation.setB(((BigDecimal)row[8]).doubleValue()); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
226 relation.setQmax(((BigDecimal)row[9]).doubleValue()); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
227 sq.addSQRelation(relation); |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
228 |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
229 return sq; |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
230 } |
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
231 |
5500
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
232 private static StaticSQContainer getUncached( |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
233 String river, |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
234 int measurementStation |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
235 ) { |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
236 Session session = SessionHolder.HOLDER.get(); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
237 |
7236
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
238 Query query = session.createSQLQuery(SQL_SQ + STATION_CLAUSE) |
5500
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
239 .addScalar("description") |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
240 .addScalar("start_time") |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
241 .addScalar("stop_time") |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
242 .addScalar("station_name") |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
243 .addScalar("station_km") |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
244 .addScalar("measurement_type") |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
245 .addScalar("parameter") |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
246 .addScalar("a") |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
247 .addScalar("b") |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
248 .addScalar("qmax"); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
249 |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
250 query.setParameter("river", river); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
251 query.setParameter("ms_id", measurementStation); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
252 |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
253 List<Object []> list = query.list(); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
254 |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
255 if (list.isEmpty()) { |
7236
a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
256 log.debug("Query returened empty"); |
5500
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
257 return new StaticSQContainer(); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
258 } |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
259 |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
260 StaticSQContainer sq = new StaticSQContainer(); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
261 sq.setDescription((String)list.get(0)[0]); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
262 sq.setStationName((String)list.get(0)[3]); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
263 sq.setKm(((BigDecimal)list.get(0)[4]).doubleValue()); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
264 |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
265 for (Object[] row : list) { |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
266 StaticSQRelation relation = new StaticSQRelation(); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
267 relation.setStartTime((Date)row[1]); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
268 relation.setStopTime((Date)row[2]); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
269 relation.setType((String)row[5]); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
270 relation.setParameter((String)row[6]); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
271 relation.setA(((BigDecimal)row[7]).doubleValue()); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
272 relation.setB(((BigDecimal)row[8]).doubleValue()); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
273 relation.setQmax(((BigDecimal)row[9]).doubleValue()); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
274 sq.addSQRelation(relation); |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
275 } |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
276 return sq; |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
277 } |
700ac898ab0b
Added Factory and model for static sq relations.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
278 } |