Example #1
0
        public void Load(XmlDocument xdoc)
        {
            LoadStandart();

            foreach (XmlNode xproject in xdoc.SelectNodes("descendant::project"))
            {
                MEDMProject pr = Load <MEDMProject>(xproject);
                foreach (XmlNode xclass in xproject.SelectNodes("descendant::class"))
                {
                    MEDMClass c = Load <MEDMClass>(xclass);
                    pr.Classes.Add(c);
                    foreach (XmlNode xprop in xclass.SelectNodes("descendant::prop"))
                    {
                        MEDMProp p = Load <MEDMProp>(xprop, c.Name);
                        c.Props.Add(p);
                    }
                }
            }
        }
Example #2
0
        public void LoadStandart()
        {
            MEDMClass c = null;
            MEDMProp  p = null;

            //----------------------------------------------------
            c        = MainDic.NewObj <MEDMClass>("MEDMIdObj");
            c.Header = "Базовый класс для конфигураций";

            p        = MainDic.NewObj <MEDMProp>("MEDMIdObj.Id");
            p.Header = "Id";
            c.Props.Add(p);

            //----------------------------------------------------
            c        = MainDic.NewObj <MEDMClass>("MEDMNameObj");
            c.Header = "Базовый класс для объектов с автоинкрементным Id";

            p        = MainDic.NewObj <MEDMProp>("MEDMNameObj.Id");
            p.Header = "Id";
            c.Props.Add(p);

            //----------------------------------------------------
            c        = MainDic.NewObj <MEDMClass>("MEDMGuidObj");
            c.Header = "Базовый класс для объектов с Guid";

            p        = MainDic.NewObj <MEDMProp>("MEDMGuidObj.Id");
            p.Header = "Id";
            c.Props.Add(p);

            //----------------------------------------------------
            c        = MainDic.NewObj <MEDMClass>("MEDMCfgObj");
            c.Header = "Базовый класс для конфигураций";
            c.BaseId = "MEDMNameObj";

            p        = MainDic.NewObj <MEDMProp>("MEDMCfgObj.Id");
            p.Header = "Наименование";
            c.Props.Add(p);
        }
Example #3
0
        // Класс модели
        public string GenClassesClass(MEDMClass mc)
        {
            _ = $@"#region [{mc.Name}] {mc.Header}";
            if (mc.Type == MEDMClassType.ENUM)
            {
                _ = $@"public enum {mc.Name}";
                _ = $"{{";
                _ = $@"NONE=0    // не задано";
                foreach (MEDMProp mp in mc.Props)
                {
                    _ = $@",{mp.Name}    // {mp.Header}";
                }
                _ = $"}}";
            }
            else
            {
                _ = $@"[DbTable(Type = ""{mc.Type}"")]";
                _ = $@"[EDMClass(Header = ""{mc.Header}"")]";
                _ = $@"public partial class {mc.Name}: {mc.Base.Name}";
                _ = $"{{";
                foreach (MEDMProp mp in mc.Props)
                {
                    GenClassesProp(mp, mc);
                }
                if (!string.IsNullOrEmpty(mc.ToString))
                {
                    _ = $@"public override string ToString()";
                    _ = $@"{{";
                    _ = $@"return $""{mc.ToString}"";";
                    _ = $@"}}";
                }
                _ = $"}}";
            }
            _ = $"#endregion";

            return(Result.ToString());
        }
