Beispiel #1
0
        public void GetDataFromDisk()
        {
            CreateCollectionsIfNeeded();

            var task = Task.Run(() =>
            {
                string directoryConnection = FileOperations.GetConnectionIntellisenseDataFolderPath(this.ConnectionId);

                var applicationRibbonFilePath = Path.Combine(directoryConnection, "ApplicationRibbon.zip");

                if (File.Exists(applicationRibbonFilePath))
                {
                    var ribbonData = RibbonIntellisenseData.Get(applicationRibbonFilePath, string.Empty);

                    if (ribbonData != null)
                    {
                        this.ApplicationRibbonData = ribbonData;
                    }
                }
            });

            string directoryEntityRibbons = FileOperations.GetConnectionIntellisenseDataFolderPathRibbons(this.ConnectionId);

            var directoryInfo = new DirectoryInfo(directoryEntityRibbons);

            if (directoryInfo.Exists)
            {
                var files = directoryInfo.GetFiles("*.zip");

                Parallel.ForEach(files, file =>
                {
                    string entityName = Path.GetFileNameWithoutExtension(file.FullName).ToLower();

                    var ribbonData = RibbonIntellisenseData.Get(file.FullName, entityName);

                    if (ribbonData != null)
                    {
                        if (!this.EntitiesRibbonData.ContainsKey(ribbonData.EntityLogicalName))
                        {
                            this.EntitiesRibbonData.TryAdd(ribbonData.EntityLogicalName, ribbonData);
                        }
                        else
                        {
                            this.EntitiesRibbonData[ribbonData.EntityLogicalName] = ribbonData;
                        }
                    }
                });
            }
        }
Beispiel #2
0
        public static RibbonIntellisenseData Get(string filePath, string entityName)
        {
            RibbonIntellisenseData result = null;

            if (File.Exists(filePath))
            {
                using (Mutex mutex = new Mutex(false, FileOperations.GetMutexName(filePath)))
                {
                    try
                    {
                        mutex.WaitOne();

                        var arrayXml = File.ReadAllBytes(filePath);

                        arrayXml = FileOperations.UnzipRibbon(arrayXml);

                        using (var memStream = new MemoryStream())
                        {
                            memStream.Write(arrayXml, 0, arrayXml.Length);

                            memStream.Position = 0;

                            XDocument doc = XDocument.Load(memStream);

                            result = new RibbonIntellisenseData(entityName);

                            result.LoadDataFromRibbon(doc);
                        }
                    }
                    catch (Exception ex)
                    {
                        DTEHelper.WriteExceptionToLog(ex);

                        FileOperations.CreateBackUpFile(filePath, ex);
                    }
                    finally
                    {
                        mutex.ReleaseMutex();
                    }
                }
            }

            return(result);
        }