Mercurial > dive4elements > river
annotate backend/src/main/java/org/dive4elements/river/importer/ImportWstColumn.java @ 9034:8aa7d9eaaa21
Added bed_height_values section heights height01 to height10
author | mschaefer |
---|---|
date | Mon, 30 Apr 2018 10:13:15 +0200 |
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:
5889
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:
5889
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; |
196
a33c065b95eb
Added importer helper model stubs for WST imports.
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:
8856
diff
changeset
|
11 import java.math.BigDecimal; |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
12 import java.util.ArrayList; |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
13 import java.util.List; |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
14 import java.util.Random; |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
15 |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
16 import org.apache.log4j.Logger; |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
17 import org.dive4elements.river.importer.common.StoreMode; |
5829
18619c1e7c2a
Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5828
diff
changeset
|
18 import org.dive4elements.river.model.River; |
18619c1e7c2a
Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5828
diff
changeset
|
19 import org.dive4elements.river.model.TimeInterval; |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
20 import org.dive4elements.river.model.Wst; |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
21 import org.dive4elements.river.model.WstColumn; |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
22 import org.hibernate.Query; |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
23 import org.hibernate.Session; |
499
cce054f27dac
Importer: Only accept main value types 'Q', 'W', 'D' and 'T' by default.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
497
diff
changeset
|
24 |
5000 | 25 |
26 /** Unmapped column of a WST. */ | |
196
a33c065b95eb
Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
27 public class ImportWstColumn |
a33c065b95eb
Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
28 { |
499
cce054f27dac
Importer: Only accept main value types 'Q', 'W', 'D' and 'T' by default.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
497
diff
changeset
|
29 private static Logger log = Logger.getLogger(ImportWstColumn.class); |
cce054f27dac
Importer: Only accept main value types 'Q', 'W', 'D' and 'T' by default.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
497
diff
changeset
|
30 |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
31 protected ImportWst wst; |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
32 protected String name; |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
33 protected String description; |
471
3570e4af8cb2
Added 'position' column to wst_columns to allow order them by there column position in the original wst file.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
202
diff
changeset
|
34 protected Integer position; |
6504
7664ab97b4c7
Backend: Store source of a wst column if available.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5992
diff
changeset
|
35 protected String source; |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
36 |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
501
diff
changeset
|
37 protected ImportTimeInterval timeInterval; |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
501
diff
changeset
|
38 |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
39 protected List<ImportWstColumnQRange> columnQRanges; |
202
29a408f80a89
Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
201
diff
changeset
|
40 protected List<ImportWstColumnValue> columnValues; |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
41 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
42 protected StoreMode storeMode; |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
43 |
196
a33c065b95eb
Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
44 protected WstColumn peer; |
a33c065b95eb
Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
45 |
a33c065b95eb
Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
46 public ImportWstColumn() { |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
47 this.columnQRanges = new ArrayList<>(); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
48 this.columnValues = new ArrayList<>(); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
49 this.storeMode = StoreMode.NONE; |
196
a33c065b95eb
Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
50 } |
a33c065b95eb
Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
51 |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
52 public ImportWstColumn( |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
53 final ImportWst wst, |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
54 final String name, |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
55 final String description, |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
56 final Integer position, |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
57 final String source |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
58 ) { |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
59 this(); |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
60 this.wst = wst; |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
61 this.name = name; |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
62 this.description = description; |
471
3570e4af8cb2
Added 'position' column to wst_columns to allow order them by there column position in the original wst file.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
202
diff
changeset
|
63 this.position = position; |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
64 } |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
65 |
6504
7664ab97b4c7
Backend: Store source of a wst column if available.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5992
diff
changeset
|
66 public ImportWstColumn( |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
67 final ImportWst wst, |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
68 final String name, |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
69 final String description, |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
70 final Integer position |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
71 ) { |
6504
7664ab97b4c7
Backend: Store source of a wst column if available.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5992
diff
changeset
|
72 this(wst, name, description, position, null); |
7664ab97b4c7
Backend: Store source of a wst column if available.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5992
diff
changeset
|
73 } |
7664ab97b4c7
Backend: Store source of a wst column if available.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5992
diff
changeset
|
74 |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
75 public ImportWst getWst() { |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
76 return this.wst; |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
77 } |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
78 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
79 public void setWst(final ImportWst wst) { |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
80 this.wst = wst; |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
81 } |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
82 |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
83 public String getName() { |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
84 return this.name; |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
85 } |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
86 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
87 public void setName(final String name) { |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
88 this.name = name; |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
89 } |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
90 |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
91 public String getDescription() { |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
92 return this.description; |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
93 } |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
94 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
95 public void setDescription(final String description) { |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
96 this.description = description; |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
97 } |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
98 |
471
3570e4af8cb2
Added 'position' column to wst_columns to allow order them by there column position in the original wst file.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
202
diff
changeset
|
99 public Integer getPosition() { |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
100 return this.position; |
471
3570e4af8cb2
Added 'position' column to wst_columns to allow order them by there column position in the original wst file.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
202
diff
changeset
|
101 } |
3570e4af8cb2
Added 'position' column to wst_columns to allow order them by there column position in the original wst file.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
202
diff
changeset
|
102 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
103 public void setPosition(final Integer position) { |
471
3570e4af8cb2
Added 'position' column to wst_columns to allow order them by there column position in the original wst file.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
202
diff
changeset
|
104 this.position = position; |
3570e4af8cb2
Added 'position' column to wst_columns to allow order them by there column position in the original wst file.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
202
diff
changeset
|
105 } |
3570e4af8cb2
Added 'position' column to wst_columns to allow order them by there column position in the original wst file.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
202
diff
changeset
|
106 |
6504
7664ab97b4c7
Backend: Store source of a wst column if available.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5992
diff
changeset
|
107 public String getSource() { |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
108 return this.source; |
6504
7664ab97b4c7
Backend: Store source of a wst column if available.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5992
diff
changeset
|
109 } |
7664ab97b4c7
Backend: Store source of a wst column if available.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5992
diff
changeset
|
110 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
111 public void setSource(final String source) { |
6504
7664ab97b4c7
Backend: Store source of a wst column if available.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5992
diff
changeset
|
112 this.source = source; |
7664ab97b4c7
Backend: Store source of a wst column if available.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5992
diff
changeset
|
113 } |
7664ab97b4c7
Backend: Store source of a wst column if available.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5992
diff
changeset
|
114 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
115 public void addColumnValue(final BigDecimal position, final BigDecimal w) { |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
116 this.columnValues.add( |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
117 new ImportWstColumnValue(this, position, w)); |
202
29a408f80a89
Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
201
diff
changeset
|
118 } |
29a408f80a89
Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
201
diff
changeset
|
119 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
120 public void addColumnQRange(final ImportWstQRange columnQRange) { |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
121 this.columnQRanges.add( |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
122 new ImportWstColumnQRange(this, columnQRange)); |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
123 } |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
124 |
5237
feb80b3afc40
ImportWstColumn: Expose columnValues with a getter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5000
diff
changeset
|
125 |
feb80b3afc40
ImportWstColumn: Expose columnValues with a getter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5000
diff
changeset
|
126 /** Get the Column Values stored in this column. */ |
feb80b3afc40
ImportWstColumn: Expose columnValues with a getter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5000
diff
changeset
|
127 public List<ImportWstColumnValue> getColumnValues() { |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
128 return this.columnValues; |
5237
feb80b3afc40
ImportWstColumn: Expose columnValues with a getter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5000
diff
changeset
|
129 } |
feb80b3afc40
ImportWstColumn: Expose columnValues with a getter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5000
diff
changeset
|
130 |
feb80b3afc40
ImportWstColumn: Expose columnValues with a getter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5000
diff
changeset
|
131 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
132 public void storeDependencies(final River river) { |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
133 log.info("store column '" + this.name + "'"); |
7183
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
134 getPeer(river); |
501
04d449f7f0c9
Importer: Change caching strategy not to cause OOM any more.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
500
diff
changeset
|
135 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
136 for (final ImportWstColumnQRange columnQRange: this.columnQRanges) { |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
137 columnQRange.getPeer(river); |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
138 } |
499
cce054f27dac
Importer: Only accept main value types 'Q', 'W', 'D' and 'T' by default.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
497
diff
changeset
|
139 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
140 for (final ImportWstColumnValue columnValue: this.columnValues) { |
202
29a408f80a89
Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
201
diff
changeset
|
141 columnValue.getPeer(river); |
29a408f80a89
Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
201
diff
changeset
|
142 } |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
143 } |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
144 |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
501
diff
changeset
|
145 public ImportTimeInterval getTimeInterval() { |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
146 return this.timeInterval; |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
501
diff
changeset
|
147 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
501
diff
changeset
|
148 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
149 public void setTimeInterval(final ImportTimeInterval timeInterval) { |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
501
diff
changeset
|
150 this.timeInterval = timeInterval; |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
501
diff
changeset
|
151 } |
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
501
diff
changeset
|
152 |
7183
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
153 public boolean guessWaterLevelIncreasing() { |
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
154 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
155 final int N = this.columnValues.size(); |
7183
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
156 |
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
157 if (N < 2) { |
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
158 return true; |
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
159 } |
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
160 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
161 final Random r = new Random(); |
7183
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
162 int up = 0; |
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
163 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
164 final int S = N < 50 ? N : (int)(0.1f * N)+1; |
7183
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
165 for (int s = 0; s < S; ++s) { |
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
166 int i1, i2; |
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
167 do { |
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
168 i1 = r.nextInt(N-1); |
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
169 i2 = r.nextInt(N-1); |
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
170 } while (i1 == i2); |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
171 ImportWstColumnValue b = this.columnValues.get(i1); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
172 ImportWstColumnValue a = this.columnValues.get(i2); |
7183
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
173 if (b.getPosition().compareTo(a.getPosition()) < 0) { |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
174 final ImportWstColumnValue t = a; a = b; b = t; |
7183
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
175 } |
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
176 |
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
177 if (a.getW().compareTo(b.getW()) < 0) ++up; |
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
178 } |
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
179 |
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
180 return up > S - up; |
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
181 } |
0fe00824bd96
flys/issue1500: The main wst file determines km_up now.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6506
diff
changeset
|
182 |
5000 | 183 /** Get corresponding mapped wst-column (from database). */ |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
184 public WstColumn getPeer(final River river) { |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
185 if (this.peer == null) { |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
186 final Wst w = this.wst.getPeer(river); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
187 List<WstColumn> columns; |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
188 final Session session = ImporterSession.getInstance() |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
189 .getDatabaseSession(); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
190 if (this.wst.storeMode == StoreMode.INSERT) |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
191 columns = null; |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
192 else { |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
193 final Query query = session.createQuery( |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
194 "from WstColumn where" + |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
195 " wst=:wst and name=:name" + |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
196 " and source=:source" + |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
197 " and position=:position"); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
198 query.setParameter("wst", w); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
199 query.setParameter("name", this.name); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
200 query.setParameter("position", this.position); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
201 query.setParameter("source", this.source); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
202 columns = query.list(); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
203 } |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
501
diff
changeset
|
204 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
205 final TimeInterval ti = (this.timeInterval != null) ? this.timeInterval.getPeer() : null; |
2357
2e18e12fac11
Added date guesser for WST columns.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
501
diff
changeset
|
206 |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
207 if ((columns == null) || columns.isEmpty()) { |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
208 log.debug("source: " + this.source); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
209 this.peer = new WstColumn( |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
210 w, this.name, this.description, this.source, this.position, ti); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
211 session.save(this.peer); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
212 this.storeMode = StoreMode.INSERT; |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
213 } |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
214 else { |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
215 this.peer = columns.get(0); |
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
216 this.storeMode = StoreMode.UPDATE; |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
196
diff
changeset
|
217 } |
196
a33c065b95eb
Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
218 } |
8986
392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
mschaefer
parents:
8856
diff
changeset
|
219 return this.peer; |
196
a33c065b95eb
Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
220 } |
5542
f3b270e5462e
Wst Parser: Another attempt to fix the order of the Q ranges.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5237
diff
changeset
|
221 |
196
a33c065b95eb
Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
222 } |
a33c065b95eb
Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
223 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |