annotate backend/src/main/java/org/dive4elements/river/importer/ImportPorosityValue.java @ 8029:cdb9f6d97f6a

Added method to importer session to fetch the measurement station for given (river, km).
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 10 Jul 2014 18:02:08 +0200
parents cdef048c4ac5
children 5e38e2924c07
rev   line source
7840
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
3 *
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
7 */
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
8
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
9 package org.dive4elements.river.importer;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
10
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
11 import java.math.BigDecimal;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
12
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
13 import java.util.List;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
14
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
15 import org.apache.log4j.Logger;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
16
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
17 import org.hibernate.Session;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
18 import org.hibernate.Query;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
19
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
20 import org.dive4elements.river.model.Porosity;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
21 import org.dive4elements.river.model.PorosityValue;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
22
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
23
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
24 public class ImportPorosityValue {
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
25
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
26 private static final Logger log =
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
27 Logger.getLogger(ImportPorosityValue.class);
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
28
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
29
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
30 protected PorosityValue peer;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
31
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
32 protected BigDecimal station;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
33
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
34 protected BigDecimal shoreOffset;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
35
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
36 protected BigDecimal porosity;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
37
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
38 protected String description;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
39
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
40
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
41 public ImportPorosityValue(
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
42 BigDecimal station,
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
43 BigDecimal shoreOffset,
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
44 BigDecimal porosity,
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
45 String description
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
46 ) {
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
47 this.station = station;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
48 this.shoreOffset = shoreOffset;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
49 this.porosity = porosity;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
50 this.description = description;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
51 }
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
52
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
53
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
54 public void storeDependencies(Porosity porosity) {
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
55 log.info("store dependencies");
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
56
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
57 getPeer(porosity);
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
58 }
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
59
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
60
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
61 public PorosityValue getPeer(Porosity porosity) {
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
62 log.info("get peer");
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
63
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
64 if (peer == null) {
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
65 Session session = ImporterSession.getInstance().getDatabaseSession();
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
66
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
67 Query query = session.createQuery(
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
68 "from PorosityValue where " +
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
69 " porosity=:porosity and " +
7862
cdef048c4ac5 Fixed porosity importer. Find existing db entries and parse values from string, not via double.
Raimund Renkert <rrenkert@intevation.de>
parents: 7840
diff changeset
70 " station between :station - 0.0001f and :station + 0.0001f and" +
cdef048c4ac5 Fixed porosity importer. Find existing db entries and parse values from string, not via double.
Raimund Renkert <rrenkert@intevation.de>
parents: 7840
diff changeset
71 " porosityValue between :poros -0.0001f and :poros + 0.0001f and" +
7840
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
72 " description=:description");
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
73
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
74 query.setParameter("porosity", porosity);
7862
cdef048c4ac5 Fixed porosity importer. Find existing db entries and parse values from string, not via double.
Raimund Renkert <rrenkert@intevation.de>
parents: 7840
diff changeset
75 query.setParameter("station", station.floatValue());
cdef048c4ac5 Fixed porosity importer. Find existing db entries and parse values from string, not via double.
Raimund Renkert <rrenkert@intevation.de>
parents: 7840
diff changeset
76 query.setParameter("poros", this.porosity.floatValue());
7840
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
77 query.setParameter("description", description);
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
78
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
79 List<PorosityValue> values = query.list();
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
80 if (values.isEmpty()) {
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
81 log.debug("Create new PorosityValue DB instance.");
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
82
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
83 peer = new PorosityValue(
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
84 porosity,
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
85 station,
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
86 shoreOffset,
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
87 this.porosity,
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
88 description);
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
89
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
90 session.save(peer);
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
91 }
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
92 else {
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
93 peer = values.get(0);
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
94 }
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
95 }
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
96
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
97 return peer;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
98 }
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
99 }
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
100 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org