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