annotate backend/src/main/java/org/dive4elements/river/importer/ImportOfficialLine.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 5e38e2924c07
children
rev   line source
6344
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
3 *
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
7 */
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
8
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
9 package org.dive4elements.river.importer;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
10
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
11 import java.util.List;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
12
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
13 import org.dive4elements.river.model.NamedMainValue;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
14 import org.dive4elements.river.model.OfficialLine;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
15 import org.dive4elements.river.model.River;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
16 import org.dive4elements.river.model.WstColumn;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
17 import org.hibernate.Query;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
18 import org.hibernate.Session;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
19
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
20 public class ImportOfficialLine
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
21 {
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
22 protected String name;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
23 protected ImportWstColumn wstColumn;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
24
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
25 protected OfficialLine peer;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
26
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
27 public ImportOfficialLine() {
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
28 }
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
29
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
30 public ImportOfficialLine(String name, ImportWstColumn wstColumn) {
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
31 this.name = name;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
32 this.wstColumn = wstColumn;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
33 }
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
34
6347
75c483450c96 Backend: Store official lines from config if they are any.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
35 public String getName() {
75c483450c96 Backend: Store official lines from config if they are any.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
36 return name;
75c483450c96 Backend: Store official lines from config if they are any.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
37 }
75c483450c96 Backend: Store official lines from config if they are any.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
38
75c483450c96 Backend: Store official lines from config if they are any.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
39 public void setName(String name) {
75c483450c96 Backend: Store official lines from config if they are any.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
40 this.name = name;
75c483450c96 Backend: Store official lines from config if they are any.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
41 }
75c483450c96 Backend: Store official lines from config if they are any.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
42
6344
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
43 public OfficialLine getPeer(River river) {
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
44 if (peer == null) {
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
45 // XXX: This is a bit odd. We do not have not enough infos here
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 6481
diff changeset
46 // to create a new NamedMainValue.
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 6481
diff changeset
47 // So we just look for existing ones.
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 6481
diff changeset
48 Session session = ImporterSession.getInstance()
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 6481
diff changeset
49 .getDatabaseSession();
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 6481
diff changeset
50 NamedMainValue nmv = NamedMainValue.fetchByNameAndType(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 6481
diff changeset
51 name, "Q", session);
6344
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
52 if (nmv == null) {
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
53 // failed -> failed to create OfficialLine
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
54 return null;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
55 }
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
56 WstColumn wc = wstColumn.getPeer(river);
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
57 Query query = session.createQuery(
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
58 "from OfficialLine " +
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
59 "where namedMainValue = :nmv and wstColumn = :wc");
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
60 query.setParameter("nmv", nmv);
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
61 query.setParameter("wc", wc);
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
62 List<OfficialLine> lines = query.list();
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
63 if (lines.isEmpty()) {
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
64 peer = new OfficialLine(wc, nmv);
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
65 session.save(peer);
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
66 }
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
67 else {
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
68 peer = lines.get(0);
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
69 }
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
70
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
71 }
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
72 return peer;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
73 }
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
74 }
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
75 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
76

http://dive4elements.wald.intevation.org