From b71e0d0f9aa519d3964a1e5d8bc881bbfe60ee0b Mon Sep 17 00:00:00 2001 From: Shane Date: Mon, 1 Feb 2021 10:39:51 -0500 Subject: [PATCH 1/2] Return paths from index method, resolves #3 --- tools/definition.go | 3 +++ tools/model.go | 11 ++++++----- tools/utils.go | 10 ++++++++++ 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/tools/definition.go b/tools/definition.go index 861ef62..0310bcd 100644 --- a/tools/definition.go +++ b/tools/definition.go @@ -125,6 +125,9 @@ func getDefinitionData(hm *HmsModel) error { switch strings.TrimSpace(data[0]) { + case "Project": + hm.Title = data[1] + case "Description:": if projectBlock { hm.Description = data[1] diff --git a/tools/model.go b/tools/model.go index aa88ca7..f89c941 100644 --- a/tools/model.go +++ b/tools/model.go @@ -68,6 +68,7 @@ type SupplementalFiles struct { // HmsModel ... type HmsModel struct { Type string + Title string Version string Description string FileStore filestore.FileStore @@ -151,19 +152,19 @@ func (hm *HmsModel) Index() Model { mod := Model{ Type: hm.Type, Version: hm.Version, - DefinitionFile: hm.DefinitionFile, + DefinitionFile: BuildFilePath(hm.ModelDirectory, hm.DefinitionFile), Files: ModelFiles{ InputFiles: InputFiles{ ControlFiles: ControlFiles{ - Paths: hm.Files.InputFiles.ControlFiles, + Paths: buildFilePaths(hm.ModelDirectory, hm.Files.InputFiles.ControlFiles), Data: make(map[string]interface{}), }, ForcingFiles: ForcingFiles{ - Paths: hm.Files.InputFiles.ForcingFiles, + Paths: buildFilePaths(hm.ModelDirectory, hm.Files.InputFiles.ForcingFiles), Data: make(map[string]interface{}), }, GeometryFiles: GeometryFiles{ - Paths: hm.Files.InputFiles.GeometryFiles, + Paths: buildFilePaths(hm.ModelDirectory, hm.Files.InputFiles.GeometryFiles), FeaturesProperties: make(map[string]interface{}), Georeference: nil, }, @@ -171,7 +172,7 @@ func (hm *HmsModel) Index() Model { LocalVariables: nil, }, OutputFiles: OutputFiles{ - Paths: hm.Files.OutputFiles.Paths(), + Paths: buildFilePaths(hm.ModelDirectory, hm.Files.OutputFiles.Paths()), ModelPrediction: nil, RunFiles: make([]string, 0), RunLogs: make([]string, 0), diff --git a/tools/utils.go b/tools/utils.go index fecb452..c8dd7bf 100644 --- a/tools/utils.go +++ b/tools/utils.go @@ -33,3 +33,13 @@ func BuildFilePath(modelDirectory, fileName string) string { return filepath.Join(modelDirectory, strings.Replace(fileName, "\\", "/", -1)) } + +//buildFilePaths ... +func buildFilePaths(modelDirectory string, fileNames []string) []string { + filePaths := make([]string, len(fileNames)) + for i, fileName := range fileNames { + filePaths[i] = BuildFilePath(modelDirectory, fileName) + } + return filePaths + +} From 9dd21d827facd6cdb20ef551dd5d6133ef08e4d7 Mon Sep 17 00:00:00 2001 From: Shane Date: Mon, 1 Feb 2021 14:25:44 -0500 Subject: [PATCH 2/2] Extract the control, focing, and geom titles --- tools/control.go | 3 +++ tools/forcing.go | 4 ++++ tools/geom.go | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/tools/control.go b/tools/control.go index f27db69..11a7aaf 100644 --- a/tools/control.go +++ b/tools/control.go @@ -9,6 +9,7 @@ import ( // HmsControlData ... type HmsControlData struct { + Title string Description string StartDate string `json:"Start Date"` StartTime string `json:"Start Time"` @@ -47,6 +48,8 @@ func getControlData(hm *HmsModel, file string, wg *sync.WaitGroup) { data := strings.Split(line, ": ") switch strings.TrimSpace(data[0]) { + case "Control": + controlData.Title = data[1] case "Description": controlData.Description = data[1] diff --git a/tools/forcing.go b/tools/forcing.go index 52d04a0..b3ce0a8 100644 --- a/tools/forcing.go +++ b/tools/forcing.go @@ -9,6 +9,7 @@ import ( // HmsForcingData ... type HmsForcingData struct { + Title string Description string Units string `json:"Unit System"` MissingToDefault string `json:"Set Missing Data to Default"` @@ -52,6 +53,9 @@ func getForcingData(hm *HmsModel, file string, wg *sync.WaitGroup) { switch strings.TrimSpace(data[0]) { + case "Meteorology": + forcingData.Title = data[1] + case "Description": forcingData.Description = data[1] diff --git a/tools/geom.go b/tools/geom.go index 524b34c..4bc40ab 100644 --- a/tools/geom.go +++ b/tools/geom.go @@ -10,6 +10,7 @@ import ( // HmsGeometryData ... type HmsGeometryData struct { + Title string Description string Units string `json:"Unit System"` MissingtoZero string `json:"Missing Flow To Zero"` @@ -89,6 +90,9 @@ out: switch key { + case "Basin": + geometryData.Title = strings.TrimSpace(data[1]) + case "Description": geometryData.Description = strings.TrimSpace(data[1])