protected override void FillObject(XmlDescriptor d, RuleElement element)
        {
            XmlAttribute attr = d.Element.Attributes[RuleConstants.DayOfWeekAttrName];

            if (attr != null)
            {
                (element as GetClosestDay).DayOfWeek = new ItemDayOfWeek(attr.Value);
            }

            attr = d.Element.Attributes[RuleConstants.WeekCountAttrName];

            if (int.TryParse(attr?.Value, out int count))
            {
                (element as GetClosestDay).WeekCount = count;
            }

            if (d.Element.HasChildNodes)
            {
                (element as GetClosestDay).ChildDateExp = SerializerRoot.Container <DateExpression>()
                                                          .Deserialize(new XmlDescriptor()
                {
                    Element = d.Element.FirstChild
                });
            }
        }
Exemple #2
0
        protected override void InnerInterpret(IRuleHandler handler)
        {
            if (handler.IsTypeAuthorized(this))
            {
                //находим переменную
                var query = SerializerRoot.QueryProcessor.Process(new TypiconVariableQuery(handler.Settings.TypiconVersionId, VariableName));

                //если найдена и у нее определено Значение
                if (query.Value is TypiconVariable var &&
                    !string.IsNullOrEmpty(var.Value))
                {
                    //десериализуем
                    var container = SerializerRoot.Container <ExecContainer>().Deserialize(var.Value);

                    if (container != null)
                    {
                        //находим все службы
                        foreach (var worship in container.GetChildElements <WorshipRule>(handler.Settings))
                        {
                            //обрабатываем их
                            handler.Execute(worship);
                        }
                    }
                }
            }
        }
Exemple #3
0
        protected override void FillObject(FillObjectRequest req)
        {
            XmlNode valuesNode = req.Descriptor.Element.SelectSingleNode(RuleConstants.ValuesNodeName);

            if (valuesNode?.HasChildNodes == true)
            {
                foreach (XmlNode valueNode in valuesNode.ChildNodes)
                {
                    RuleExpression valueElement = SerializerRoot.Container <RuleExpression>()
                                                  .Deserialize(new XmlDescriptor()
                    {
                        Element = valueNode
                    }, req.Parent);

                    (req.Element as Case).ValuesElements.Add(valueElement);
                }
            }

            XmlNode actionNode = req.Descriptor.Element.SelectSingleNode(RuleConstants.ActionNodeName);

            if (actionNode != null)
            {
                (req.Element as Case).ActionElement = SerializerRoot.Container <ExecContainer>()
                                                      .Deserialize(new XmlDescriptor()
                {
                    Element = actionNode
                }, req.Parent);
            }
        }
Exemple #4
0
        protected override void FillObject(FillObjectRequest req)
        {
            XmlAttribute attr = req.Descriptor.Element.Attributes[RuleConstants.DayOfWeekAttrName];

            if (attr != null)
            {
                if (DayOfWeekParser.TryParse(attr.Value, out DayOfWeek? dayOfWeek))
                {
                    (req.Element as GetClosestDay).DayOfWeek = dayOfWeek.Value;
                }
                else
                {
                    //error
                }
            }

            attr = req.Descriptor.Element.Attributes[RuleConstants.WeekCountAttrName];

            if (int.TryParse(attr?.Value, out int count))
            {
                (req.Element as GetClosestDay).WeekCount = count;
            }

            if (req.Descriptor.Element.HasChildNodes)
            {
                (req.Element as GetClosestDay).ChildDateExp = SerializerRoot.Container <DateExpression>()
                                                              .Deserialize(new XmlDescriptor()
                {
                    Element = req.Descriptor.Element.FirstChild
                }, req.Parent);
            }
        }
Exemple #5
0
 protected override void FillObject(FillObjectRequest req)
 {
     if (req.Descriptor.Element.HasChildNodes)
     {
         (req.Element as DaysFromEaster).ChildExpression = SerializerRoot.Container<DateExpression>()
             .Deserialize(new XmlDescriptor() { Element = req.Descriptor.Element.FirstChild }, req.Parent);
     }
 }
