1
This commit is contained in:
parent
9f7943ca94
commit
a10ae56c4f
66
metamgr.go
Normal file
66
metamgr.go
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
package f5
|
||||||
|
|
||||||
|
type MetaClass struct {
|
||||||
|
FileName string
|
||||||
|
Idx int
|
||||||
|
RawMeta interface{}
|
||||||
|
WrapMeta interface{}
|
||||||
|
PrimKey string
|
||||||
|
}
|
||||||
|
|
||||||
|
type MetaMgr struct {
|
||||||
|
metaClasses *[]MetaClass
|
||||||
|
rawData []interface{}
|
||||||
|
wrapList []interface{}
|
||||||
|
wrapIdHash []map[int32]interface{}
|
||||||
|
wrapNameHash []map[string]interface{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *MetaMgr) Init() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *MetaMgr) UnInit() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *MetaMgr) RegisterMetaClasses(metaClasses *[]MetaClass) {
|
||||||
|
this.metaClasses = metaClasses
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *MetaMgr) Load() {
|
||||||
|
for k, _ := range this.rawData {
|
||||||
|
_ = this.wrapList[k]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *MetaMgr) GetMetaById(idx int, id int32) interface{} {
|
||||||
|
if idx >=0 && idx < len(this.wrapIdHash) {
|
||||||
|
idHash := this.wrapIdHash[idx]
|
||||||
|
if v, ok := idHash[id]; ok {
|
||||||
|
return v
|
||||||
|
} else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *MetaMgr) GetMetaByName(idx int, name string) interface{} {
|
||||||
|
if idx >=0 && idx < len(this.wrapNameHash) {
|
||||||
|
nameHash := this.wrapNameHash[idx]
|
||||||
|
if v, ok := nameHash[name]; ok {
|
||||||
|
return v
|
||||||
|
} else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *MetaMgr) GetMetaList(idx int) interface{} {
|
||||||
|
if idx >=0 && idx < len(this.wrapList) {
|
||||||
|
return this.wrapList[idx]
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
65
metautils.go
65
metautils.go
@ -1,7 +1,6 @@
|
|||||||
package f5
|
package f5
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"q5"
|
|
||||||
"os"
|
"os"
|
||||||
"bufio"
|
"bufio"
|
||||||
"reflect"
|
"reflect"
|
||||||
@ -9,34 +8,9 @@ import (
|
|||||||
|
|
||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
"github.com/golang/protobuf/jsonpb"
|
"github.com/golang/protobuf/jsonpb"
|
||||||
"google.golang.org/protobuf/reflect/protoreflect"
|
|
||||||
"google.golang.org/protobuf/reflect/protoregistry"
|
"google.golang.org/protobuf/reflect/protoregistry"
|
||||||
)
|
)
|
||||||
|
|
||||||
func ReadCsvMetaFile(fileName string, list interface{}) {
|
|
||||||
msgType := reflect.TypeOf(list).Elem().Elem().Elem()
|
|
||||||
|
|
||||||
csvReader := &q5.CsvReader{}
|
|
||||||
csvReader.Load(fileName)
|
|
||||||
for csvReader.NextLine() {
|
|
||||||
msg := reflect.New(msgType)
|
|
||||||
msgPb := msg.Interface().(proto.Message)
|
|
||||||
|
|
||||||
msgReflect := proto.MessageReflect(msgPb)
|
|
||||||
msgDesc := msgReflect.Descriptor()
|
|
||||||
fields := msgDesc.Fields()
|
|
||||||
for i := 0; i < fields.Len(); i++ {
|
|
||||||
field := fields.Get(i)
|
|
||||||
|
|
||||||
value := csvReader.GetValue(string(field.Name()))
|
|
||||||
xvalueToPBSampleField(value, field, msgReflect)
|
|
||||||
}
|
|
||||||
|
|
||||||
newList := reflect.Append(reflect.ValueOf(list), msg)
|
|
||||||
reflect.ValueOf(list).Elem().Set(newList)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func ReadJsonMetaFile(fileName string, list interface{}) {
|
func ReadJsonMetaFile(fileName string, list interface{}) {
|
||||||
msgType := reflect.TypeOf(list).Elem().Elem().Elem()
|
msgType := reflect.TypeOf(list).Elem().Elem().Elem()
|
||||||
msg := reflect.New(msgType)
|
msg := reflect.New(msgType)
|
||||||
@ -50,10 +24,11 @@ func ReadJsonMetaFile(fileName string, list interface{}) {
|
|||||||
data, _ := bufio.NewReader(f).ReadString(0)
|
data, _ := bufio.NewReader(f).ReadString(0)
|
||||||
data = "{\"values\":" + data
|
data = "{\"values\":" + data
|
||||||
data += "}"
|
data += "}"
|
||||||
err := jsonpb.Unmarshal(f, proto.MessageV1(metaList))
|
err := jsonpb.UnmarshalString(data, proto.MessageV1(metaList))
|
||||||
if err == nil {
|
if err == nil {
|
||||||
fmt.Println("json decode ok", data)
|
fmt.Println("json decode ok", data)
|
||||||
}
|
}
|
||||||
|
fmt.Println(err)
|
||||||
|
|
||||||
/* msgReflect = proto.MessageReflect(proto.MessageV1(metaList))
|
/* msgReflect = proto.MessageReflect(proto.MessageV1(metaList))
|
||||||
msgDesc = msgReflect.Descriptor()
|
msgDesc = msgReflect.Descriptor()
|
||||||
@ -64,39 +39,3 @@ func ReadJsonMetaFile(fileName string, list interface{}) {
|
|||||||
fmt.Println(valuesField, values)*/
|
fmt.Println(valuesField, values)*/
|
||||||
}
|
}
|
||||||
|
|
||||||
func xvalueToPBSampleField(
|
|
||||||
value *q5.XValue,
|
|
||||||
field protoreflect.FieldDescriptor,
|
|
||||||
msgReflect protoreflect.Message) {
|
|
||||||
switch field.Kind() {
|
|
||||||
case protoreflect.BoolKind:
|
|
||||||
msgReflect.Set(field, protoreflect.ValueOfBool(value.GetInt64() != 0))
|
|
||||||
break
|
|
||||||
case protoreflect.EnumKind:
|
|
||||||
break
|
|
||||||
case
|
|
||||||
protoreflect.Int32Kind, protoreflect.Sint32Kind,
|
|
||||||
protoreflect.Sfixed32Kind, protoreflect.Fixed32Kind:
|
|
||||||
break
|
|
||||||
case protoreflect.Uint32Kind:
|
|
||||||
break
|
|
||||||
case
|
|
||||||
protoreflect.Int64Kind, protoreflect.Sint64Kind,
|
|
||||||
protoreflect.Sfixed64Kind, protoreflect.Fixed64Kind:
|
|
||||||
break
|
|
||||||
case protoreflect.Uint64Kind:
|
|
||||||
break
|
|
||||||
case protoreflect.FloatKind:
|
|
||||||
break
|
|
||||||
case protoreflect.DoubleKind:
|
|
||||||
break
|
|
||||||
case protoreflect.StringKind:
|
|
||||||
break
|
|
||||||
case protoreflect.BytesKind:
|
|
||||||
break
|
|
||||||
case protoreflect.MessageKind:
|
|
||||||
break
|
|
||||||
case protoreflect.GroupKind:
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user