annotate backend/src/main/java/org/dive4elements/river/importer/ImportPorosityValue.java @ 9650:a2a42a6bac6b

Importer (s/u-info) extensions: outer try/catch for parse and log of line no, catching parsing exception if not enough value fields, parsing error and warning log messages with line number, detecting and rejecting duplicate data series, better differentiation between error and warning log messages
author mschaefer
date Mon, 23 Mar 2020 14:57:03 +0100
parents 392bbcd8a88b
children
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 import java.util.List;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
13
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
14 import org.apache.log4j.Logger;
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
15 import org.dive4elements.river.importer.common.StoreMode;
7840
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
16 import org.dive4elements.river.model.Porosity;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
17 import org.dive4elements.river.model.PorosityValue;
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
18 import org.hibernate.Query;
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
19 import org.hibernate.Session;
7840
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
20
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
21
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
22 public class ImportPorosityValue {
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 private static final Logger log =
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
25 Logger.getLogger(ImportPorosityValue.class);
7840
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
26
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
27
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
28 protected PorosityValue peer;
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 BigDecimal station;
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 shoreOffset;
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 porosity;
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 String description;
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
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
39 public ImportPorosityValue(
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
40 final BigDecimal station,
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
41 final BigDecimal shoreOffset,
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
42 final BigDecimal porosity,
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
43 final String description
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
44 ) {
7840
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
45 this.station = station;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
46 this.shoreOffset = shoreOffset;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
47 this.porosity = porosity;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
48 this.description = description;
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
49 }
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
50
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
51
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
52 public void storeDependencies(final Porosity porosity, final StoreMode parentStoreMode) {
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
53 // log.info("store dependencies");
7840
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
54
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
55 getPeer(porosity, parentStoreMode);
7840
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
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
58
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
59 public PorosityValue getPeer(final Porosity porosity, final StoreMode parentStoreMode) {
7840
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
60 log.info("get peer");
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
61
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
62 if (this.peer == null) {
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
63 final Session session = ImporterSession.getInstance()
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
64 .getDatabaseSession();
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
65 List<PorosityValue> values;
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
66 if (parentStoreMode == StoreMode.INSERT)
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
67 values = null;
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
68 else {
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
69 final Query query = session.createQuery(
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
70 "from PorosityValue "
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
71 + "where porosity=:porosity "
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
72 + "and station between :station - 0.0001f "
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
73 + " and :station + 0.0001f "
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
74 + "and porosityValue between :poros -0.0001f "
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
75 + " and :poros + 0.0001f "
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
76 + "and description=:description");
7840
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
77
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
78 query.setParameter("porosity", porosity);
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
79 query.setParameter("station", this.station.floatValue());
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
80 query.setParameter("poros", this.porosity.floatValue());
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
81 query.setParameter("description", this.description);
7840
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
82
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
83 values = query.list();
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
84 }
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
85 if ((values == null) || values.isEmpty()) {
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
86 // log.debug("Create new PorosityValue DB instance.");
7840
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
87
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
88 this.peer = new PorosityValue(
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
89 porosity,
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
90 this.station,
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
91 this.shoreOffset,
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
92 this.porosity,
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
93 this.description);
7840
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
94
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
95 session.save(this.peer);
7840
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 else {
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
98 this.peer = values.get(0);
7840
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 }
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
101
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 8856
diff changeset
102 return this.peer;
7840
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
103 }
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
104 }
02711de579cc Added model, parser and importer for porosities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
105 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org