Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedHeightFactory.java @ 8587:07c9ac22f611
(issue1755) Generalise BedQuality result handling
The bedquality calculation now produces a result for each time period
which has BedQualityResultValues for each specific result type.
Formally this was split up in density, porosity and diameter classes
with some bedload diameter classes mixed in for extra fun.
The intent of this commit is to allow more shared code and generic
access patterns to the BedQuality results.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Wed, 18 Mar 2015 18:42:08 +0100 |
parents | 17a3030bbda2 |
children | 5e38e2924c07 |
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:
4051
diff
changeset
|
9 package org.dive4elements.river.artifacts.model.minfo; |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
10 |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
11 |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
12 import java.util.List; |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
13 |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
14 import net.sf.ehcache.Cache; |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
15 import net.sf.ehcache.Element; |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
16 |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
17 import org.apache.log4j.Logger; |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
18 import org.hibernate.SQLQuery; |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
19 import org.hibernate.Session; |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
20 import org.hibernate.type.StandardBasicTypes; |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
21 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4051
diff
changeset
|
22 import org.dive4elements.river.artifacts.cache.CacheFactory; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4051
diff
changeset
|
23 import org.dive4elements.river.backend.SessionHolder; |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
24 |
6765 | 25 |
26 /** Create BedHeights from database. */ | |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
27 public class BedHeightFactory { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8153
diff
changeset
|
28 /** Private log to use here. */ |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
29 private static Logger log = Logger.getLogger(BedHeightFactory.class); |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
30 |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
31 /** Query to get km and ws for wst_id and column_pos. */ |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
32 public static final String SQL_SELECT_SINGLE = |
8554
3a0522f1a532
Morphological width imported and stored with heights is redundant to table morphologic_width.
"Tom Gottfried <tom@intevation.de>"
parents:
8544
diff
changeset
|
33 "SELECT bhsv.height, bhsv.station, bhsv.data_gap," + |
3a0522f1a532
Morphological width imported and stored with heights is redundant to table morphologic_width.
"Tom Gottfried <tom@intevation.de>"
parents:
8544
diff
changeset
|
34 " bhsv.sounding_width, bhs.year" + |
8582
17a3030bbda2
Update SQL-statements to schema-changes in rev 6d8d7425a6b5.
Tom Gottfried <tom@intevation.de>
parents:
8568
diff
changeset
|
35 " FROM bed_height bhs" + |
17a3030bbda2
Update SQL-statements to schema-changes in rev 6d8d7425a6b5.
Tom Gottfried <tom@intevation.de>
parents:
8568
diff
changeset
|
36 " JOIN bed_height_values bhsv on bhsv.bed_height_id = bhs.id"; |
8544
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
37 |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
38 public static final String ID_CLAUSE = |
6275
2d495b504c74
Order bed heights by station.
Raimund Renkert <rrenkert@intevation.de>
parents:
5994
diff
changeset
|
39 " WHERE bhs.id = :height_id" + |
2d495b504c74
Order bed heights by station.
Raimund Renkert <rrenkert@intevation.de>
parents:
5994
diff
changeset
|
40 " ORDER BY bhsv.station"; |
2d495b504c74
Order bed heights by station.
Raimund Renkert <rrenkert@intevation.de>
parents:
5994
diff
changeset
|
41 |
8544
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
42 public static final String ID_STATION_CLAUSE = |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
43 " WHERE bhs.id = :height_id AND" + |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
44 " bhsv.station BETWEEN :fromkm AND :tokm" + |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
45 " ORDER BY bhsv.station"; |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
46 |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
47 /** Query to get name (description) for wst_id. */ |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
48 public static final String SQL_SELECT_DESCR_SINGLE = |
8582
17a3030bbda2
Update SQL-statements to schema-changes in rev 6d8d7425a6b5.
Tom Gottfried <tom@intevation.de>
parents:
8568
diff
changeset
|
49 "SELECT description FROM bed_height "+ |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
50 "WHERE id = :height_id"; |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
51 |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
52 private BedHeightFactory() { |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
53 } |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
54 |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
55 /** |
7391
9513d1af7d58
Renamed artifacts/**/BedHeight(Single) to BedHeight(Single)Data, to resolve
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7254
diff
changeset
|
56 * Get BedHeightData for given type and height_id, caring about the cache. |
8544
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
57 * If from or to are NaN all values are returned. Otherwise only get |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
58 * values with stations between from and to. |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
59 */ |
8544
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
60 public static BedHeightData getHeight(String type, int height_id, double from, double to) { |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
61 log.debug("BedHeightFactory.getHeight"); |
8151
a709e6334c4a
IDs can be assumed to be unique.
Tom Gottfried <tom@intevation.de>
parents:
8022
diff
changeset
|
62 Cache cache = CacheFactory.getCache("bedheight-value-table-static"); |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
63 |
8544
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
64 String cacheKey = Integer.toString(height_id) + ":" + |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
65 Double.toString(from) + ":" + Double.toString(to); |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
66 |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
67 if (cache != null) { |
8544
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
68 /* We could be more intelligent here and reuse cached values for |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
69 * a complete river and filter the other stations out afterwards. |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
70 * It might even be better to cache all values first and filter |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
71 * later. */ |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
72 Element element = cache.get(cacheKey); |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
73 if (element != null) { |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
74 log.debug("Got static bedheight values from cache"); |
7391
9513d1af7d58
Renamed artifacts/**/BedHeight(Single) to BedHeight(Single)Data, to resolve
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7254
diff
changeset
|
75 return (BedHeightData)element.getValue(); |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
76 } |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
77 } |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
78 else { |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
79 cacheKey = null; |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
80 } |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
81 |
8544
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
82 BedHeightData values = getBedHeightUncached(type, height_id, from, to); |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
83 |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
84 if (values != null && cacheKey != null) { |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
85 log.debug("Store static bed height values in cache."); |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
86 Element element = new Element(cacheKey, values); |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
87 cache.put(element); |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
88 } |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
89 return values; |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
90 } |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
91 |
8544
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
92 /** |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
93 * Get BedHeightData for given type and height_id, caring about the cache. |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
94 */ |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
95 public static BedHeightData getHeight(String type, int height_id) { |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
96 return getHeight(type, height_id, Double.NaN, Double.NaN); |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
97 } |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
98 |
6563
ec32ccf7a753
More doc fixes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6562
diff
changeset
|
99 /** Get name for a BedHeight. */ |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
100 public static String getHeightName(String type, int height_id) { |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
101 log.debug("BedHeightFactory.getHeightName height_id/" + height_id); |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
102 |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
103 String name = null; |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
104 Session session = SessionHolder.HOLDER.get(); |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
105 |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
106 SQLQuery nameQuery = null; |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
107 if (type.equals("single")) { |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
108 nameQuery = session.createSQLQuery(SQL_SELECT_DESCR_SINGLE) |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
109 .addScalar("description", StandardBasicTypes.STRING); |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
110 nameQuery.setInteger("height_id", height_id); |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
111 } |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
112 else { |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
113 return "none"; |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
114 } |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
115 List<String> names = nameQuery.list(); |
4051
58bdf95df5e4
More dead code removal. Minor code clean ups.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3897
diff
changeset
|
116 if (!names.isEmpty()) { |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
117 name = names.get(0); |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
118 } |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
119 |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
120 return name; |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
121 } |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
122 |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
123 |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
124 /** |
7391
9513d1af7d58
Renamed artifacts/**/BedHeight(Single) to BedHeight(Single)Data, to resolve
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7254
diff
changeset
|
125 * Get BedHeightData from db. |
8544
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
126 * |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
127 * If from or to are negative all stations are returned. Otherwise |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
128 * only the values with a station betweend from and to. |
6562
4f67b9ceb9e2
Fix doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6352
diff
changeset
|
129 * @param height_id database id of the bed_height |
8544
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
130 * @param from minimum station value or NaN |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
131 * @param to maximum station value or NaN |
6562
4f67b9ceb9e2
Fix doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6352
diff
changeset
|
132 * @return according BedHeight. |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
133 */ |
7391
9513d1af7d58
Renamed artifacts/**/BedHeight(Single) to BedHeight(Single)Data, to resolve
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7254
diff
changeset
|
134 public static BedHeightData getBedHeightUncached( |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
135 String type, |
8544
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
136 int height_id, |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
137 double from, |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
138 double to) |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
139 { |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
140 if (log.isDebugEnabled()) { |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
141 log.debug("BedHeightFactory.getBedHeightUncached"); |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
142 } |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
143 |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
144 Session session = SessionHolder.HOLDER.get(); |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
145 SQLQuery sqlQuery = null; |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
146 if (type.equals("single")) { |
8568
078b07a94023
Use updated class name instead of no more existant.
Tom Gottfried <tom@intevation.de>
parents:
8554
diff
changeset
|
147 BedHeightData height = |
078b07a94023
Use updated class name instead of no more existant.
Tom Gottfried <tom@intevation.de>
parents:
8554
diff
changeset
|
148 new BedHeightData(getHeightName(type, height_id)); |
8544
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
149 String queryString = SQL_SELECT_SINGLE; |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
150 if (Double.isNaN(from) || Double.isNaN(to)) { |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
151 queryString += ID_CLAUSE; |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
152 } else { |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
153 queryString += ID_STATION_CLAUSE; |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
154 } |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
155 sqlQuery = session.createSQLQuery(queryString) |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
156 .addScalar("height", StandardBasicTypes.DOUBLE) |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
157 .addScalar("station", StandardBasicTypes.DOUBLE) |
3886
633fbb61a0cc
Split bed heights into bed height epochs and single bed heights.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3614
diff
changeset
|
158 .addScalar("data_gap", StandardBasicTypes.DOUBLE) |
633fbb61a0cc
Split bed heights into bed height epochs and single bed heights.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3614
diff
changeset
|
159 .addScalar("sounding_width", StandardBasicTypes.DOUBLE) |
633fbb61a0cc
Split bed heights into bed height epochs and single bed heights.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3614
diff
changeset
|
160 .addScalar("year", StandardBasicTypes.INTEGER); |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
161 sqlQuery.setInteger("height_id", height_id); |
8544
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
162 if (!Double.isNaN(from) && !Double.isNaN(to)) { |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
163 sqlQuery.setDouble("fromkm", from); |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
164 sqlQuery.setDouble("tokm", to); |
76113b975829
(Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
165 } |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
166 List<Object []> results = sqlQuery.list(); |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
167 |
7254
fe32a7f9655e
Reduce usage of careless 'for (int i = 0; i < x.size(); i++)' pattern.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6765
diff
changeset
|
168 for (Object [] row: results) { |
3897
bce2dd4310a6
MINFO: Updated data fields to fit the needs of bedheight difference calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3886
diff
changeset
|
169 log.debug("got station: " + (Double)row[1]); |
6352
f1a3ea7fb3b6
Insert Double.NaN for missing values in bed height factory.
Raimund Renkert <rrenkert@intevation.de>
parents:
6275
diff
changeset
|
170 Double row0 = row[0] != null ? (Double)row[0] : Double.NaN; |
f1a3ea7fb3b6
Insert Double.NaN for missing values in bed height factory.
Raimund Renkert <rrenkert@intevation.de>
parents:
6275
diff
changeset
|
171 Double row1 = row[1] != null ? (Double)row[1] : Double.NaN; |
f1a3ea7fb3b6
Insert Double.NaN for missing values in bed height factory.
Raimund Renkert <rrenkert@intevation.de>
parents:
6275
diff
changeset
|
172 Double row2 = row[2] != null ? (Double)row[2] : Double.NaN; |
f1a3ea7fb3b6
Insert Double.NaN for missing values in bed height factory.
Raimund Renkert <rrenkert@intevation.de>
parents:
6275
diff
changeset
|
173 Double row3 = row[3] != null ? (Double)row[3] : Double.NaN; |
8554
3a0522f1a532
Morphological width imported and stored with heights is redundant to table morphologic_width.
"Tom Gottfried <tom@intevation.de>"
parents:
8544
diff
changeset
|
174 height.add(row0, row1, row2, row3, (Integer) row[4]); |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
175 } |
3886
633fbb61a0cc
Split bed heights into bed height epochs and single bed heights.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
3614
diff
changeset
|
176 return height; |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
177 } |
7391
9513d1af7d58
Renamed artifacts/**/BedHeight(Single) to BedHeight(Single)Data, to resolve
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7254
diff
changeset
|
178 return new BedHeightData(); |
3614
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
179 } |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
180 } |
68beaa827751
MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
181 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |