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 }

http://dive4elements.wald.intevation.org