Mercurial > gemma
diff pkg/models/gauge.go @ 1637:dd31be75ce6d
Implemented gauge measurement import.
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Thu, 20 Dec 2018 12:06:37 +0100 |
parents | |
children | 334d13e63342 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkg/models/gauge.go Thu Dec 20 12:06:37 2018 +0100 @@ -0,0 +1,70 @@ +// 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) 2018 by via donau +// – Österreichische Wasserstraßen-Gesellschaft mbH +// Software engineering by Intevation GmbH +// +// Author(s): +// * Raimund Renkert <raimund.renkert@intevation.de> + +package models + +import ( + "fmt" + "strconv" + "time" +) + +// GaugeMeasurementImport contains data used to define the endpoint +type GaugeMeasurementImport struct { + URL string `json:"url"` + Insecure bool `json:"insecure"` +} + +// GaugeMeasurement holds information about a gauge and the latest measurement +type GaugeMeasurement struct { + Gauge Isrs + LatestDateIssue time.Time +} + +// Isrs represents the gauge identification data structure +type Isrs struct { + CountryCode string + LoCode string + FairwaySection string + Orc string + Hectometre int +} + +// IsrsFromString converts string representation of isrs code to type Isrs +func IsrsFromString(isrsCode string) (*Isrs, error) { + if len(isrsCode) < 20 { + return nil, fmt.Errorf("to short") + } + hm, err := strconv.Atoi(isrsCode[15:20]) + if err != nil { + return nil, err + } + isrs := Isrs{ + CountryCode: isrsCode[0:2], + LoCode: isrsCode[2:5], + FairwaySection: isrsCode[5:10], + Orc: isrsCode[10:15], + Hectometre: hm, + } + return &isrs, nil +} + +// ToString creates a isrs code string from Isrs +func (isrs *Isrs) String() string { + return fmt.Sprintf("%s%s%s%s%05d", + isrs.CountryCode, + isrs.LoCode, + isrs.FairwaySection, + isrs.Orc, + isrs.Hectometre) +}