changeset 5609:e1936db6db8e erdms2

Adjust ta erdms data structure.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 31 Oct 2022 17:51:54 +0100
parents df40d55f7c9a
children a826d84485c8
files pkg/imports/erdms.go pkg/imports/wg.go pkg/soap/erdms2/service.go
diffstat 3 files changed, 29 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/pkg/imports/erdms.go	Mon Oct 31 17:03:34 2022 +0100
+++ b/pkg/imports/erdms.go	Mon Oct 31 17:51:54 2022 +0100
@@ -22,7 +22,7 @@
 
 	"gemma.intevation.de/gemma/pkg/log"
 	"gemma.intevation.de/gemma/pkg/soap"
-	"gemma.intevation.de/gemma/pkg/soap/erdms"
+	erdms "gemma.intevation.de/gemma/pkg/soap/erdms2"
 )
 
 const (
@@ -87,10 +87,12 @@
 
 		feedback.Info("Request RIS index for country %s", country)
 
+		subcode := erdms.RisCodeType(country + "%")
+
 		request := &erdms.GetRisDataXML{
 			GetRisDataXMLType: &erdms.GetRisDataXMLType{
-				Subcode: erdms.NoNS{Text: country + "%"},
-				Funcode: erdms.NoNS{Text: funcode},
+				Subcode: &subcode,
+				Funcode: funcode,
 			},
 		}
 
--- a/pkg/imports/wg.go	Mon Oct 31 17:03:34 2022 +0100
+++ b/pkg/imports/wg.go	Mon Oct 31 17:51:54 2022 +0100
@@ -23,7 +23,8 @@
 
 	"gemma.intevation.de/gemma/pkg/models"
 	"gemma.intevation.de/gemma/pkg/pgxutils"
-	"gemma.intevation.de/gemma/pkg/soap/erdms"
+	"gemma.intevation.de/gemma/pkg/soap"
+	erdms "gemma.intevation.de/gemma/pkg/soap/erdms2"
 )
 
 // WaterwayGauge is a Job to load gauge data from
@@ -239,11 +240,14 @@
 			feedback.Info("Processing %s", code)
 
 			// We need a valid, non-empty time range to identify gauge versions
-			if dr.Enddate != nil && dr.Startdate != nil &&
-				!time.Time(*dr.Enddate).After(time.Time(*dr.Startdate)) {
-				feedback.Error("End date not after start date")
-				unchanged++
-				continue
+			if dr.Enddate != nil && dr.Startdate != nil {
+				ed := soap.XSDDateTime(*dr.Enddate)
+				sd := soap.XSDDateTime(*dr.Startdate)
+				if !ed.ToGoTime().After(sd.ToGoTime()) {
+					feedback.Error("End date not after start date")
+					unchanged++
+					continue
+				}
 			}
 
 			var from, to sql.NullInt64
@@ -264,8 +268,9 @@
 			var tfrom, tto, dateInfo pgtype.Timestamptz
 
 			if dr.Startdate != nil {
+				sd := soap.XSDDateTime(*dr.Startdate)
 				tfrom = pgtype.Timestamptz{
-					Time:   time.Time(*dr.Startdate),
+					Time:   sd.ToGoTime(),
 					Status: pgtype.Present,
 				}
 			} else {
@@ -275,8 +280,9 @@
 			}
 
 			if dr.Enddate != nil {
+				ed := soap.XSDDateTime(*dr.Enddate)
 				tto = pgtype.Timestamptz{
-					Time:   time.Time(*dr.Enddate),
+					Time:   ed.ToGoTime(),
 					Status: pgtype.Present,
 				}
 			} else {
@@ -294,8 +300,9 @@
 			}
 
 			if dr.Infodate != nil {
+				id := soap.XSDDateTime(*dr.Infodate)
 				dateInfo = pgtype.Timestamptz{
-					Time:   time.Time(*dr.Infodate),
+					Time:   id.ToGoTime(),
 					Status: pgtype.Present,
 				}
 			} else {
@@ -341,6 +348,7 @@
 				unchanged++
 				continue
 			case isNew:
+				lu := soap.XSDDateTime(*dr.Lastupdate)
 				// insert gauge version entry
 				if _, err = tx.StmtContext(ctx, insertStmt).ExecContext(ctx,
 					code.CountryCode,
@@ -357,7 +365,7 @@
 					geodref,
 					&dateInfo,
 					source,
-					time.Time(*dr.Lastupdate),
+					lu.ToGoTime(),
 				); err != nil {
 					feedback.Error(pgxutils.ReadableError{Err: err}.Error())
 					if err2 := tx.Rollback(); err2 != nil {
@@ -368,6 +376,7 @@
 				}
 				feedback.Info("insert new version")
 			case !isNew:
+				lu := soap.XSDDateTime(*dr.Lastupdate)
 				// try to update
 				var dummy int
 				err2 := tx.StmtContext(ctx, updateStmt).QueryRowContext(ctx,
@@ -384,7 +393,7 @@
 					geodref,
 					&dateInfo,
 					source,
-					time.Time(*dr.Lastupdate),
+					lu.ToGoTime(),
 					&validity,
 				).Scan(&dummy)
 				switch {
--- a/pkg/soap/erdms2/service.go	Mon Oct 31 17:03:34 2022 +0100
+++ b/pkg/soap/erdms2/service.go	Mon Oct 31 17:51:54 2022 +0100
@@ -1732,6 +1732,10 @@
 	client *soap.SOAPClient
 }
 
+func NewRefService(url string, tls bool, auth *soap.BasicAuth) RefWeb {
+	return NewRefWeb(soap.NewSOAPClient(url, tls, auth))
+}
+
 func NewRefWeb(client *soap.SOAPClient) RefWeb {
 	return &refWeb{
 		client: client,