Exemple #6
0
 protected override void FillObject(XmlDescriptor d, RuleElement element)
 {
     if (d.Element.HasChildNodes)
     {
         (element as DateByDaysFromEaster).ChildExpression = SerializerRoot.Container <IntExpression>()
                                                             .Deserialize(new XmlDescriptor()
         {
             Element = d.Element.FirstChild
         });
     }
 }
 protected override void FillObject(XmlDescriptor d, RuleElement element)
 {
     if (d.Element.HasChildNodes)// && node.FirstChild.Name == RuleConstants.YmnosRuleNode)
     {
         (element as IsExists).ChildElement = SerializerRoot.Container <RuleExecutable, ICalcStructureElement>()
                                              .Deserialize(new XmlDescriptor()
         {
             Element = d.Element.FirstChild
         }) as ICalcStructureElement;
     }
 }
Exemple #8
0
 protected override void FillObject(XmlDescriptor d, RuleElement element)
 {
     foreach (XmlNode childNode in d.Element.ChildNodes)
     {
         RuleElement child = SerializerRoot.Container <RuleElement>().Deserialize(new XmlDescriptor()
         {
             Element = childNode
         });
         (element as ExecContainer).ChildElements.Add(child);
     }
 }
        protected override void FillObject(XmlDescriptor d, RuleElement element)
        {
            XmlAttribute attr = d.Element.Attributes[RuleConstants.ShortNameAttrName];

            (element as ModifyDay).ShortName = attr?.Value;

            attr = d.Element.Attributes[RuleConstants.IsLastNameAttrName];
            (element as ModifyDay).IsLastName = bool.TryParse(attr?.Value, out bool value) ? value : false;

            attr = d.Element.Attributes[RuleConstants.AsAdditionAttrName];
            (element as ModifyDay).AsAddition = bool.TryParse(attr?.Value, out value) ? value : false;

            attr = d.Element.Attributes[RuleConstants.UseFullNameAttrName];
            (element as ModifyDay).UseFullName = bool.TryParse(attr?.Value, out value) ? value : true;

            attr = d.Element.Attributes[RuleConstants.DayMoveAttrName];
            if (int.TryParse(attr?.Value, out int intValue))
            {
                (element as ModifyDay).DayMoveCount = intValue;
            }

            attr = d.Element.Attributes[RuleConstants.PriorityAttrName];
            (element as ModifyDay).Priority = int.TryParse(attr?.Value, out intValue) ? intValue : 0;

            attr = d.Element.Attributes[RuleConstants.SignNumberAttrName];
            if (int.TryParse(attr?.Value, out intValue))
            {
                (element as ModifyDay).SignNumber = intValue;
            }

            //filter
            DeserializeFilter(d.Element, element as ModifyDay);

            foreach (XmlNode childNode in d.Element.ChildNodes)
            {
                if (childNode.Name == RuleConstants.ModifyReplacedDayNodeName)
                {
                    (element as ModifyDay).ModifyReplacedDay = SerializerRoot.Container <ModifyReplacedDay>()
                                                               .Deserialize(new XmlDescriptor()
                    {
                        Element = childNode
                    });
                }
                else
                {
                    (element as ModifyDay).ChildDateExp = SerializerRoot.Container <DateExpression>()
                                                          .Deserialize(new XmlDescriptor()
                    {
                        Element = childNode
                    });
                }
            }
        }
        protected override void FillObject(XmlDescriptor d, RuleElement element)
        {
            base.FillObject(d, element);

            if (d.Element.SelectSingleNode(RuleConstants.YmnosRuleNode) is XmlNode ymnosNode)
            {
                (element as TheotokionRule).ReferenceYmnos = SerializerRoot.Container <YmnosRule>()
                                                             .Deserialize(new XmlDescriptor()
                {
                    Element = ymnosNode
                });
            }
        }
