Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentDensityFactory.java @ 9801:1d7a72a50183 3.2.x tip
Assume Compose V2, consistently
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 23 Nov 2023 10:14:13 +0100 |
parents | 0a5239a1e46e |
children |
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:
5712
diff
changeset
|
9 package org.dive4elements.river.artifacts.model.minfo; |
4521
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
10 |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
11 import java.util.List; |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
12 |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
13 import net.sf.ehcache.Cache; |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
14 import net.sf.ehcache.Element; |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
15 |
9726 | 16 import org.apache.logging.log4j.Logger; |
17 import org.apache.logging.log4j.LogManager; | |
4521
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
18 import org.hibernate.SQLQuery; |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
19 import org.hibernate.Session; |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
20 import org.hibernate.type.StandardBasicTypes; |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
21 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5712
diff
changeset
|
22 import org.dive4elements.river.artifacts.cache.CacheFactory; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5712
diff
changeset
|
23 import org.dive4elements.river.backend.SessionHolder; |
4521
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
24 |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
25 |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
26 public class SedimentDensityFactory |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
27 { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8065
diff
changeset
|
28 /** Private log to use here. */ |
9726 | 29 private static Logger log = LogManager.getLogger(SedimentDensityFactory.class); |
4521
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
30 |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
31 private static final String DENSITY_CACHE_NAME = "sedimentdensity"; |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
32 |
7197
1750b4448c0c
Doc fix.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6947
diff
changeset
|
33 /** Query to get sediment density values and kms. */ |
4521
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
34 private static final String SQL_SELECT_DENSITY = |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
35 "SELECT sdv.station AS km, " + |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
36 " sdv.density AS density," + |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
37 " sdv.year AS year " + |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
38 " FROM sediment_density sd" + |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
39 " JOIN rivers r ON sd.river_id = r.id " + |
8856 | 40 " JOIN sediment_density_values sdv " + |
41 " ON sd.id = sdv.sediment_density_id" + | |
4521
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
42 " WHERE r.name = :name"; |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
43 |
7219
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
44 /** Query to get sediment density values and kms by id. */ |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
45 private static final String SQL_SELECT_DENSITY_BY_ID = |
7198
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
46 "SELECT sdv.station AS km, " + |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
47 " sdv.density AS density," + |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
48 " sdv.year AS year " + |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
49 " FROM sediment_density sd" + |
8856 | 50 " JOIN sediment_density_values sdv " + |
51 " ON sd.id = sdv.sediment_density_id" + | |
7212
8079e3ba31c9
SedimentDensityFactory: query densities by id only (not year).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7198
diff
changeset
|
52 " WHERE sd.id = :id"; |
7198
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
53 |
7312
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
54 /** Query to get sediment density depth by sediment density id. */ |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
55 private static final String SQL_SELECT_DENSITY_DEPTH_BY_ID = |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
56 "SELECT d.lower AS lower, " + |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
57 " d.upper AS upper" + |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
58 " FROM sediment_density sd " + |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
59 " JOIN depths d ON d.id = sd.depth_id " + |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
60 " WHERE sd.id = :id"; |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
61 |
7219
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
62 /** Query to get sediment density description by id. */ |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
63 private static final String SQL_SELECT_DESCRIPTION_BY_ID = |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
64 "SELECT sd.description " + |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
65 " FROM sediment_density sd" + |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
66 " WHERE sd.id = :id"; |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
67 |
4521
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
68 private SedimentDensityFactory() {} |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
69 |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
70 public static SedimentDensity getSedimentDensity( |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
71 String river, |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
72 double startKm, |
8065
fdb26fe898dc
Sediment load: Cached sediment values dont depend on year. The cached object is an index over year so there is not need to ask the factory for this.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7312
diff
changeset
|
73 double endKm |
4521
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
74 ) { |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
75 log.debug("getSedimentDensity"); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
76 Cache cache = CacheFactory.getCache(DENSITY_CACHE_NAME); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
77 |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
78 if (cache == null) { |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
79 log.debug("Cache not configured."); |
8065
fdb26fe898dc
Sediment load: Cached sediment values dont depend on year. The cached object is an index over year so there is not need to ask the factory for this.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7312
diff
changeset
|
80 return getSedimentDensityUncached(river, startKm, endKm); |
4521
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
81 } |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
82 |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
83 String key = river + startKm + endKm; |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
84 Element element = cache.get(key); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
85 if (element != null) { |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
86 log.debug("SedimentDensity found in cache!"); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
87 return (SedimentDensity)element.getValue(); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
88 } |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
89 SedimentDensity value = |
8065
fdb26fe898dc
Sediment load: Cached sediment values dont depend on year. The cached object is an index over year so there is not need to ask the factory for this.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7312
diff
changeset
|
90 getSedimentDensityUncached(river, startKm, endKm); |
4521
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
91 |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
92 if (value != null && key != null) { |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
93 log.debug("Store sediment density values in cache."); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
94 element = new Element(key, value); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
95 cache.put(element); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
96 } |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
97 return value; |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
98 } |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
99 |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
100 private static SedimentDensity getSedimentDensityUncached( |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
101 String river, |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
102 double startKm, |
8065
fdb26fe898dc
Sediment load: Cached sediment values dont depend on year. The cached object is an index over year so there is not need to ask the factory for this.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7312
diff
changeset
|
103 double endKm |
4521
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
104 ) { |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
105 log.debug("getSedimentDensityUncached"); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
106 Session session = SessionHolder.HOLDER.get(); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
107 SQLQuery sqlQuery = session.createSQLQuery(SQL_SELECT_DENSITY) |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
108 .addScalar("km", StandardBasicTypes.DOUBLE) |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
109 .addScalar("density", StandardBasicTypes.DOUBLE) |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
110 .addScalar("year", StandardBasicTypes.INTEGER); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
111 sqlQuery.setString("name", river); |
6947
51f28e5417ee
Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5994
diff
changeset
|
112 List<Object[]> results = sqlQuery.list(); |
4521
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
113 SedimentDensity density = new SedimentDensity(); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
114 for (Object[] row : results) { |
5712
84e02b3f7a4f
Avoid NPE in sediment density factory and return a valid density if no exists.
Raimund Renkert <rrenkert@intevation.de>
parents:
4521
diff
changeset
|
115 if (row[0] != null && row[1] != null && row[2] != null) { |
8856 | 116 density.addDensity( |
117 (Double)row[0], (Double)row[1], (Integer)row[2]); | |
5712
84e02b3f7a4f
Avoid NPE in sediment density factory and return a valid density if no exists.
Raimund Renkert <rrenkert@intevation.de>
parents:
4521
diff
changeset
|
118 } |
4521
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
119 } |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
120 |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
121 density.cleanUp(); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
122 return density; |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
123 } |
7198
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
124 |
7312
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
125 /** Query and return depth of a sediment density entry. */ |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
126 public static double[] getDepth(int id) { |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
127 log.debug("getDepth"); |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
128 Session session = SessionHolder.HOLDER.get(); |
8856 | 129 SQLQuery sqlQuery = session.createSQLQuery( |
130 SQL_SELECT_DENSITY_DEPTH_BY_ID) | |
7312
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
131 .addScalar("lower", StandardBasicTypes.DOUBLE) |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
132 .addScalar("upper", StandardBasicTypes.DOUBLE); |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
133 sqlQuery.setInteger("id", id); |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
134 List<Object[]> results = sqlQuery.list(); |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
135 Object[] row = results.get(0); |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
136 |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
137 return new double[] {(Double)row[0], (Double)row[1]}; |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
138 } |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
139 |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
140 /** Query and return description of a sediment density entry. */ |
7219
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
141 public static String getSedimentDensityDescription(int id) { |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
142 log.debug("getSedimentDensityDescription"); |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
143 Session session = SessionHolder.HOLDER.get(); |
8856 | 144 SQLQuery sqlQuery = session.createSQLQuery( |
145 SQL_SELECT_DESCRIPTION_BY_ID) | |
7219
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
146 .addScalar("description", StandardBasicTypes.STRING); |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
147 sqlQuery.setInteger("id", id); |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
148 List<Object> results = sqlQuery.list(); |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
149 |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
150 return (String) results.get(0); |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
151 } |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
152 |
7198
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
153 public static SedimentDensity getSedimentDensityUncached( |
7212
8079e3ba31c9
SedimentDensityFactory: query densities by id only (not year).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7198
diff
changeset
|
154 int id |
7198
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
155 ) { |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
156 log.debug("getSedimentDensityUncached id/year"); |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
157 Session session = SessionHolder.HOLDER.get(); |
7219
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
158 SQLQuery sqlQuery = session.createSQLQuery(SQL_SELECT_DENSITY_BY_ID) |
7198
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
159 .addScalar("km", StandardBasicTypes.DOUBLE) |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
160 .addScalar("density", StandardBasicTypes.DOUBLE) |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
161 .addScalar("year", StandardBasicTypes.INTEGER); |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
162 sqlQuery.setInteger("id", id); |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
163 List<Object[]> results = sqlQuery.list(); |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
164 SedimentDensity density = new SedimentDensity(); |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
165 for (Object[] row : results) { |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
166 if (row[0] != null && row[1] != null && row[2] != null) { |
8856 | 167 density.addDensity( |
168 (Double)row[0], (Double)row[1], (Integer)row[2]); | |
7198
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
169 } |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
170 } |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
171 |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
172 density.cleanUp(); |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
173 return density; |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
174 } |
4521
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
175 } |
6947
51f28e5417ee
Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5994
diff
changeset
|
176 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |