feature: Entitiy data now serializes non-strings (#357)
This commit is contained in:
parent
652882350c
commit
09016e1d5f
|
|
@ -72,12 +72,12 @@ func loadEntityFileJson(filename string, entityname string) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
data := make([]map[string]string, 0)
|
data := make([]map[string]interface{}, 0)
|
||||||
|
|
||||||
decoder := json.NewDecoder(bytes.NewReader(jfile))
|
decoder := json.NewDecoder(bytes.NewReader(jfile))
|
||||||
|
|
||||||
for decoder.More() {
|
for decoder.More() {
|
||||||
d := make(map[string]string)
|
d := make(map[string]interface{})
|
||||||
|
|
||||||
err := decoder.Decode(&d)
|
err := decoder.Decode(&d)
|
||||||
|
|
||||||
|
|
@ -105,7 +105,7 @@ func loadEntityFileYaml(filename string, entityname string) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
data := make([]map[string]string, 1)
|
data := make([]map[string]interface{}, 1)
|
||||||
|
|
||||||
err = yaml.Unmarshal(yfile, &data)
|
err = yaml.Unmarshal(yfile, &data)
|
||||||
|
|
||||||
|
|
@ -116,7 +116,7 @@ func loadEntityFileYaml(filename string, entityname string) {
|
||||||
updateSvFromFile(entityname, data)
|
updateSvFromFile(entityname, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateSvFromFile(entityname string, data []map[string]string) {
|
func updateSvFromFile(entityname string, data []map[string]interface{}) {
|
||||||
log.Debugf("updateSvFromFile: %+v", data)
|
log.Debugf("updateSvFromFile: %+v", data)
|
||||||
|
|
||||||
count := len(data)
|
count := len(data)
|
||||||
|
|
@ -128,12 +128,34 @@ func updateSvFromFile(entityname string, data []map[string]string) {
|
||||||
for i, mapp := range data {
|
for i, mapp := range data {
|
||||||
prefix := "entities." + entityname + "." + fmt.Sprintf("%v", i)
|
prefix := "entities." + entityname + "." + fmt.Sprintf("%v", i)
|
||||||
|
|
||||||
for k, v := range mapp {
|
serializeValueToSv(prefix, mapp)
|
||||||
sv.Set(prefix+"."+k, v)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, l := range listeners {
|
for _, l := range listeners {
|
||||||
l()
|
l()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func serializeValueToSv(prefix string, value interface{}) {
|
||||||
|
if m, ok := value.(map[string]interface{}); ok { // if value is a map we need to flatten it
|
||||||
|
serializeMapToSv(prefix, m)
|
||||||
|
} else if s, ok := value.([]interface{}); ok { // if value is a slice we need to flatten it
|
||||||
|
serializeSliceToSv(prefix, s)
|
||||||
|
} else {
|
||||||
|
sv.Set(prefix, fmt.Sprintf("%v", value))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func serializeMapToSv(prefix string, m map[string]interface{}) {
|
||||||
|
for k, v := range m {
|
||||||
|
serializeValueToSv(prefix+"."+k, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func serializeSliceToSv(prefix string, s []interface{}) {
|
||||||
|
sv.Set(prefix+".count", fmt.Sprintf("%v", len(s)))
|
||||||
|
|
||||||
|
for i, v := range s {
|
||||||
|
serializeValueToSv(prefix+"."+fmt.Sprintf("%v", i), v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue