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 }); } }
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); } } } } }
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); } }
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); } }
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); } }
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; } }
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 }); } }
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); } }
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); } }
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); } }
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); } } }