Mercurial > gemma
comparison pkg/imports/wg.go @ 1837:00d63eb9306a
Waterway gauges import: Finalized with re-inserting the reference water levels.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 16 Jan 2019 23:54:26 +0100 |
parents | 4dcdd8891770 |
children | 62b5f6e48e82 |
comparison
equal
deleted
inserted
replaced
1836:4dcdd8891770 | 1837:00d63eb9306a |
---|---|
119 zero_point = $12, | 119 zero_point = $12, |
120 geodref = $13, | 120 geodref = $13, |
121 date_info = $14, | 121 date_info = $14, |
122 source_organization = $15 | 122 source_organization = $15 |
123 ` | 123 ` |
124 insertReferenceWaterLevelsSQL = ` | |
125 INSERT INTO waterway.gauges_reference_water_levels ( | |
126 gauge_id, | |
127 reference_water_level, | |
128 value | |
129 ) VALUES ( | |
130 ($1::char(2), $2::char(3), $3::char(5), $4::char(5), $5::int), | |
131 $6, | |
132 $7 | |
133 ) | |
134 ` | |
124 ) | 135 ) |
125 | 136 |
126 func (wg *WaterwayGauge) Do( | 137 func (wg *WaterwayGauge) Do( |
127 ctx context.Context, | 138 ctx context.Context, |
128 importID int64, | 139 importID int64, |
129 conn *sql.Conn, | 140 conn *sql.Conn, |
130 feedback Feedback, | 141 feedback Feedback, |
131 ) (interface{}, error) { | 142 ) (interface{}, error) { |
143 | |
144 start := time.Now() | |
132 | 145 |
133 tx, err := conn.BeginTx(ctx, nil) | 146 tx, err := conn.BeginTx(ctx, nil) |
134 if err != nil { | 147 if err != nil { |
135 return nil, err | 148 return nil, err |
136 } | 149 } |
272 if err != nil { | 285 if err != nil { |
273 return nil, err | 286 return nil, err |
274 } | 287 } |
275 defer insertStmt.Close() | 288 defer insertStmt.Close() |
276 | 289 |
290 insertWaterLevelStmt, err := tx.PrepareContext( | |
291 ctx, insertReferenceWaterLevelsSQL) | |
292 if err != nil { | |
293 return nil, err | |
294 } | |
295 defer insertWaterLevelStmt.Close() | |
296 | |
277 // insert/update the gauges | 297 // insert/update the gauges |
278 for i := range news { | 298 for i := range news { |
279 ic := &news[i] | 299 ic := &news[i] |
280 dr := data.RisdataReturn[ic.idx] | 300 dr := data.RisdataReturn[ic.idx] |
281 | 301 |
372 source, | 392 source, |
373 ); err != nil { | 393 ); err != nil { |
374 return nil, err | 394 return nil, err |
375 } | 395 } |
376 | 396 |
377 // TODO: Reference water levels. | 397 for _, wl := range []struct { |
378 } | 398 level **erdms.RisreflevelcodeType |
379 | 399 value **erdms.RisreflevelvalueType |
380 // TODO: Implement me! | 400 }{ |
381 return nil, errors.New("Not implemented, yet!") | 401 {&dr.Reflevel1code, &dr.Reflevel1value}, |
402 {&dr.Reflevel2code, &dr.Reflevel2value}, | |
403 {&dr.Reflevel3code, &dr.Reflevel3value}, | |
404 } { | |
405 if *wl.level == nil || *wl.value == nil { | |
406 continue | |
407 } | |
408 if _, err := insertWaterLevelStmt.ExecContext( | |
409 ctx, | |
410 ic.code.CountryCode, | |
411 ic.code.LoCode, | |
412 ic.code.FairwaySection, | |
413 ic.code.Orc, | |
414 ic.code.Hectometre, | |
415 string(**wl.level), | |
416 int64(**wl.value), | |
417 ); err != nil { | |
418 return nil, err | |
419 } | |
420 } | |
421 } | |
422 | |
423 if err = tx.Commit(); err == nil { | |
424 feedback.Info("Refreshing gauges successfully took %s.", | |
425 time.Since(start)) | |
426 } else { | |
427 feedback.Error("Refreshing gauges failed after %s.", | |
428 time.Since(start)) | |
429 } | |
430 | |
431 return nil, err | |
382 } | 432 } |