changeset 1993:9c65153bb56e

Manual import controller: Simplified code.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 24 Jan 2019 12:24:12 +0100
parents 0a8b9100d0f2
children a7c4005b723f
files pkg/controllers/manualimports.go
diffstat 1 files changed, 120 insertions(+), 128 deletions(-) [+]
line wrap: on
line diff
--- a/pkg/controllers/manualimports.go	Thu Jan 24 09:46:30 2019 +0100
+++ b/pkg/controllers/manualimports.go	Thu Jan 24 12:24:12 2019 +0100
@@ -26,6 +26,121 @@
 	"gemma.intevation.de/gemma/pkg/models"
 )
 
+func importBottleneck(input interface{}) (interface{}, common.Attributes, bool) {
+	bi := input.(*models.BottleneckImport)
+	bn := &imports.Bottleneck{
+		URL:      bi.URL,
+		Insecure: bi.Insecure,
+	}
+	return bn, bi.Attributes, bi.SendEmail
+}
+
+func importGaugeMeasurement(input interface{}) (interface{}, common.Attributes, bool) {
+	gi := input.(*models.GaugeMeasurementImport)
+	gm := &imports.GaugeMeasurement{
+		URL:      gi.URL,
+		Insecure: gi.Insecure,
+	}
+	return gm, gi.Attributes, gi.SendEmail
+}
+
+func importFairwayAvailability(input interface{}) (interface{}, common.Attributes, bool) {
+	fai := input.(*models.FairwayAvailabilityImport)
+	fa := &imports.FairwayAvailability{
+		URL:      fai.URL,
+		Insecure: fai.Insecure,
+	}
+	return fa, fai.Attributes, fai.SendEmail
+}
+
+func importWaterwayAxis(input interface{}) (interface{}, common.Attributes, bool) {
+	wxi := input.(*models.WaterwayAxisImport)
+	wx := &imports.WaterwayAxis{
+		URL:         wxi.URL,
+		FeatureType: wxi.FeatureType,
+		SortBy:      wxi.SortBy,
+	}
+	return wx, wxi.Attributes, wxi.SendEmail
+}
+
+func importWaterwayArea(input interface{}) (interface{}, common.Attributes, bool) {
+	wai := input.(*models.WaterwayAreaImport)
+	wa := &imports.WaterwayArea{
+		URL:         wai.URL,
+		FeatureType: wai.FeatureType,
+		SortBy:      wai.SortBy,
+	}
+	return wa, wai.Attributes, wai.SendEmail
+}
+
+func importWaterwayGauge(input interface{}) (interface{}, common.Attributes, bool) {
+	wgi := input.(*models.WaterwayGaugeImport)
+	username, _ := wgi.Attributes.Get("username")
+	password, _ := wgi.Attributes.Get("password")
+	insecure := wgi.Attributes.Bool("insecure")
+	wg := &imports.WaterwayGauge{
+		URL:      wgi.URL,
+		Username: username,
+		Password: password,
+		Insecure: insecure,
+	}
+	return wg, wgi.Attributes, wgi.SendEmail
+}
+
+func importDistancemarksVirtual(input interface{}) (interface{}, common.Attributes, bool) {
+	dmvi := input.(*models.DistanceMarksVirtualImport)
+	username, _ := dmvi.Attributes.Get("username")
+	password, _ := dmvi.Attributes.Get("password")
+	insecure := dmvi.Attributes.Bool("insecure")
+	wg := &imports.DistanceMarksVirtual{
+		URL:      dmvi.URL,
+		Username: username,
+		Password: password,
+		Insecure: insecure,
+	}
+	return wg, dmvi.Attributes, dmvi.SendEmail
+}
+
+func importFairwayDimension(input interface{}) (interface{}, common.Attributes, bool) {
+	fdi := input.(*models.FairwayDimensionImport)
+	fd := &imports.FairwayDimension{
+		URL:                fdi.URL,
+		FeatureType:        fdi.FeatureType,
+		SortBy:             fdi.SortBy,
+		LOS:                fdi.LOS,
+		MinWidth:           fdi.MinWidth,
+		MaxWidth:           fdi.MaxWidth,
+		Depth:              fdi.Depth,
+		SourceOrganization: fdi.SourceOrganization,
+	}
+	return fd, fdi.Attributes, fdi.SendEmail
+}
+
+func importDistanceMarksAshore(input interface{}) (interface{}, common.Attributes, bool) {
+	dmai := input.(*models.DistanceMarksAshoreImport)
+	dma := &imports.DistanceMarksAshore{
+		URL:         dmai.URL,
+		FeatureType: dmai.FeatureType,
+		SortBy:      dmai.SortBy,
+	}
+	return dma, dmai.Attributes, dmai.SendEmail
+}
+
+func importStretch(input interface{}) (interface{}, common.Attributes, bool) {
+	sti := input.(*models.StretchImport)
+	st := &imports.Stretch{
+		Name:      sti.Name,
+		From:      sti.From,
+		To:        sti.To,
+		ObjNam:    sti.ObjNam,
+		NObjNam:   sti.NObjNam,
+		Source:    sti.Source,
+		Date:      sti.Date,
+		Countries: sti.Countries,
+	}
+	return st, sti.Attributes, sti.SendEmail
+}
+
 func retry(a common.Attributes) (time.Time, *int, *time.Duration) {
 	due, _ := a.Time("due")
 	ret, ok := a.Int("retries")
@@ -41,140 +156,17 @@
 	return due, retries, duration
 }
 
