annotate backend/src/main/java/org/dive4elements/river/importer/ImportHYK.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
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5992
4c3ccf2b0304 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5844
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5992
4c3ccf2b0304 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5844
diff changeset
6 * documentation coming with Dive4Elements River for details.
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5829
18619c1e7c2a Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5828
diff changeset
9 package org.dive4elements.river.importer;
1218
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
11 import java.util.ArrayList;
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
12 import java.util.List;
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
13
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
14 import org.apache.log4j.Logger;
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
15 import org.dive4elements.river.importer.common.StoreMode;
5829
18619c1e7c2a Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5828
diff changeset
16 import org.dive4elements.river.model.HYK;
18619c1e7c2a Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5828
diff changeset
17 import org.dive4elements.river.model.River;
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
18 import org.hibernate.Query;
1218
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19 import org.hibernate.Session;
1224
ca7d461a53f1 HYK importer: Various small fixes and some extra logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1221
diff changeset
20
1218
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21 public class ImportHYK
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22 {
1224
ca7d461a53f1 HYK importer: Various small fixes and some extra logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1221
diff changeset
23 private static Logger log = Logger.getLogger(ImportHYK.class);
ca7d461a53f1 HYK importer: Various small fixes and some extra logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1221
diff changeset
24
1218
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
25 protected ImportRiver river;
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
26 protected String description;
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28 protected List<ImportHYKEntry> entries;
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
29
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
30 protected StoreMode storeMode;
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
31
1218
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
32 protected HYK peer;
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
33
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
34 public ImportHYK() {
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
35 this.entries = new ArrayList<>();
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
36 this.storeMode = StoreMode.NONE;
1218
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
37 }
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
38
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
39 public ImportHYK(final ImportRiver river, final String description) {
1218
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
40 this();
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41 this.river = river;
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
42 this.description = description;
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
43 }
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
44
1219
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1218
diff changeset
45 public ImportRiver getRiver() {
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
46 return this.river;
1219
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1218
diff changeset
47 }
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1218
diff changeset
48
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
49 public void setRiver(final ImportRiver river) {
1219
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1218
diff changeset
50 this.river = river;
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1218
diff changeset
51 }
d80997bd94ce HYKParser: Create data structures while parsing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1218
diff changeset
52
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
53 public void addEntry(final ImportHYKEntry entry) {
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
54 this.entries.add(entry);
1218
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
55 entry.setHYK(this);
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
56 }
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
57
1221
979ff070e368 Store HYK data structures to database. Needs testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1219
diff changeset
58 public void storeDependencies() {
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
59 log.info("store HYK '" + this.description + "'");
1221
979ff070e368 Store HYK data structures to database. Needs testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1219
diff changeset
60 getPeer();
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
61 for (int i = 0, N = this.entries.size(); i < N; ++i) {
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
62 final ImportHYKEntry entry = this.entries.get(i);
1224
ca7d461a53f1 HYK importer: Various small fixes and some extra logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1221
diff changeset
63 log.info(" store km " + entry.getKm() +
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
64 " (" + (i+1) + " of " + N + ")");
1221
979ff070e368 Store HYK data structures to database. Needs testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1219
diff changeset
65 entry.storeDependencies();
979ff070e368 Store HYK data structures to database. Needs testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1219
diff changeset
66 }
979ff070e368 Store HYK data structures to database. Needs testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1219
diff changeset
67 }
979ff070e368 Store HYK data structures to database. Needs testing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1219
diff changeset
68
1218
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
69 public HYK getPeer() {
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
70 if (this.peer == null) {
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
71 final River r = this.river.getPeer();
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
72 final Session session = ImporterSession.getInstance()
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
73 .getDatabaseSession();
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
74 final Query query = session.createQuery(
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
75 "from HYK where river=:river and description=:description");
1218
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
76 query.setParameter("river", r);
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
77 query.setParameter("description", this.description);
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
78 final List<HYK> hyks = query.list();
1218
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
79 if (hyks.isEmpty()) {
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
80 this.peer = new HYK(r, this.description);
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
81 session.save(this.peer);
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
82 this.storeMode = StoreMode.INSERT;
1218
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
83 }
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
84 else {
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
85 this.peer = hyks.get(0);
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
86 this.storeMode = StoreMode.UPDATE;
1218
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
87 }
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
88 }
8986
392bbcd8a88b Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents: 5992
diff changeset
89 return this.peer;
1218
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
90 }
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
91 }
00e37d22a589 Added importer models for HYKs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
92 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org