Exemple #11
0
        protected override void FillObject(XmlDescriptor d, RuleElement element)
        {
            foreach (XmlNode childNode in d.Element.ChildNodes)
            {
                var exp = SerializerRoot.Container <RuleExpression>()
                          .Deserialize(new XmlDescriptor()
                {
                    Element = childNode
                });

                (element as LogicalExpression).ChildElements.Add(exp);
            }
        }
        protected override void FillObject(FillObjectRequest req)
        {
            foreach (XmlNode childNode in req.Descriptor.Element.ChildNodes)
            {
                var exp = SerializerRoot.Container <RuleExpression>()
                          .Deserialize(new XmlDescriptor()
                {
                    Element = childNode
                }, req.Parent);

                (req.Element as LogicalExpression).ChildElements.Add(exp);
            }
        }
        protected override void FillObject(FillObjectRequest req)
        {
            XmlAttribute attr = req.Descriptor.Element.Attributes[RuleConstants.GetDayOfWeekAttrName];

            if (attr != null && DayOfWeekParser.TryParse(attr.Value, out DayOfWeek? dayOfWeek))
            {
                (req.Element as GetDayOfWeek).DayOfWeek = dayOfWeek;
            }

            if (req.Descriptor.Element.HasChildNodes)
            {
                (req.Element as GetDayOfWeek).ChildDateExp = SerializerRoot.Container <DateExpression>()
                                                             .Deserialize(new XmlDescriptor()
                {
                    Element = req.Descriptor.Element.FirstChild
                }, req.Parent);
            }
        }
Exemple #14
0
        protected override void FillObject(XmlDescriptor d, RuleElement element)
        {
            //ищем expression
            XmlNode expressionNode = d.Element.SelectSingleNode(RuleConstants.ExpressionNodeName);

            if (expressionNode?.HasChildNodes == true)
            {
                (element as Switch).Expression = SerializerRoot.Container <RuleExpression>()
                                                 .Deserialize(new XmlDescriptor()
                {
                    Element = expressionNode.FirstChild
                });
            }

            //ищем элементы case
            XmlNodeList casesList = d.Element.SelectNodes(RuleConstants.CaseNodeName);

            if (casesList != null)
            {
                foreach (XmlNode caseNode in casesList)
                {
                    Case caseElement = SerializerRoot.Container <Case>().Deserialize(new XmlDescriptor()
                    {
                        Element = caseNode
                    });
                    (element as Switch).CaseElements.Add(caseElement);
                }
            }

            //ищем default
            XmlNode defaultNode = d.Element.SelectSingleNode(RuleConstants.DefaultNodeName);

            if (defaultNode != null)
            {
                (element as Switch).Default = SerializerRoot.Container <ExecContainer>()
                                              .Deserialize(new XmlDescriptor()
                {
                    Element = defaultNode
                });
            }
        }
        protected override void FillObject(FillObjectRequest req)
        {
            base.FillObject(req);

            var obj = req.Element as TheotokionAppRule;

            XmlAttribute attr = req.Descriptor.Element.Attributes[RuleConstants.TheotokionAppRulePlaceAttrName];

            if (Enum.TryParse(attr?.Value, true, out TheotokionAppPlace place))
            {
                obj.Place = place;
            }

            if (req.Descriptor.Element.SelectSingleNode(RuleConstants.YmnosRuleNode) is XmlNode ymnosNode)
            {
                obj.ReferenceYmnos = SerializerRoot.Container <YmnosRule>()
                                     .Deserialize(new XmlDescriptor()
                {
                    Element = ymnosNode
                }, req.Parent);
            }
        }
