# HG changeset patch # User Sascha L. Teichmann # Date 1548082014 -3600 # Node ID e6d851f53c99530c0cf8d23d3d5e2e64d9aac44a # Parent 148917b4f859b00319916e567416496019661307 Fairway dimension import: Made date parsing more tolerant. diff -r 148917b4f859 -r e6d851f53c99 pkg/imports/fd.go --- a/pkg/imports/fd.go Mon Jan 21 15:19:13 2019 +0100 +++ b/pkg/imports/fd.go Mon Jan 21 15:46:54 2019 +0100 @@ -23,6 +23,7 @@ "time" "gemma.intevation.de/gemma/pkg/common" + "gemma.intevation.de/gemma/pkg/misc" "gemma.intevation.de/gemma/pkg/wfs" ) @@ -44,12 +45,18 @@ type fdTime struct{ time.Time } +var guessFDTime = misc.TimeGuesser([]string{ + "20060102", + "2006", + "", +}).Guess + func (fdt *fdTime) UnmarshalJSON(data []byte) error { var s string if err := json.Unmarshal(data, &s); err != nil { return err } - t, err := time.Parse("20060102", s) + t, err := guessFDTime(s) if err == nil { *fdt = fdTime{t} } @@ -101,7 +108,7 @@ func (*FairwayDimension) CleanUp() error { return nil } type fairwayDimensionProperties struct { - HydroSorDat fdTime `json:"hydro_sordat"` + HydroSorDat *fdTime `json:"hydro_sordat"` } type fdSummary struct { @@ -252,6 +259,12 @@ badProperties++ continue } + var dateInfo time.Time + if props.HydroSorDat == nil || props.HydroSorDat.IsZero() { + dateInfo = start + } else { + dateInfo = (*props.HydroSorDat).Time + } switch feature.Geometry.Type { case "Polygon": var p polygonSlice @@ -268,7 +281,7 @@ fd.MinWidth, fd.MaxWidth, fd.Depth, - props.HydroSorDat.Time, + dateInfo, fd.SourceOrganization, ).Scan(&fdid, &lat, &lon) switch {