示例#1
0
        private List <MfProjectModel> GetPartModel(MfModelDicts dicts, ModelLists list, TraceSource ts, string url)
        {
            var ms    = new List <MfProjectModel>();
            var m     = (ProjectModel)_model;
            var group = MfProjectModel.GroupArrays(m.Elements, MaxCount);

            ts.TraceInformation("分组个数:" + group.Count);
            foreach (var g in group)
            {
                ts.TraceInformation("每组个数:" + g.Count);
                var pModel = new MfProjectModel {
                    Dicts = dicts, ModelUrl = url
                };
                FillModelProps(pModel);
                var mm = new ProjectModel {
                    Id = m.Id, Name = m.Name, Project = m.Project
                };
                mm.Elements.AddRange(g);
                pModel.Model = mm;
                pModel.Lists = list;
                ms.Add(pModel);
            }

            return(ms);
        }
示例#2
0
 public void AddFrom(MfModelDicts dict)
 {
     foreach (var c in dict.Cates)
     {
         if (!Cates.ContainsKey(c.Key))
         {
             Cates.Add(c.Key, c.Value);
         }
     }
     foreach (var c in dict.Elems)
     {
         if (!Elems.ContainsKey(c.Key))
         {
             Elems.Add(c.Key, c.Value);
         }
     }
     foreach (var c in dict.Fams)
     {
         if (!Fams.ContainsKey(c.Key))
         {
             Fams.Add(c.Key, c.Value);
         }
     }
     foreach (var c in dict.Floors)
     {
         if (!Floors.ContainsKey(c.Key))
         {
             Floors.Add(c.Key, c.Value);
         }
     }
     foreach (var c in dict.Mats)
     {
         if (!Mats.ContainsKey(c.Key))
         {
             Mats.Add(c.Key, c.Value);
         }
     }
     foreach (var c in dict.Types)
     {
         if (!Types.ContainsKey(c.Key))
         {
             Types.Add(c.Key, c.Value);
         }
     }
     foreach (var c in dict.Views)
     {
         if (!Views.ContainsKey(c.Key))
         {
             Views.Add(c.Key, c.Value);
         }
     }
 }
示例#3
0
 public MfProjectModel()
 {
     MaxCount = 500;
     Dicts    = new MfModelDicts();
 }
示例#4
0
        public string ServerRun(Func <object, string> toJson, Func <string, MfModelDicts> toDict, string modelUrl)
        {
            var hasExtensionMethod =
                _vault.ExtensionMethodOperations.DoesActiveVaultExtensionMethodExist(VaultExtensionMethodName);

            if (!hasExtensionMethod)
            {
                return("服务器未安装或启用扩展方法:" + VaultExtensionMethodName);
            }
            var log  = MfProjectModel.GetTrace <MfModel>();
            var list = ((ProjectModel)_model).GetLists();  //总的模型数据(元素唯一标识)列表

            //var basicModel = GetBasicModel(list);
            //var basicContent = ModelUtility.GetZippedContent(basicModel, toJson);
            //var basicInfo = _vault.ExtensionMethodOperations.ExecuteVaultExtensionMethod(VaultExtensionMethodName, basicContent);
            //var dict = ModelUtility.FromZippedContent<MfModelDicts>(basicInfo, toDict);

            var basicInfo = String.Empty;
            var partInfo  = String.Empty;
            var basicDict = new MfModelDicts();

            try
            {
                var bms = GetBasicModels(list, log, modelUrl);

                foreach (var bm in bms)
                {
                    var basicContent = ModelUtility.GetZippedContent(bm, toJson);
                    basicInfo = _vault.ExtensionMethodOperations.ExecuteVaultExtensionMethod(VaultExtensionMethodName, basicContent);
                    try
                    {
                        var pDict = ModelUtility.FromZippedContent <MfModelDicts>(basicInfo, toDict);
                        basicDict.AddFrom(pDict);
                    }
                    catch (Exception e)
                    {
                        var err = ModelUtility.FromZippedContent(basicInfo, s => s);
                        log.TraceEvent(TraceEventType.Warning, 0, err + "\r\n" + e.Message);
                        return(err);
                    }
                }


                var partModels = GetPartModel(basicDict, list, log, modelUrl);

                foreach (var partModel in partModels)
                {
                    var partContent = ModelUtility.GetZippedContent(partModel, toJson);
                    partInfo = _vault.ExtensionMethodOperations.ExecuteVaultExtensionMethod(VaultExtensionMethodName, partContent);
                    try
                    {
                        var pDict = ModelUtility.FromZippedContent <MfModelDicts>(partInfo, toDict);
                    }
                    catch (Exception e)
                    {
                        var err = ModelUtility.FromZippedContent(partInfo, s => s);
                        log.TraceEvent(TraceEventType.Warning, 0, err + "\r\n" + e.Message);
                        return(err);
                    }
                }

                return(String.Empty);
            }
            catch (Exception ex)
            {
                var errInfo = basicInfo;
                if (!String.IsNullOrEmpty(partInfo))
                {
                    errInfo = partInfo;
                }
                var err = ModelUtility.FromZippedContent(errInfo, s => s);
                log.TraceEvent(TraceEventType.Warning, 0, err + "\r\n" + ex.Message);
                return(err);
            }
            finally
            {
                log.Close();
            }
        }