annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedHeightFactory.java @ 8568:078b07a94023

Use updated class name instead of no more existant.
author Tom Gottfried <tom@intevation.de>
date Thu, 26 Feb 2015 15:37:03 +0100
parents 3a0522f1a532
children 17a3030bbda2
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
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6563
diff changeset
25
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6563
diff changeset
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" +
3897
bce2dd4310a6 MINFO: Updated data fields to fit the needs of bedheight difference calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3886
diff changeset
35 " FROM bed_height_single bhs" +
8544
76113b975829 (Issue1754) Make BedDifference calculation range dependent.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8202
diff changeset
36 " JOIN bed_height_single_values bhsv on bhsv.bed_height_single_id = bhs.id";
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 =
68beaa827751 MINFO: Implemented UI and facet/artifact stack for bed height differences.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
49 "SELECT description FROM bed_height_single "+
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 :

http://dive4elements.wald.intevation.org