Beispiel #1
0
        private NodeSetFileModel GetProfileModel(ModelNameAndVersion nameVersion, object userId)
        {
            NodeSetFileModel myModel = (nameVersion.CCacheId as NodeSetFileModel);

            if (myModel != null)
            {
                return(myModel);
            }

            var userToken = userId as UserToken;

            myModel = _dalNodeSetFile?.Where(s => s.FileName == nameVersion.ModelUri /*&& (TenantID == null || s.AuthorId == null || s.AuthorId == (int)TenantID)*/, userToken, verbose: true)?.Data?.OrderByDescending(s => s.PublicationDate)?.FirstOrDefault();
            if (myModel != null)
            {
                nameVersion.CCacheId = myModel;
            }
            return(myModel);
        }
Beispiel #2
0
        public ModelValue GetNodeSetByID(string id)
        {
            var tns = _dalNodeSetFile.GetById(int.Parse(id), _userToken);

            if (tns != null)
            {
                var tmav = new ModelNameAndVersion
                {
                    ModelUri        = tns.FileName,
                    ModelVersion    = tns.Version,
                    PublicationDate = tns.PublicationDate,
                    CCacheId        = tns.ID
                };
                UANodeSetImportResult res = new UANodeSetImportResult();
                AddNodeSet(res, tns.FileCache, _userToken);
                if (res?.Models?.Count > 0)
                {
                    return(res.Models[0]);
                }
            }
            return(null);
        }
Beispiel #3
0
        public bool GetNodeSet(UANodeSetImportResult results, ModelNameAndVersion nameVersion, object AuthorID)
        {
            var authorToken          = AuthorID as UserToken;
            NodeSetFileModel myModel = GetProfileModel(nameVersion, authorToken);

            if (myModel != null)
            {
                // workaround for bug https://github.com/dotnet/runtime/issues/67622
                var fileCachepatched = myModel.FileCache.Replace("<Value/>", "<Value xsi:nil='true' />");
                using (var nodeSetStream = new System.IO.MemoryStream(Encoding.UTF8.GetBytes(fileCachepatched)))
                {
                    //nodeSetStream.Write(Encoding.UTF8.GetBytes(myModel.FileCache));
                    //nodeSetStream.Position = 0;
                    UANodeSet nodeSet = UANodeSet.Read(nodeSetStream);
                    foreach (var ns in nodeSet.Models)
                    {
                        results.AddModelAndDependencies(nodeSet, ns, null, false);
                        foreach (var model in results.Models)
                        {
                            if (model.NameVersion.CCacheId == null)
                            {
                                if (model.NameVersion.ModelUri == nameVersion.ModelUri && model.NameVersion.PublicationDate == nameVersion.PublicationDate)
                                {
                                    model.NameVersion.CCacheId = myModel;
                                }
                                else
                                {
                                    GetProfileModel(model.NameVersion, authorToken);
                                }
                            }
                        }
                    }
                }
                return(true);
            }
            return(false);
        }