Exemple #16
0
        protected override void FillObject(FillObjectRequest req)
        {
            var obj = req.Element as WorshipRule;

            var attr = req.Descriptor.Element.Attributes[RuleConstants.WorshipRuleIdAttrName];

            obj.Id = (attr != null) ? attr.Value : string.Empty;

            attr     = req.Descriptor.Element.Attributes[RuleConstants.WorshipRuleTimeAttrName];
            obj.Time = new VariableItemTime((attr != null) ? attr.Value : string.Empty);

            obj.Name = req.Descriptor.Element
                       .GetItemTextStyled(SerializerRoot.TypiconSerializer, RuleConstants.WorshipRuleNameNode);

            obj.AdditionalName = req.Descriptor.Element
                                 .GetItemTextStyled(SerializerRoot.TypiconSerializer, RuleConstants.WorshipRuleAdditionalNameNode);

            attr = req.Descriptor.Element.Attributes[RuleConstants.WorshipRuleModeAttrName];
            if (Enum.TryParse(attr?.Value, true, out WorshipMode source))
            {
                obj.Mode = source;
            }

            //sequence
            var sequenceNode = req.Descriptor.Element.SelectSingleNode(RuleConstants.WorshipRuleSequenceNode);

            if (sequenceNode != null)
            {
                obj.Sequence = SerializerRoot.Container <ExecContainer>()
                               .Deserialize(new XmlDescriptor()
                {
                    Element = sequenceNode
                }, req.Parent);
            }

            obj.FillIAsAdditionElement(req.Descriptor.Element);
        }
        protected override void FillObject(FillObjectRequest req)
        {
            //expression
            XmlNode elementNode = req.Descriptor.Element.SelectSingleNode(RuleConstants.ExpressionIfNodeName);

            if (elementNode?.HasChildNodes == true)
            {
                (req.Element as If).Expression = SerializerRoot.Container <BooleanExpression>()
                                                 .Deserialize(new XmlDescriptor()
                {
                    Element = elementNode.FirstChild
                }, req.Parent);
            }

            //ищем then
            elementNode = req.Descriptor.Element.SelectSingleNode(RuleConstants.ThenNodeName);
            if (elementNode != null)
            {
                (req.Element as If).ThenElement = SerializerRoot.Container <ExecContainer>()
                                                  .Deserialize(new XmlDescriptor()
                {
                    Element = elementNode
                }, req.Parent);
            }

            //ищем else
            elementNode = req.Descriptor.Element.SelectSingleNode(RuleConstants.ElseNodeName);
            if (elementNode != null)
            {
                (req.Element as If).ElseElement = SerializerRoot.Container <ExecContainer>()
                                                  .Deserialize(new XmlDescriptor()
                {
                    Element = elementNode
                }, req.Parent);
            }
        }
Exemple #18
0
        protected override void FillObject(FillObjectRequest req)
        {
            var obj = req.Element as ModifyDay;

            obj.ShortName = req.Descriptor.Element.GetItemTextStyled(SerializerRoot.TypiconSerializer, RuleConstants.ShortNameNodeName);

            var attr = req.Descriptor.Element.Attributes[RuleConstants.IsLastNameAttrName];

            obj.IsLastName = bool.TryParse(attr?.Value, out bool value) ? value : false;

            attr           = req.Descriptor.Element.Attributes[RuleConstants.AsAdditionAttrName];
            obj.AsAddition = bool.TryParse(attr?.Value, out value) ? value : false;

            attr            = req.Descriptor.Element.Attributes[RuleConstants.UseFullNameAttrName];
            obj.UseFullName = bool.TryParse(attr?.Value, out value) ? value : true;

            attr = req.Descriptor.Element.Attributes[RuleConstants.DayMoveAttrName];
            if (int.TryParse(attr?.Value, out int intValue))
            {
                obj.DayMoveCount = intValue;
            }

            attr = req.Descriptor.Element.Attributes[RuleConstants.PriorityAttrName];
            if (int.TryParse(attr?.Value, out intValue))
            {
                obj.Priority = intValue;
            }

            attr = req.Descriptor.Element.Attributes[RuleConstants.SignNumberAttrName];
            if (int.TryParse(attr?.Value, out intValue))
            {
                obj.SignNumber = intValue;
            }

            attr   = req.Descriptor.Element.Attributes[RuleConstants.ModifyDayIdAttrName];
            obj.Id = attr?.Value;

            //filter
            DeserializeFilter(req.Descriptor.Element, req.Element as ModifyDay);

            //IAsAdditionElement
            attr = req.Descriptor.Element.Attributes[RuleConstants.ModifyDayAsadditionModeAttrName];
            obj.AsAdditionMode = (Enum.TryParse(attr?.Value, true, out AsAdditionMode mode)) ? mode : AsAdditionMode.None;

            foreach (XmlNode childNode in req.Descriptor.Element.ChildNodes)
            {
                if (childNode.Name == RuleConstants.ModifyReplacedDayNodeName)
                {
                    obj.ModifyReplacedDay = SerializerRoot.Container <ModifyReplacedDay>()
                                            .Deserialize(new XmlDescriptor()
                    {
                        Element = childNode
                    }, req.Parent);
                }
                else
                {
                    obj.ChildDateExp = SerializerRoot.Container <DateExpression>()
                                       .Deserialize(new XmlDescriptor()
                    {
                        Element = childNode
                    }, req.Parent);
                }
            }
        }