annotate pkg/imports/gm.go @ 1694:4a2fad8f57de

Imports: Resolved golint issues unrelated to exported symbols commenting.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 03 Jan 2019 17:53:18 +0100
parents 774174d09d30
children ad5e1cddaa09
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1637
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
1 // This is Free Software under GNU Affero General Public License v >= 3.0
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
2 // without warranty, see README.md and license for details.
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
3 //
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
4 // SPDX-License-Identifier: AGPL-3.0-or-later
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
5 // License-Filename: LICENSES/AGPL-3.0.txt
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
6 //
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
7 // Copyright (C) 2018 by via donau
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
8 // – Österreichische Wasserstraßen-Gesellschaft mbH
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
9 // Software engineering by Intevation GmbH
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
10 //
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
11 // Author(s):
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
12 // * Raimund Renkert <raimund.renkert@intevation.de>
1694
4a2fad8f57de Imports: Resolved golint issues unrelated to exported symbols commenting.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 1688
diff changeset
13
1637
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
14 package imports
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
15
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
16 import (
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
17 "context"
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
18 "database/sql"
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
19 "errors"
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
20 "time"
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
21
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
22 "gemma.intevation.de/gemma/pkg/common"
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
23 "gemma.intevation.de/gemma/pkg/models"
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
24 "gemma.intevation.de/gemma/pkg/soap/nts"
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
25 )
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
26
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
27 type GaugeMeasurement struct {
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
28 URL string `json:"url"`
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
29 Insecure bool `json:"insecure"`
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
30 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
31
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
32 const GMJobKind JobKind = "gm"
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
33
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
34 const (
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
35 listGaugesSQL = `
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
36 SELECT
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
37 (location).country_code,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
38 (location).locode,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
39 (location).fairway_section,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
40 (location).orc,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
41 (location).hectometre
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
42 FROM waterway.gauges
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
43 WHERE (location).country_code = users.current_user_country()`
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
44
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
45 insertGMSQL = `
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
46 INSERT INTO waterway.gauge_measurements (
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
47 fk_gauge_id,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
48 measure_date,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
49 sender,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
50 language_code,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
51 date_issue,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
52 water_level,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
53 predicted,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
54 is_waterlevel,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
55 value_min,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
56 value_max,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
57 date_info,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
58 source_organization
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
59 ) VALUES(
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
60 ($1, $2, $3, $4, $5),
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
61 $6,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
62 $7,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
63 $8,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
64 $9,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
65 $10,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
66 $11,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
67 $12,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
68 $13,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
69 $14,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
70 $15,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
71 $16
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
72 )
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
73 RETURNING id`
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
74 )
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
75
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
76 type gmJobCreator struct{}
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
77
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
78 func init() {
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
79 RegisterJobCreator(GMJobKind, gmJobCreator{})
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
80 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
81
1646
a0982c38eac0 Import queue: Implemented email notifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1641
diff changeset
82 func (gmJobCreator) Description() string {
a0982c38eac0 Import queue: Implemented email notifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1641
diff changeset
83 return "gauge measurements"
a0982c38eac0 Import queue: Implemented email notifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1641
diff changeset
84 }
a0982c38eac0 Import queue: Implemented email notifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1641
diff changeset
85
1637
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
86 func (gmJobCreator) Create(_ JobKind, data string) (Job, error) {
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
87 gm := new(GaugeMeasurement)
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
88 if err := common.FromJSONString(data, gm); err != nil {
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
89 return nil, err
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
90 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
91 return gm, nil
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
92 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
93
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
94 func (gmJobCreator) Depends() []string {
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
95 return []string{
1664
819f67c31dfb Imports: Stripped schema prefixes from table dependencies.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1646
diff changeset
96 "gauges",
819f67c31dfb Imports: Stripped schema prefixes from table dependencies.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1646
diff changeset
97 "gauge_measurements",
1637
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
98 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
99 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
100
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
101 // StageDone moves the imported gauge measurement out of the staging area.
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
102 // Currently doing nothing.
1676
4407ecaa2192 Imports: Cosmetics.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1664
diff changeset
103 func (gmJobCreator) StageDone(context.Context, *sql.Tx, int64) error {
1637
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
104 return nil
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
105 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
106
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
107 // CleanUp of a gauge measurement import is a NOP.
1676
4407ecaa2192 Imports: Cosmetics.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1664
diff changeset
108 func (*GaugeMeasurement) CleanUp() error { return nil }
1637
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
109
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
110 // Do executes the actual bottleneck import.
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
111 func (gm *GaugeMeasurement) Do(
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
112 ctx context.Context,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
113 importID int64,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
114 conn *sql.Conn,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
115 feedback Feedback,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
116 ) (interface{}, error) {
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
117
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
118 // Get available gauges from database for use as filter in SOAP request
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
119 var rows *sql.Rows
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
120
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
121 rows, err := conn.QueryContext(ctx, listGaugesSQL)
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
122 if err != nil {
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
123 return nil, err
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
124 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
125 defer rows.Close()
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
126
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
127 gauges := []models.GaugeMeasurement{}
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
128
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
129 for rows.Next() {
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
130 var g models.GaugeMeasurement
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
131 if err = rows.Scan(
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
132 &g.Gauge.CountryCode,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
133 &g.Gauge.LoCode,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
134 &g.Gauge.FairwaySection,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
135 &g.Gauge.Orc,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
136 &g.Gauge.Hectometre,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
137 ); err != nil {
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
138 return nil, err
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
139 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
140 gauges = append(gauges, g)
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
141 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
142
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
143 if err = rows.Err(); err != nil {
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
144 return nil, err
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
145 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
146
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
147 // TODO get date_issue for selected gauges
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
148 gids, err := gm.doForGM(ctx, gauges, conn, feedback)
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
149 if err != nil {
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
150 feedback.Error("Error processing %d gauges: %s", len(gauges), err)
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
151 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
152 if len(gids) == 0 {
1638
2a35bbbb4d93 No new measurement are not an error. Fixed typos.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1637
diff changeset
153 feedback.Info("No new gauge measurements found")
2a35bbbb4d93 No new measurement are not an error. Fixed typos.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1637
diff changeset
154 return nil, nil
1637
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
155 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
156 // TODO: needs to be filled more useful.
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
157 summary := struct {
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
158 GaugeMeasuremets []string `json:"gaugeMeasurements"`
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
159 }{
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
160 GaugeMeasuremets: gids,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
161 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
162 return &summary, err
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
163 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
164
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
165 func (gm *GaugeMeasurement) doForGM(
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
166 ctx context.Context,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
167 gauges []models.GaugeMeasurement,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
168 conn *sql.Conn,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
169 feedback Feedback,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
170 ) ([]string, error) {
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
171 start := time.Now()
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
172
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
173 client := nts.NewINtSMessageService(gm.URL, gm.Insecure, nil)
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
174
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
175 var idPairs []*nts.Id_pair
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
176 for _, g := range gauges {
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
177 isrs := g.Gauge.String()
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
178 isrsID := nts.Isrs_code_type(isrs)
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
179 idPairs = append(idPairs, &nts.Id_pair{
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
180 Id: &isrsID,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
181 })
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
182 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
183 mt := nts.Message_type_typeWRM
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
184 req := &nts.Get_messages_query{
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
185 Message_type: &mt,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
186 Ids: idPairs,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
187 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
188 resp, err := client.Get_messages(req)
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
189 if err != nil {
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
190 feedback.Error("%v", err)
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
191 return nil, err
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
192 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
193
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
194 if resp.Result_message == nil {
1641
334d13e63342 Cosmetics.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1638
diff changeset
195 err := errors.New("no gauge measurements found")
1637
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
196 for i, e := range resp.Result_error {
1641
334d13e63342 Cosmetics.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1638
diff changeset
197 feedback.Error("%d: %v", i, e)
1637
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
198 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
199 return nil, err
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
200 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
201
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
202 result := resp.Result_message
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
203
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
204 tx, err := conn.BeginTx(ctx, nil)
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
205 if err != nil {
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
206 return nil, err
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
207 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
208 defer tx.Rollback()
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
209
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
210 insertStmt, err := tx.PrepareContext(ctx, insertGMSQL)
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
211 if err != nil {
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
212 return nil, err
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
213 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
214 defer insertStmt.Close()
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
215
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
216 var gid int64
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
217 var gids []string
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
218 for _, msg := range result {
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
219 feedback.Info("Found %d gauges with measurements", len(msg.Wrm))
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
220 for _, wrm := range msg.Wrm {
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
221 currIsrs, err := models.IsrsFromString(string(*wrm.Geo_object.Id))
1641
334d13e63342 Cosmetics.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1638
diff changeset
222 if err != nil {
334d13e63342 Cosmetics.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1638
diff changeset
223 feedback.Warn("Invalid ISRS code %v", err)
334d13e63342 Cosmetics.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1638
diff changeset
224 continue
334d13e63342 Cosmetics.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1638
diff changeset
225 }
1637
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
226 for _, measure := range wrm.Measure {
1641
334d13e63342 Cosmetics.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1638
diff changeset
227 isWaterlevel := *measure.Measure_code == nts.Measure_code_enumWAL
1637
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
228 err = insertStmt.QueryRowContext(
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
229 ctx,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
230 currIsrs.CountryCode,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
231 currIsrs.LoCode,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
232 currIsrs.FairwaySection,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
233 currIsrs.Orc,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
234 currIsrs.Hectometre,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
235 measure.Measuredate,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
236 msg.Identification.From,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
237 msg.Identification.Language_code,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
238 msg.Identification.Date_issue,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
239 measure.Value,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
240 measure.Predicted,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
241 isWaterlevel,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
242 measure.Value_min,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
243 measure.Value_max,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
244 msg.Identification.Date_issue,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
245 msg.Identification.Originator,
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
246 ).Scan(&gid)
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
247 if err != nil {
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
248 return nil, err
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
249 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
250 }
1641
334d13e63342 Cosmetics.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1638
diff changeset
251 feedback.Info("Inserted %d measurements for %s",
334d13e63342 Cosmetics.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1638
diff changeset
252 len(wrm.Measure), currIsrs)
1637
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
253 gids = append(gids, currIsrs.String())
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
254 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
255 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
256 feedback.Info("Storing gauge measurements took %s", time.Since(start))
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
257 if err = tx.Commit(); err == nil {
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
258 feedback.Info("Import of gauge measurements was successful")
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
259 }
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
260
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
261 return gids, nil
dd31be75ce6d Implemented gauge measurement import.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
262 }