changeset 5531:84f0c53e6ffe aggregate-gm-import-logging

Completed GM logging aggregation. TODO: cleanup and dedup.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Sun, 24 Oct 2021 23:57:14 +0200
parents 3ccbb6162112
children 7e21a9e6353d
files pkg/imports/gm.go
diffstat 1 files changed, 74 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/pkg/imports/gm.go	Sun Oct 24 23:06:24 2021 +0200
+++ b/pkg/imports/gm.go	Sun Oct 24 23:57:14 2021 +0200
@@ -327,11 +327,11 @@
 	assumedZPG          bool
 	ignoredMeasureCodes []string
 	rescaleErrors       []string
+	missingValues       []string
 	assumedCM           int
-	missingValues       []time.Time
 	badValues           int
-	newM                int
-	newP                int
+	measurements        int
+	predictions         int
 }
 
 type gmLogs []*gmLog
@@ -369,9 +369,67 @@
 	gls.logBadValues(feedback)
 	gls.logMissingValues(feedback)
 	gls.logRescaleErrors(feedback)
-	// TODO: log ignoredMeasureCodes
-	// TODO: new predictions
-	// TODO: new measurements
+	gls.logIgnoredMeasureCodes(feedback)
+	gls.logPredictions(feedback)
+	gls.logMeasurements(feedback)
+}
+
+func (gls gmLogs) logMeasurements(feedback Feedback) {
+	var sb strings.Builder
+	for _, gl := range gls {
+		if gl.measurements > 0 {
+			if sb.Len() == 0 {
+				sb.WriteString("New measurements: ")
+			} else {
+				sb.WriteString("; ")
+			}
+			fmt.Fprintf(&sb, "%s (%d)", gl.gid, gl.measurements)
+		}
+	}
+	if sb.Len() > 0 {
+		feedback.Info(sb.String())
+	}
+}
+
+func (gls gmLogs) logPredictions(feedback Feedback) {
+	var sb strings.Builder
+	for _, gl := range gls {
+		if gl.predictions > 0 {
+			if sb.Len() == 0 {
+				sb.WriteString("New predictions: ")
+			} else {
+				sb.WriteString("; ")
+			}
+			fmt.Fprintf(&sb, "%s (%d)", gl.gid, gl.predictions)
+		}
+	}
+	if sb.Len() > 0 {
+		feedback.Info(sb.String())
+	}
+}
+
+func (gls gmLogs) logIgnoredMeasureCodes(feedback Feedback) {
+	var sb strings.Builder
+	for _, gl := range gls {
+		if len(gl.ignoredMeasureCodes) > 0 {
+			if sb.Len() == 0 {
+				sb.WriteString("Ignored measure codes: ")
+			} else {
+				sb.WriteString("; ")
+			}
+			fmt.Fprintf(&sb, "%s (", gl.gid)
+			for i, mc := range gl.ignoredMeasureCodes {
+				if i > 0 {
+					sb.WriteString(", ")
+				}
+				sb.WriteString(mc)
+			}
+			sb.WriteByte(')')
+		}
+	}
+	if sb.Len() > 0 {
+		feedback.Warn(sb.String())
+	}
 }
 
 func (gls gmLogs) logRescaleErrors(feedback Feedback) {
@@ -412,7 +470,7 @@
 				if i > 0 {
 					sb.WriteString(", ")
 				}
-				sb.WriteString(m.Format(time.RFC3339))
+				sb.WriteString(m)
 			}
 			sb.WriteByte(')')
 		}
@@ -429,7 +487,7 @@
 			if sb.Len() == 0 {
 				sb.WriteString("Ignored measurements with value -99999: ")
 			} else {
-				sb.WriteString(", ")
+				sb.WriteString("; ")
 			}
 			fmt.Fprintf(&sb, "%s (%d)", gl.gid, gl.badValues)
 		}
@@ -446,7 +504,7 @@
 			if sb.Len() == 0 {
 				sb.WriteString("'Unit' not specified. Assuming 'cm': ")
 			} else {
-				sb.WriteString(", ")
+				sb.WriteString("; ")
 			}
 			fmt.Fprintf(&sb, "%s (%d)", gl.gid, gl.assumedCM)
 		}
@@ -463,7 +521,7 @@
 			if sb.Len() == 0 {
 				sb.WriteString("Cannot find following gauges: ")
 			} else {
-				sb.WriteString(", ")
+				sb.WriteString("; ")
 			}
 			sb.WriteString(gl.gid)
 		}
@@ -480,7 +538,7 @@
 			if sb.Len() == 0 {
 				sb.WriteString("'Reference_code' not specified. Assuming 'ZPG': ")
 			} else {
-				sb.WriteString(", ")
+				sb.WriteString("; ")
 			}
 			sb.WriteString(gl.gid)
 		}
@@ -596,9 +654,9 @@
 				}
 
 				if measure.Value == nil {
-					log.missingValues = append(log.missingValues, measure.Measuredate.Time)
-					//feedback.Warn("Missing mandatory value at %s. Ignored (bad service)",
-					//	measure.Measuredate.Format(time.RFC3339))
+					log.missingValues = append(
+						log.missingValues,
+						measure.Measuredate.Time.Format(time.RFC3339))
 					continue
 				}
 
@@ -663,7 +721,7 @@
 					case err != nil:
 						feedback.Error(pgxutils.ReadableError{Err: err}.Error())
 					default:
-						log.newP++
+						log.predictions++
 					}
 				} else {
 					err = insertGMStmt.QueryRowContext(
@@ -689,7 +747,7 @@
 					case err != nil:
 						feedback.Error(pgxutils.ReadableError{Err: err}.Error())
 					default:
-						log.newM++
+						log.measurements++
 					}
 				}
 			}