Mercurial > dive4elements > river
annotate backend/src/main/java/org/dive4elements/river/importer/ImportCrossSectionLine.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; |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
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:
6280
diff
changeset
|
11 import java.util.Comparator; |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
12 import java.util.List; |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
13 import java.util.Map; |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
14 import java.util.TreeMap; |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
15 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
16 import org.dive4elements.river.importer.common.StoreMode; |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
17 import org.dive4elements.river.model.CrossSection; |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
18 import org.dive4elements.river.model.CrossSectionLine; |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
19 import org.dive4elements.river.model.CrossSectionPoint; |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
20 import org.hibernate.Query; |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
21 import org.hibernate.Session; |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
22 |
4705
3199dbc20e22
Documentation added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2860
diff
changeset
|
23 /** |
3199dbc20e22
Documentation added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2860
diff
changeset
|
24 * A CrossSectionLine (containing points) ready to be transformed into a mapped |
3199dbc20e22
Documentation added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2860
diff
changeset
|
25 * object and written to db (used in importer). |
3199dbc20e22
Documentation added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2860
diff
changeset
|
26 */ |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
27 public class ImportCrossSectionLine |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
28 { |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
29 public static final Comparator<CrossSectionPoint> INDEX_CMP = |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
30 new Comparator<CrossSectionPoint>() { |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
31 @Override |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
32 public int compare(final CrossSectionPoint a, final CrossSectionPoint b) { |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
33 return a.getColPos().compareTo(b.getColPos()); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
34 } |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
35 }; |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
36 |
5047
52c3a9d14441
ImportCrossSectionLine: Whitespace cosmetic.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4705
diff
changeset
|
37 protected Double km; |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
38 protected ImportCrossSection crossSection; |
5047
52c3a9d14441
ImportCrossSectionLine: Whitespace cosmetic.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4705
diff
changeset
|
39 protected List<XY> points; |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
40 protected StoreMode storeMode; |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
41 |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
42 protected CrossSectionLine peer; |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
43 |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
44 public ImportCrossSectionLine() { |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
45 } |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
46 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
47 public ImportCrossSectionLine(final Double km, final List<XY> points) { |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
48 this.km = km; |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
49 this.points = points; |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
50 this.storeMode = StoreMode.NONE; |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
51 } |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
52 |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
53 public ImportCrossSection getCrossSection() { |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
54 return this.crossSection; |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
55 } |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
56 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
57 public void setCrossSection(final ImportCrossSection crossSection) { |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
58 this.crossSection = crossSection; |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
59 } |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
60 |
2860
2f874d14ac68
Use Doubles to store meassure points of profiles.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1205
diff
changeset
|
61 public Double getKm() { |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
62 return this.km; |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
63 } |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
64 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
65 public void setKm(final Double km) { |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
66 this.km = km; |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
67 } |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
68 |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
69 public void storeDependencies() { |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
70 storePoints(); |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
71 } |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
72 |
4705
3199dbc20e22
Documentation added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2860
diff
changeset
|
73 |
3199dbc20e22
Documentation added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2860
diff
changeset
|
74 /** Write a line and its points. */ |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
75 protected void storePoints() { |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
76 final CrossSectionLine csl = getPeer(); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
77 if (this.storeMode == StoreMode.INSERT) { |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
78 insertPoints(); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
79 return; |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
80 } |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
81 final Map<CrossSectionPoint, CrossSectionPoint> map = |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
82 new TreeMap<>(INDEX_CMP); |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
83 |
4705
3199dbc20e22
Documentation added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2860
diff
changeset
|
84 // Build index for faster (index) collision lookup. |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
85 final List<CrossSectionPoint> ps = csl.getPoints(); |
1205
5f1506fc7636
Made import of cross sections work.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
86 if (ps != null) { |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
87 for (final CrossSectionPoint point: ps) { |
1205
5f1506fc7636
Made import of cross sections work.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
88 map.put(point, point); |
5f1506fc7636
Made import of cross sections work.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1204
diff
changeset
|
89 } |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
90 } |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
91 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
92 final Session session = ImporterSession.getInstance().getDatabaseSession(); |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
93 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
94 final CrossSectionPoint key = new CrossSectionPoint(); |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
95 |
4705
3199dbc20e22
Documentation added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2860
diff
changeset
|
96 // Somehow it looks as if even with the map it is still possible that |
3199dbc20e22
Documentation added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2860
diff
changeset
|
97 // multiple points with same id enter hibernate (and then violate a |
3199dbc20e22
Documentation added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2860
diff
changeset
|
98 // constraint). -> TODO |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
99 for (final XY xy: this.points) { |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
100 key.setColPos(xy.getIndex()); |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
101 CrossSectionPoint csp = map.get(key); |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
102 if (csp == null) { // create new |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
103 csp = new CrossSectionPoint( |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
104 csl, key.getColPos(), |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
105 Double.valueOf(xy.getX()), |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
106 Double.valueOf(xy.getY())); |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
107 } |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
108 else { // update old |
2860
2f874d14ac68
Use Doubles to store meassure points of profiles.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1205
diff
changeset
|
109 csp.setX(Double.valueOf(xy.getX())); |
2f874d14ac68
Use Doubles to store meassure points of profiles.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1205
diff
changeset
|
110 csp.setY(Double.valueOf(xy.getY())); |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
111 } |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
112 session.save(csp); |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
113 } |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
114 } |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
115 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
116 /** |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
117 * Insert the points of a new line into the database without previously querying the database |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
118 */ |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
119 private void insertPoints() { |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
120 final Session session = ImporterSession.getInstance().getDatabaseSession(); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
121 for (final XY xy : this.points) { |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
122 session.save(new CrossSectionPoint(getPeer(), xy.getIndex(), xy.getX(), xy.getY())); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
123 } |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
124 } |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
125 |
6280 | 126 /** Pull database-mapped object from db, or create (and save) one. */ |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
127 public CrossSectionLine getPeer() { |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
128 if (this.peer == null) { |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
129 final CrossSection cs = this.crossSection.getPeer(); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
130 final Session session = ImporterSession.getInstance().getDatabaseSession(); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
131 List<CrossSectionLine> lines; |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
132 if (this.crossSection.storeMode == StoreMode.INSERT) |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
133 lines = null; |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
134 else { |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
135 final Query query = session.createQuery("from CrossSectionLine where crossSection=:cs and km=:km"); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
136 query.setParameter("cs", cs); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
137 query.setParameter("km", this.km); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
138 lines = query.list(); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
139 } |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
140 if ((lines == null) || lines.isEmpty()) { |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
141 this.peer = new CrossSectionLine(cs, this.km); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
142 session.save(this.peer); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
143 this.storeMode = StoreMode.INSERT; |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
144 } |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
145 else { |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
146 this.peer = lines.get(0); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
147 this.storeMode = StoreMode.UPDATE; |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
148 } |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
149 } |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
6280
diff
changeset
|
150 return this.peer; |
1204
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
151 } |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
152 } |
22858e7cca79
Integrated PRF parsing into importer. Needs testing!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
153 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |