Mercurial > gemma
changeset 5530:3ccbb6162112 aggregate-gm-import-logging
WIP: More on GM import aggregation.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sun, 24 Oct 2021 23:06:24 +0200 |
parents | f95f268a83bd |
children | 84f0c53e6ffe |
files | pkg/imports/gm.go |
diffstat | 1 files changed, 71 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/pkg/imports/gm.go Sun Oct 24 20:16:41 2021 +0200 +++ b/pkg/imports/gm.go Sun Oct 24 23:06:24 2021 +0200 @@ -329,7 +329,7 @@ rescaleErrors []string assumedCM int missingValues []time.Time - badValue int + badValues int newM int newP int } @@ -366,13 +366,79 @@ gls.logUnknown(feedback) gls.logAssumedZPG(feedback) gls.logAssumedCM(feedback) - // TODO: bad values - // TODO: missing values - // TODO: rescale errors + gls.logBadValues(feedback) + gls.logMissingValues(feedback) + gls.logRescaleErrors(feedback) + // TODO: log ignoredMeasureCodes // TODO: new predictions // TODO: new measurements } +func (gls gmLogs) logRescaleErrors(feedback Feedback) { + var sb strings.Builder + for _, gl := range gls { + if len(gl.rescaleErrors) > 0 { + if sb.Len() == 0 { + sb.WriteString("Cannot convert units: ") + } else { + sb.WriteString("; ") + } + fmt.Fprintf(&sb, "%s (", gl.gid) + for i, e := range gl.rescaleErrors { + if i > 0 { + sb.WriteString(", ") + } + sb.WriteString(e) + } + sb.WriteByte(')') + } + } + if sb.Len() > 0 { + feedback.Error(sb.String()) + } +} + +func (gls gmLogs) logMissingValues(feedback Feedback) { + var sb strings.Builder + for _, gl := range gls { + if len(gl.missingValues) > 0 { + if sb.Len() == 0 { + sb.WriteString("Missing mandatory values: ") + } else { + sb.WriteString("; ") + } + fmt.Fprintf(&sb, "%s (", gl.gid) + for i, m := range gl.missingValues { + if i > 0 { + sb.WriteString(", ") + } + sb.WriteString(m.Format(time.RFC3339)) + } + sb.WriteByte(')') + } + } + if sb.Len() > 0 { + feedback.Warn(sb.String()) + } +} + +func (gls gmLogs) logBadValues(feedback Feedback) { + var sb strings.Builder + for _, gl := range gls { + if gl.badValues > 0 { + if sb.Len() == 0 { + sb.WriteString("Ignored measurements with value -99999: ") + } else { + sb.WriteString(", ") + } + fmt.Fprintf(&sb, "%s (%d)", gl.gid, gl.badValues) + } + } + if sb.Len() > 0 { + feedback.Warn(sb.String()) + } +} + func (gls gmLogs) logAssumedCM(feedback Feedback) { var sb strings.Builder for _, gl := range gls { @@ -547,7 +613,7 @@ // -99999 is used by some gauges to signal an error if *measure.Value == -99999 { - log.badValue++ + log.badValues++ continue }