コード例 #1
0
 public void SaveAllVariables(XmlTextWriter writer, ProfileItemPrivacyType profileItemPrivacyType)
 {
     if (profileItemPrivacyType == ProfileItemPrivacyType.Private && ApplicationSettings.DisablePersonalProfile)
     {
         return;
     }
     foreach (var v in _variables)
     {
         if ((v.Value as VariableBase).GetPrivacyType() == profileItemPrivacyType || ApplicationSettings.DisablePersonalProfile)
         {
             writer.WriteStartElement("Variable");
             v.Value.Save(writer);
             writer.WriteEndElement();
             writer.WriteString("\n");
         }
     }
 }
コード例 #2
0
        public void Load(XPathNavigator nav, string profileMainNodeName, ProfileItemPrivacyType profileItemPrivacyType)
        {
            var navPointer = nav.Select("/" + profileMainNodeName + "/AccessDescriptors/AccessDescriptor");

            while (navPointer.MoveNext())
            {
                var type = navPointer.Current.GetAttribute("Type", navPointer.Current.NamespaceURI);
                var ad   = Utils.FindAndCreate <DescriptorBase>(type);

                if (ad != null)
                {
                    ad.Load(navPointer.Current);
                    ad.SetPrivacyType(profileItemPrivacyType);
                    RegisterAccessDescriptor(ad);
                }
            }
        }
コード例 #3
0
ファイル: Profile.cs プロジェクト: diminovei/FlexRouter
        /// <summary>
        /// Загрузка профиля
        /// </summary>
        /// <param name="profilePath">Путь к профилю</param>
        /// <param name="profileItemPrivacyType"></param>
        /// <returns>Успешно ли прошла загрузка</returns>
        public static bool Load(string profilePath, ProfileItemPrivacyType profileItemPrivacyType)
        {
            if (profileItemPrivacyType == ProfileItemPrivacyType.Public)
            {
                Clear();
            }
            // костыль для FS9
            var xp         = new XPathDocument(profilePath);
            var nav        = xp.CreateNavigator();
            var navPointer = nav.Select("/" + ProfileHeader);

            navPointer.MoveNext();
            if (profileItemPrivacyType == ProfileItemPrivacyType.Public)
            {
                _currentProfileName = navPointer.Current.GetAttribute("Name", navPointer.Current.NamespaceURI);
            }
            if (!Guid.TryParse(navPointer.Current.GetAttribute("Id", navPointer.Current.NamespaceURI), out _currentProfileId))
            {
                _currentProfileId = GlobalId.GetNew();
            }
            if (profileItemPrivacyType == ProfileItemPrivacyType.Public)
            {
                _currentProfilePath = profilePath;
            }
            else
            {
                _currentPersonalProfilePath = profilePath;
            }
            navPointer = nav.Select("/" + ProfileHeader + "/Panels/Panel");
            while (navPointer.MoveNext())
            {
                var panel = Panel.Load(navPointer.Current);
                panel.SetPrivacyType(profileItemPrivacyType);
                PanelStorage.StorePanel(panel);
            }

            navPointer = nav.Select("/" + ProfileHeader + "/Variables");
            navPointer.MoveNext();
            _mainSimulatorProcess = navPointer.Current.GetAttribute("ProcessToManage", navPointer.Current.NamespaceURI);
            VariableStorage.Load(nav, ProfileHeader, profileItemPrivacyType);

            AccessDescriptor.Load(nav, ProfileHeader, profileItemPrivacyType);
            return(true);
        }
コード例 #4
0
 public void SetPrivacyType(ProfileItemPrivacyType profileItemPrivacyType)
 {
     _profileItemPrivacyType = profileItemPrivacyType;
 }
コード例 #5
0
ファイル: Profile.cs プロジェクト: diminovei/FlexRouter
        private static void Save(string profileName, string profilePath, ProfileItemPrivacyType profileItemPrivacyType, bool disablePrivateProfile)
        {
            if (disablePrivateProfile && profileItemPrivacyType == ProfileItemPrivacyType.Private)
            {
                return;
            }

            var privateProfilePath = Utils.GetFullSubfolderPath(ProfileAssignmentsFolder);

            if (!File.Exists(privateProfilePath))
            {
                Directory.CreateDirectory(privateProfilePath);
            }
            using (var sw = new StringWriter())
            {
                using (var writer = new XmlTextWriter(sw))
                {
                    writer.Formatting  = Formatting.Indented;
                    writer.Indentation = 4;
                    writer.WriteStartDocument();
                    // Заголовок
                    writer.WriteStartElement(ProfileHeader);
                    writer.WriteAttributeString("Type", profileItemPrivacyType.ToString());
                    if (profileItemPrivacyType == ProfileItemPrivacyType.Public)
                    {
                        writer.WriteAttributeString("Name", profileName);
                    }
                    writer.WriteAttributeString("Id", _currentProfileId.ToString());

                    // Панели
                    writer.WriteStartElement("Panels");
                    var panels = PanelStorage.GetAllPanels();
                    foreach (var panel in panels)
                    {
                        if (panel.GetPrivacyType() == profileItemPrivacyType || disablePrivateProfile)
                        {
                            panel.Save(writer);
                        }
                    }
                    writer.WriteEndElement();

                    // Переменные
                    writer.WriteStartElement("Variables");
                    writer.WriteAttributeString("ProcessToManage", _mainSimulatorProcess);
                    VariableStorage.SaveAllVariables(writer, profileItemPrivacyType);
                    writer.WriteEndElement();

                    // AccessDescriptors
                    AccessDescriptor.Save(writer, profileItemPrivacyType, disablePrivateProfile);
                    // Закрываем заголовок
                    writer.WriteEndElement();
                    writer.WriteEndDocument();
                }
                if (File.Exists(profilePath))
                {
                    File.Copy(profilePath, profilePath + ".bak", true);
                }
                using (var swToDisk = new StreamWriter(profilePath, false, Encoding.Unicode))
                {
                    var parsedXml = XDocument.Parse(sw.ToString());
                    swToDisk.Write(parsedXml.ToString());
                }
            }
            if (profileItemPrivacyType == ProfileItemPrivacyType.Public)
            {
                var assignmentsPath = GetAssignmentPathForProfile(profilePath);
                ControlProcessor.Save(assignmentsPath, ProfileHeader, _currentProfileId);
            }
        }