-func importBottleneck(input interface{}) (interface{}, time.Time, *int, *time.Duration, bool) {
-	bi := input.(*models.BottleneckImport)
-	bn := &imports.Bottleneck{
-		URL:      bi.URL,
-		Insecure: bi.Insecure,
-	}
-	due, retries, duration := retry(bi.Attributes)
-	return bn, due, retries, duration, bi.SendEmail
-}
-
-func importGaugeMeasurement(input interface{}) (interface{}, time.Time, *int, *time.Duration, bool) {
-	gi := input.(*models.GaugeMeasurementImport)
-	gm := &imports.GaugeMeasurement{
-		URL:      gi.URL,
-		Insecure: gi.Insecure,
-	}
-	due, retries, duration := retry(gi.Attributes)
-	return gm, due, retries, duration, gi.SendEmail
-}
-
-func importFairwayAvailability(input interface{}) (interface{}, time.Time, *int, *time.Duration, bool) {
-	fai := input.(*models.FairwayAvailabilityImport)
-	fa := &imports.FairwayAvailability{
-		URL:      fai.URL,
-		Insecure: fai.Insecure,
-	}
-	due, retries, duration := retry(fai.Attributes)
-	return fa, due, retries, duration, fai.SendEmail
-}
-
-func importWaterwayAxis(input interface{}) (interface{}, time.Time, *int, *time.Duration, bool) {
-	wxi := input.(*models.WaterwayAxisImport)
-	wx := &imports.WaterwayAxis{
-		URL:         wxi.URL,
-		FeatureType: wxi.FeatureType,
-		SortBy:      wxi.SortBy,
-	}
-	due, retries, duration := retry(wxi.Attributes)
-	return wx, due, retries, duration, wxi.SendEmail
-}
-
-func importWaterwayArea(input interface{}) (interface{}, time.Time, *int, *time.Duration, bool) {
-	wai := input.(*models.WaterwayAreaImport)
-	wa := &imports.WaterwayArea{
-		URL:         wai.URL,
-		FeatureType: wai.FeatureType,
-		SortBy:      wai.SortBy,
-	}
-	due, retries, duration := retry(wai.Attributes)
-	return wa, due, retries, duration, wai.SendEmail
-}
-
-func importWaterwayGauge(input interface{}) (interface{}, time.Time, *int, *time.Duration, bool) {
-	wgi := input.(*models.WaterwayGaugeImport)
-	username, _ := wgi.Attributes.Get("username")
-	password, _ := wgi.Attributes.Get("password")
-	insecure := wgi.Attributes.Bool("insecure")
-	wg := &imports.WaterwayGauge{
-		URL:      wgi.URL,
-		Username: username,
-		Password: password,
-		Insecure: insecure,
-	}
-	due, retries, duration := retry(wgi.Attributes)
-	return wg, due, retries, duration, wgi.SendEmail
-}
-
-func importDistancemarksVirtual(input interface{}) (interface{}, time.Time, *int, *time.Duration, bool) {
-	dmvi := input.(*models.DistanceMarksVirtualImport)
-	username, _ := dmvi.Attributes.Get("username")
-	password, _ := dmvi.Attributes.Get("password")
-	insecure := dmvi.Attributes.Bool("insecure")
-	wg := &imports.DistanceMarksVirtual{
-		URL:      dmvi.URL,
-		Username: username,
-		Password: password,
-		Insecure: insecure,
-	}
-	due, retries, duration := retry(dmvi.Attributes)
-	return wg, due, retries, duration, dmvi.SendEmail
-}
-
-func importFairwayDimension(input interface{}) (interface{}, time.Time, *int, *time.Duration, bool) {
-	fdi := input.(*models.FairwayDimensionImport)
-	fd := &imports.FairwayDimension{
-		URL:                fdi.URL,
-		FeatureType:        fdi.FeatureType,
-		SortBy:             fdi.SortBy,
-		LOS:                fdi.LOS,
-		MinWidth:           fdi.MinWidth,
-		MaxWidth:           fdi.MaxWidth,
-		Depth:              fdi.Depth,
-		SourceOrganization: fdi.SourceOrganization,
-	}
-	due, retries, duration := retry(fdi.Attributes)
-	return fd, due, retries, duration, fdi.SendEmail
-}
-
-func importDistanceMarksAshore(input interface{}) (interface{}, time.Time, *int, *time.Duration, bool) {
-	dmai := input.(*models.DistanceMarksAshoreImport)
-	dma := &imports.DistanceMarksAshore{
-		URL:         dmai.URL,
-		FeatureType: dmai.FeatureType,
-		SortBy:      dmai.SortBy,
-	}
-	due, retries, duration := retry(dmai.Attributes)
-	return dma, due, retries, duration, dmai.SendEmail
-}
-
-func importStretch(input interface{}) (interface{}, time.Time, *int, *time.Duration, bool) {
-	sti := input.(*models.StretchImport)
-	st := &imports.Stretch{
-		Name:      sti.Name,
-		From:      sti.From,
-		To:        sti.To,
-		ObjNam:    sti.ObjNam,
-		NObjNam:   sti.NObjNam,
-		Source:    sti.Source,
-		Date:      sti.Date,
-		Countries: sti.Countries,
-	}
-	due, retries, duration := retry(sti.Attributes)
-	return st, due, retries, duration, sti.SendEmail
-}
-
 func manualImport(
 	kind imports.JobKind,
-	setup func(interface{}) (interface{}, time.Time, *int, *time.Duration, bool),
+	setup func(interface{}) (interface{}, common.Attributes, bool),
 ) func(interface{}, *http.Request, *sql.Conn) (JSONResult, error) {
 
 	return func(input interface{}, req *http.Request, _ *sql.Conn) (
 		jr JSONResult, err error) {
 
-		what, due, retries, waitDuration, sendEmail := setup(input)
+		what, attrs, sendEmail := setup(input)
+
+		due, retries, waitRetry := retry(attrs)
 
 		var serialized string
 		if serialized, err = common.ToJSONString(what); err != nil {
@@ -188,7 +180,7 @@
 			kind,
 			due,
 			retries,
-			waitDuration,
+			waitRetry,
 			session.User,
 			sendEmail,
 			serialized,