112 lines
1.9 KiB
Go
112 lines
1.9 KiB
Go
package config
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"log"
|
|
|
|
"gopkg.in/yaml.v3"
|
|
|
|
"be.ems/lib/global"
|
|
)
|
|
|
|
type Uri2Object struct {
|
|
Uri string `yaml:"uri"`
|
|
Object []Object `yaml:"object"`
|
|
}
|
|
|
|
type Object struct {
|
|
Name string `yaml:"name"`
|
|
Syntax string `yaml:"syntax"`
|
|
Oid string `yaml:"oid"`
|
|
}
|
|
|
|
var uri2Object []Uri2Object
|
|
|
|
func ReadMap(pfile string) (ret error) {
|
|
file, err := ioutil.ReadFile(pfile)
|
|
if err != nil {
|
|
log.Println(err)
|
|
return err
|
|
}
|
|
|
|
err = yaml.Unmarshal(file, &uri2Object)
|
|
if err != nil {
|
|
log.Println(err)
|
|
return err
|
|
}
|
|
/*
|
|
for _, v := range uri2Object {
|
|
log.Println(v)
|
|
}
|
|
*/
|
|
return nil
|
|
}
|
|
|
|
func GetOid(uri string, oids *[]string) *[]string {
|
|
for _, v := range uri2Object {
|
|
if uri == v.Uri {
|
|
for _, o := range v.Object {
|
|
*oids = append(*oids, o.Oid)
|
|
}
|
|
}
|
|
}
|
|
|
|
return oids
|
|
}
|
|
|
|
func GetOidByFileds(uri string, fields []string, oids *[]string) *[]string {
|
|
for _, v := range uri2Object {
|
|
if uri == v.Uri {
|
|
for _, o := range v.Object {
|
|
if global.IsContain(o.Name, fields) || len(fields) == 0 {
|
|
*oids = append(*oids, o.Oid)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return oids
|
|
}
|
|
|
|
type NameOid struct {
|
|
Name string
|
|
Oid string
|
|
}
|
|
|
|
type NameValue struct {
|
|
Name string
|
|
Value string
|
|
}
|
|
|
|
func GetDataOid(Uri string, nameOids *[]NameOid) *[]NameOid {
|
|
var nameOid NameOid
|
|
for _, v := range uri2Object {
|
|
if Uri == v.Uri {
|
|
for _, o := range v.Object {
|
|
nameOid.Name = o.Name
|
|
nameOid.Oid = o.Oid
|
|
*nameOids = append(*nameOids, nameOid)
|
|
}
|
|
}
|
|
}
|
|
|
|
return nameOids
|
|
}
|
|
|
|
func GetDataOidByFields(uri string, fields []string, nameOids *[]NameOid) *[]NameOid {
|
|
var nameOid NameOid
|
|
for _, v := range uri2Object {
|
|
if uri == v.Uri {
|
|
for _, o := range v.Object {
|
|
nameOid.Name = o.Name
|
|
nameOid.Oid = o.Oid
|
|
if len(fields) == 0 || global.IsContainP(nameOid.Name, &fields, len(fields)) {
|
|
*nameOids = append(*nameOids, nameOid)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return nameOids
|
|
}
|