Ejemplo n.º 1
0
        public XTriggersConfiguration()
        {
            // "Залипуха", т.к. XFacade.Instance.Config... не доступен
            // Если наименование файла XFW.NET конфигурации не задано явно, то возьмем его из специальной секции файла .net конфигурации (.config)
            if (XfwConfigFileName == null)
            {
                XfwConfigFileName = ConfigurationSettings.AppSettings[XConfig.DEF_APPCONFIG_KEYNAME];
                XfwConfigFileName = GetFullPath(XfwConfigFileName, XConfig.ApplicationBasePath);
            }
            XConfigurationFile xfw_config = new XConfigurationFile(XfwConfigFileName);

            XmlNodeList xmlTriggers = xfw_config.SelectNodes("it:app-data/it:storage/it:triggers/it:trigger");

            m_triggersDescr = new XTriggerConfiguration[xmlTriggers.Count];
            int i = -1;

            foreach (XmlElement xmlTriggerDescr in xmlTriggers)
            {
                string sAction     = xmlTriggerDescr.GetAttribute("action");
                string sWhen       = xmlTriggerDescr.GetAttribute("when");
                string sFireType   = xmlTriggerDescr.GetAttribute("fire-type");
                string sObjectType = xmlTriggerDescr.GetAttribute("object-type");
                string sClassName  = xmlTriggerDescr.GetAttribute("class-name");
                m_triggersDescr[++i] = new XTriggerConfiguration(sAction, sWhen, sFireType, sObjectType, sClassName);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Выполняет загрузку описаний связей из конфигурационного файла, данные
        /// которого представлеят спец. объект типа XConfigurationFile
        /// </summary>
        /// <param name="config">Конфигурационныфй файл</param>
        /// <remarks>
        /// Изменяет данные во внутренних переменных объекта - m_rolesLinks и
        /// m_arrFlags
        /// </remarks>
        public void LoadFormConfigXml(XConfigurationFile config)
        {
            // Зачищаем данные
            m_rolesLinks.Clear();
            m_arrFlags = new int[0];

            // Если конфигурация не задана - то и карты связей нет:
            if (null == config)
            {
                return;
            }

            XmlNodeList xmlRoleLinks = config.SelectNodes("itws:nsi-sync-service/itws:flags-to-roles-map/itws:role-link");

            if (null == xmlRoleLinks)
            {
                return;
            }

            foreach (XmlNode xmlNodeLink in xmlRoleLinks)
            {
                XmlElement         xmlRoleLink = (XmlElement)xmlNodeLink;
                UserFlagToRoleLink link        = new UserFlagToRoleLink();

                // #1: какой флаг
                string sAttribute = xmlRoleLink.GetAttribute("for-flag");
                if (null == sAttribute || String.Empty == sAttribute)
                {
                    throw new ApplicationException(String.Format(
                                                       "{0}: не задано значение флага (атрибут for-flag элемента itws:role-link)",
                                                       ServiceConfig.ERR_INCORRECT_CONFIG_DATA
                                                       ));
                }

                try { link.Flag = Int32.Parse(sAttribute); }
                catch (Exception err)
                {
                    throw new ApplicationException(String.Format(
                                                       "{0}: указанное значение {1} для атрибута for-flag элемента itws:role-link не является целым",
                                                       ServiceConfig.ERR_INCORRECT_CONFIG_DATA, sAttribute
                                                       ), err);
                }

                // #2: в какую именно роль - идентификатор роли
                sAttribute = xmlRoleLink.GetAttribute("to-role");
                if (null == sAttribute || String.Empty == sAttribute)
                {
                    link.RoleID = Guid.Empty;
                }
                else
                {
                    try { link.RoleID = new Guid(sAttribute); }
                    catch (Exception err)
                    {
                        throw new ApplicationException(String.Format(
                                                           "{0}: указанное значение {1} для атрибута to-role элемента itws:role-link не является идентификатором типа GUID",
                                                           ServiceConfig.ERR_INCORRECT_CONFIG_DATA, sAttribute
                                                           ), err);
                    }
                }

                // #3: признак зачишать все роли
                sAttribute            = xmlRoleLink.GetAttribute("clear-roles");
                link.IsClearRolesFlag = !(null == sAttribute || String.Empty == sAttribute);

                // ИТОГО: Добавалем в коллекцию:
                m_rolesLinks.Add(link.Flag, link);
            }

            // Формируем массив флагов:
            m_arrFlags = new int[m_rolesLinks.Keys.Count];
            if (0 != m_rolesLinks.Keys.Count)
            {
                m_rolesLinks.Keys.CopyTo(m_arrFlags, 0);
            }
        }