changeset 5260:771984cb74d8

Merged branch new-fwa.
author Sascha Wilde <wilde@intevation.de>
date Wed, 13 May 2020 11:44:22 +0200
parents 680be197844d (current diff) 0446a6e230b4 (diff)
children 93b95ac2cf5b
files pkg/common/round.go
diffstat 2 files changed, 6 insertions(+), 71 deletions(-) [+]
line wrap: on
line diff
--- a/pkg/common/round.go	Wed May 13 11:28:34 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-// This is Free Software under GNU Affero General Public License v >= 3.0
-// without warranty, see README.md and license for details.
-//
-// SPDX-License-Identifier: AGPL-3.0-or-later
-// License-Filename: LICENSES/AGPL-3.0.txt
-//
-// Copyright (C) 2019 by via donau
-//   – Österreichische Wasserstraßen-Gesellschaft mbH
-// Software engineering by Intevation GmbH
-//
-// Author(s):
-//  * Sascha Wilde <wilde@sha-bang.de>
-
-package common
-
-import (
-	"math"
-	"sort"
-	"time"
-)
-
-// SumPreservingRound rounds the values of arr preserving the sum.
-func SumPreservingRound(arr []float64) []int {
-
-	type rest struct {
-		key  int
-		rest float64
-	}
-
-	var (
-		result = make([]int, len(arr))
-		rests  = make([]rest, len(arr))
-		sum    float64
-		newSum int
-	)
-
-	// floor all values
-	for i, v := range arr {
-		sum += v
-		result[i] = int(v)
-		newSum += int(v)
-		rests[i] = rest{key: i, rest: v - float64(result[i])}
-	}
-
-	// spread delta over values with highest rest
-	sort.Slice(rests, func(i, j int) bool {
-		return rests[i].rest > rests[j].rest
-	})
-
-	// find the difference in sums
-	delta := int(math.Round(sum)) - newSum
-	for _, v := range rests {
-		if delta <= 0 {
-			break
-		}
-		result[v.key]++
-		delta--
-	}
-
-	return result
-}
-
-// RoundToFullDays rounds durations to full days.
-func RoundToFullDays(durations []time.Duration) []int {
-	days := make([]float64, len(durations))
-	for i, v := range durations {
-		days[i] = v.Hours() / 24
-	}
-	return SumPreservingRound(days)
-}
--- a/pkg/controllers/fwa.go	Wed May 13 11:28:34 2020 +0200
+++ b/pkg/controllers/fwa.go	Wed May 13 11:44:22 2020 +0200
@@ -432,7 +432,12 @@
 		}
 	}
 
-	// TODO: Log missing LDCs
+	for i, days := range missingLDCs {
+		if missingLDCs[i] > 0 {
+			log.Printf("warn: Missing LDCs for %s on %d days.\n",
+				bns[i].id, days)
+		}
+	}
 
 	out.Flush()
 	if err := out.Error(); err != nil {