Example #4
0
        // Свойство класса
        public string GenClassesProp(MEDMProp mp, MEDMClass mc)
        {
            _ = $"#region [{mp.Name}] {mp.Header}";
            switch (mp.Type)
            {
            // Не задано
            case MEDMPropType.NONE:
            {
                break;
            }

            // Ссылка или конфигурация
            case MEDMPropType.CFG:
            case MEDMPropType.REF:
            {
                if (mp.Ref == null)
                {
                    __ = $"error: {mc.Name}.{mp.Name} - ссылка не задан или задан неправильно ({mp.RefId})";
                    break;
                }
                if (mp.Ref.IdType == null)
                {
                    __ = $"error: {mc.Name}.{mp.Name} - тип ссылки определить невозможно ({mp.RefId})";
                    break;
                }
                _ = $@"
                            private {mp.Ref.IdType.Name} _{mp.Name}Id = default({mp.Ref.IdType.Name});
                            [DbColumn(Type = ""{mp.Ref.IdColumnType}"", Def =""{mp.Ref.IdColumnDef}"", Virtual ={mp.Virtual.ToString().ToLower()})]
                            [EDMProperty(PropType=""{mp.Type}"", ItemType=typeof({mp.Ref.IdType.Name}), Header=""{mp.Header} (Id)"", Virtual ={mp.Virtual.ToString().ToLower()})]
                            {mp.JsonIgnoreAttribute}
                            public {mp.Ref.IdType.Name} {mp.Name}Id
                            {{
                                get 
                                {{
                                    return _{mp.Name}Id;
                                }}
                                set 
                                {{
                                    Model.UpdateProperty(this, ""{mp.Name}Id"", _{mp.Name}Id, value, typeof({mp.Ref.IdType.Name}), typeof({mp.Ref.Name}), {mp.Virtual.ToString().ToLower()});
                                    _{mp.Name}Id=value;
                                }}
                            }}";


                _ = $@"
                            private {mp.Ref.Name} _{mp.Name} = default({mp.Ref.Name});
                            [EDMProperty(PropType=""{mp.Type}"", ItemType=typeof({mp.Ref.Name}), Header=""{mp.Header}"", Virtual ={mp.Virtual.ToString().ToLower()})]
                            {mp.JsonIgnoreAttribute}
                            public {mp.Ref.Name} {mp.Name}
                            {{
                                get 
                                {{
                                    if (_{mp.Name}==null && _{mp.Name}Id!=default({mp.Ref.IdType.Name}))
                                    {{
                                        Model.UpdateFutureRef(typeof({mp.Ref.Name}), ""{mp.Ref.Name}"", ""Id"", ""{mp.Ref.IdType}"");
                                        _{mp.Name} = Model.MainDic.GetObj<{mp.Ref.Name}>({mp.Name}Id);
                                    }}
                                    return _{mp.Name};
                                }}
                            }}
                            //public bool ShouldSerialize{mp.Ref.Name}()
                            //{{
                            //    return false;
                            //}}
                            ";
                break;
            }

            // Свойства
            case MEDMPropType.PROPS:
            {
                _ = $@"
                            private string _S{mp.Name} = default(string);
                            [DbColumn(Type = ""nvarchar(MAX)"", Def =""''"", Virtual ={mp.Virtual.ToString().ToLower()})]
                            [EDMProperty(PropType=""PROPS"", ItemType=typeof(String), Header=""{mp.Header}"", Virtual ={mp.Virtual.ToString().ToLower()})]
                            {mp.JsonIgnoreAttribute}
                            public string S{mp.Name}
                            {{
                                get 
                                {{
                                    return _S{mp.Name};
                                }}
                                set 
                                {{
                                    Model.UpdateProperty(this, ""S{mp.Name}"", _S{mp.Name}, value, typeof(string), null, {mp.Virtual.ToString().ToLower()});
                                    _S{mp.Name}=value;
                                }}
                            }}
                            private MProps _{mp.Name} = null;
                            [Ignore]
                            {mp.JsonIgnoreAttribute}
                            public MProps {mp.Name}
                            {{
                                get 
                                {{
                                    if (_{mp.Name}==null) _{mp.Name}= new MProps(this, ""S{mp.Name}"");    
                                    return _{mp.Name};
                                }}
                            }}";
                break;
            }

            // Список
            case MEDMPropType.LIST:
            {
                if (mp.Ref == null)
                {
                    __ = $"error: {mc.Name}.{mp.Name} - ссылка не задан или задан неправильно ({mp.RefId})";
                    break;
                }
                if (mp.Ref.IdType == null)
                {
                    __ = $"error: {mc.Name}.{mp.Name} - тип ссылки определить невозможно ({mp.RefId})";
                    break;
                }
                _ = $@"
                            private List<{mp.Ref.Name}> _{mp.Name} = null;
                            [EDMProperty(PropType=""{mp.Type}"", ItemType=typeof({mp.Ref.Name}), Header=""{mp.Header}"", Virtual ={mp.Virtual.ToString().ToLower()})]
                            {mp.JsonIgnoreAttribute}
                            public List<{mp.Ref.Name}> {mp.Name}
                            {{
                                get 
                                {{
                                    if (_{mp.Name}==null)
                                    {{
                                        _{mp.Name} = new List<{mp.Ref.Name}>();
                                    }}
                                    return _{mp.Name};
                                }}
                            }}
                            ";
                break;
            }
                {
                    if (mp.Ref == null)
                    {
                        __ = $"error: {mc.Name}.{mp.Name} - ссылка не задан или задан неправильно ({mp.RefId})";
                        break;
                    }
                    if (mp.Ref.IdType == null)
                    {
                        __ = $"error: {mc.Name}.{mp.Name} - тип ссылки определить невозможно ({mp.RefId})";
                        break;
                    }
                    _ = $@"
                            private Dictionary<string, List<{mp.Ref.Name}>> _{mp.Name} = null;
                            [EDMProperty(PropType=""{mp.Type}"", ItemType=typeof({mp.Ref.Name}), Header=""{mp.Header}"", Virtual ={mp.Virtual.ToString().ToLower()})]
                            {mp.JsonIgnoreAttribute}
                            public Dictionary<string, List<{mp.Ref.Name}>> {mp.Name}
                            {{
                                get 
                                {{
                                    if (_{mp.Name}==null)
                                    {{
                                        _{mp.Name} = new Dictionary<string, List<{mp.Ref.Name}>>();
                                    }}
                                    return _{mp.Name};
                                }}
                            }}
                            ";
                    break;
                }

            case MEDMPropType.ENUM:
            {
                if (mp.Ref == null)
                {
                    __ = $"error: {mc.Name}.{mp.Name} - ссылка не задан или задан неправильно ({mp.RefId})";
                    break;
                }
                if (mp.Ref.IdType == null)
                {
                    __ = $"error: {mc.Name}.{mp.Name} - тип ссылки определить невозможно ({mp.RefId})";
                    break;
                }
                break;
                _ = $@"
                            private {mp.Ref.Name} _{mp.Name} = default({mp.Ref.Name});
                            [DbColumn(Type = ""{mp.ColumnType}"", Def =""{mp.ColumnDef}"", Virtual ={mp.Virtual.ToString().ToLower()})]
                            [EDMProperty(PropType=""{mp.Type}"", ItemType=typeof({mp.Ref.Name}), Header=""{mp.Header}"", Virtual ={mp.Virtual.ToString().ToLower()})]
                            {mp.JsonIgnoreAttribute}
                            public {mp.Ref.Name} {mp.Name}
                            {{
                                get 
                                {{
                                    return _{mp.Name};
                                }}
                                set 
                                {{
                                    Model.UpdateProperty(this, ""{mp.Name}"", _{mp.Name}, value, typeof({mp.Ref.Name}), null, {mp.Virtual.ToString().ToLower()});
                                    _{mp.Name}=value;
                                }}
                            }}";
                break;
            }

            // По умолчанию
            default:
            {
                if (mp.PropType == null)
                {
                    __ = $"error: {mc.Name}.{mp.Name} - тип не задан или задан неправильно ({mp.Type})";
                    break;
                }
                _ = $@"
                            private {mp.PropType.Name} _{mp.Name} = default({mp.PropType.Name});
                            [DbColumn(Type = ""{mp.ColumnType}"", Def =""{mp.ColumnDef}"", Virtual ={mp.Virtual.ToString().ToLower()})]
                            [EDMProperty(PropType=""{mp.Type}"", ItemType=typeof({mp.PropType.Name}), Header=""{mp.Header}"", Virtual ={mp.Virtual.ToString().ToLower()})]
                            {mp.JsonIgnoreAttribute}
                            public {mp.PropType.Name} {mp.Name}
                            {{
                                get 
                                {{
                                    return _{mp.Name};
                                }}
                                set 
                                {{
                                    Model.UpdateProperty(this, ""{mp.Name}"", _{mp.Name}, value, typeof({mp.PropType.Name}), null, {mp.Virtual.ToString().ToLower()});
                                    _{mp.Name}=value;
                                }}
                            }}";
                break;
            }
            }
            _ = $"#endregion";

            return(Result.ToString());
        }