diff pkg/imports/sr.go @ 3504:6e748f31777a

AGM/SR import. Limit logging of warnings to 100.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 28 May 2019 12:09:11 +0200
parents fdb0439850d5
children 4cd4375efd5d
line wrap: on
line diff
--- a/pkg/imports/sr.go	Tue May 28 11:49:40 2019 +0200
+++ b/pkg/imports/sr.go	Tue May 28 12:09:11 2019 +0200
@@ -35,6 +35,7 @@
 	shp "github.com/jonas-p/go-shp"
 
 	"gemma.intevation.de/gemma/pkg/common"
+	"gemma.intevation.de/gemma/pkg/misc"
 	"gemma.intevation.de/gemma/pkg/models"
 	"gemma.intevation.de/gemma/pkg/octree"
 )
@@ -460,19 +461,9 @@
 
 	var hasNegZ bool
 
-	const maxWarnings = 100
-	var warnings int
-
-	warn := func(format string, args ...interface{}) {
-		if warnings++; warnings <= maxWarnings {
-			feedback.Warn(format, args...)
-		}
-	}
-	defer func() {
-		if warnings > maxWarnings {
-			feedback.Warn("Too many warnings. %d ignored.", warnings-maxWarnings)
-		}
-	}()
+	warnLimiter := misc.WarningLimiter{Log: feedback.Warn, MaxWarnings: 100}
+	warn := warnLimiter.Warn
+	defer warnLimiter.Close()
 
 	for line := 1; s.Scan(); line++ {
 		text := s.Text()