Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentDensityFactory.java @ 8242:f8ea1a7ecde6
(issue1448) Fix info service for epoch / periods and off epoch
This also includes a bit cleanup to move the sqRelationTimeInterval check
to the creation of the load list in SedimentLoadData allLoads.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Tue, 09 Sep 2014 11:13:37 +0200 |
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 : |