Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentDensityFactory.java @ 8587:07c9ac22f611
(issue1755) Generalise BedQuality result handling
The bedquality calculation now produces a result for each time period
which has BedQualityResultValues for each specific result type.
Formally this was split up in density, porosity and diameter classes
with some bedload diameter classes mixed in for extra fun.
The intent of this commit is to allow more shared code and generic
access patterns to the BedQuality results.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Wed, 18 Mar 2015 18:42:08 +0100 |
parents | e4606eae8ea5 |
children | 5e38e2924c07 |
rev | line source |
---|---|
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
2 * Software engineering by Intevation GmbH |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
3 * |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
7 */ |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
8 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
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 " + |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
39 " JOIN sediment_density_values sdv ON sd.id = sdv.sediment_density_id" + |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
40 " WHERE r.name = :name"; |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
41 |
7219
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
42 /** 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
|
43 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
|
44 "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
|
45 " 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
|
46 " 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
|
47 " FROM sediment_density sd" + |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
48 " JOIN sediment_density_values sdv 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
|
49 " 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
|
50 |
7312
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
51 /** 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
|
52 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
|
53 "SELECT d.lower AS lower, " + |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
54 " d.upper AS upper" + |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
55 " FROM sediment_density sd " + |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
56 " 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
|
57 " WHERE sd.id = :id"; |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
58 |
7219
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
59 /** 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
|
60 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
|
61 "SELECT sd.description " + |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
62 " FROM sediment_density sd" + |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
63 " WHERE sd.id = :id"; |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
64 |
4521
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
65 private SedimentDensityFactory() {} |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
66 |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
67 public static SedimentDensity getSedimentDensity( |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
68 String river, |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
69 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
|
70 double endKm |
4521
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
71 ) { |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
72 log.debug("getSedimentDensity"); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
73 Cache cache = CacheFactory.getCache(DENSITY_CACHE_NAME); |
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 if (cache == null) { |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
76 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
|
77 return getSedimentDensityUncached(river, startKm, endKm); |
4521
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
78 } |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
79 |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
80 String key = river + startKm + endKm; |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
81 Element element = cache.get(key); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
82 if (element != null) { |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
83 log.debug("SedimentDensity found in cache!"); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
84 return (SedimentDensity)element.getValue(); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
85 } |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
86 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
|
87 getSedimentDensityUncached(river, startKm, endKm); |
4521
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 if (value != null && key != null) { |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
90 log.debug("Store sediment density values in cache."); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
91 element = new Element(key, value); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
92 cache.put(element); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
93 } |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
94 return value; |
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 |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
97 private static SedimentDensity getSedimentDensityUncached( |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
98 String river, |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
99 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
|
100 double endKm |
4521
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
101 ) { |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
102 log.debug("getSedimentDensityUncached"); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
103 Session session = SessionHolder.HOLDER.get(); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
104 SQLQuery sqlQuery = session.createSQLQuery(SQL_SELECT_DENSITY) |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
105 .addScalar("km", StandardBasicTypes.DOUBLE) |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
106 .addScalar("density", StandardBasicTypes.DOUBLE) |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
107 .addScalar("year", StandardBasicTypes.INTEGER); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
108 sqlQuery.setString("name", river); |
6947
51f28e5417ee
Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5994
diff
changeset
|
109 List<Object[]> results = sqlQuery.list(); |
4521
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
110 SedimentDensity density = new SedimentDensity(); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
111 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
|
112 if (row[0] != null && row[1] != null && row[2] != null) { |
84e02b3f7a4f
Avoid NPE in sediment density factory and return a valid density if no exists.
Raimund Renkert <rrenkert@intevation.de>
parents:
4521
diff
changeset
|
113 density.addDensity((Double)row[0], (Double)row[1], (Integer)row[2]); |
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 } |
4521
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
115 } |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
116 |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
117 density.cleanUp(); |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
118 return density; |
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
119 } |
7198
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
120 |
7312
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
121 /** 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
|
122 public static double[] getDepth(int id) { |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
123 log.debug("getDepth"); |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
124 Session session = SessionHolder.HOLDER.get(); |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
125 SQLQuery sqlQuery = session.createSQLQuery(SQL_SELECT_DENSITY_DEPTH_BY_ID) |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
126 .addScalar("lower", StandardBasicTypes.DOUBLE) |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
127 .addScalar("upper", StandardBasicTypes.DOUBLE); |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
128 sqlQuery.setInteger("id", id); |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
129 List<Object[]> results = sqlQuery.list(); |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
130 Object[] row = results.get(0); |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
131 |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
132 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
|
133 } |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
134 |
349730f8a49f
issue1345: Added getDepth() to SedimentDensityFactory.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7219
diff
changeset
|
135 /** 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
|
136 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
|
137 log.debug("getSedimentDensityDescription"); |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
138 Session session = SessionHolder.HOLDER.get(); |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
139 SQLQuery sqlQuery = session.createSQLQuery(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
|
140 .addScalar("description", StandardBasicTypes.STRING); |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
141 sqlQuery.setInteger("id", id); |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
142 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
|
143 |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
144 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
|
145 } |
13f0bdeb2b47
issue1435: SedimentDensityFactory: Changed variable name of query to reflect
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7212
diff
changeset
|
146 |
7198
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
147 public static SedimentDensity getSedimentDensityUncached( |
7212
8079e3ba31c9
SedimentDensityFactory: query densities by id only (not year).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7198
diff
changeset
|
148 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
|
149 ) { |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
150 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
|
151 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
|
152 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
|
153 .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
|
154 .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
|
155 .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
|
156 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
|
157 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
|
158 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
|
159 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
|
160 if (row[0] != null && row[1] != null && row[2] != null) { |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
161 density.addDensity((Double)row[0], (Double)row[1], (Integer)row[2]); |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
162 } |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
163 } |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
164 |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
165 density.cleanUp(); |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
166 return density; |
f707ee04ac80
issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7197
diff
changeset
|
167 } |
4521
71e6fe870c1d
Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
168 } |
6947
51f28e5417ee
Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5994
diff
changeset
|
169 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |