Example #1
0
 protected override void InnerInterpret(IRuleHandler handler)
 {
     if (handler.IsAuthorized <TextHolder>())
     {
         handler.Execute(this);
     }
 }
Example #2
0
 /// <summary>
 /// Добавляет в конец коллекции вычисляемых канонов катавасию
 /// </summary>
 /// <param name="date"></param>
 /// <param name="handler"></param>
 /// <param name="container"></param>
 private void CalculateKatavasiaStructure(IRuleHandler handler, ExecContainer container)
 {
     if (container?.ChildElements.FirstOrDefault() is KKatavasiaRule item)
     {
         _kanonesCalc.Add(item.Calculate(handler.Settings) as Kanonas);
     }
 }
Example #3
0
 protected override void InnerInterpret(IRuleHandler handler)
 {
     if (handler.IsAuthorized <KekragariaRule>())
     {
         base.InnerInterpret(handler);
     }
 }
Example #4
0
        protected override void InnerInterpret(IRuleHandler handler)
        {
            if (handler.IsAuthorized <KanonasRule>())
            {
                ///используем специальный обработчик для KKatavasiaRule
                var katavasiaContainer = GetChildElements <KKatavasiaRule>(handler);

                //используем специальный обработчик для KanonasItem,
                //чтобы создать список источников канонов на обработку
                var kanonasItemContainer = GetChildElements <KKanonasItemRule>(handler);

                if (kanonasItemContainer != null)
                {
                    CalculateOdesStructure(handler, kanonasItemContainer, (katavasiaContainer != null));
                }

                if (katavasiaContainer != null)
                {
                    CalculateKatavasiaStructure(handler, katavasiaContainer);
                }

                //находим KAfterRules
                var afterContainer = GetChildElements <KAfterRule>(handler);

                if (afterContainer != null)
                {
                    AfterRules = afterContainer.ChildElements.Cast <KAfterRule>();
                }

                handler.Execute(this);
            }
        }
Example #5
0
        protected override void InnerInterpret(IRuleHandler handler)
        {
            if (handler.IsTypeAuthorized(this) && !this.AsAdditionHandled(handler))
            {
                //Добавляем IAsAdditionElement append реализацию
                //Приходится явно вызывать метод, т.к. функционал ExecContainer.InnerInterpret не используется
                var appended = AppendHandling(handler);

                Odes = GetChildElements <KOdiRule>(handler.Settings);

                AfterRules = GetChildElements <KAfterRule>(handler.Settings);

                foreach (var ode in Odes)
                {
                    ode.Interpret(handler);
                }

                //обрабатываем AfterRules только если это не расписание
                if (!(handler is ScheduleHandler))
                {
                    foreach (var afterRule in AfterRules)
                    {
                        afterRule.Interpret(handler);
                    }
                }

                //и сразу же удаляем appended IAsAdditionElements
                RemoveAppended(appended);

                handler.Execute(this);
            }
        }
Example #6
0
 protected override void InnerInterpret(IRuleHandler handler)
 {
     foreach (RuleElement el in ChildElements)
     {
         el.Interpret(handler);
     }
 }
        /// <summary>
        /// Общедоступный метод вызова интерпретации правила
        /// </summary>
        /// <param name="date"></param>
        /// <param name="handler"></param>
        public virtual void Interpret(IRuleHandler handler)
        {
            if (handler == null)
            {
                throw new ArgumentNullException("IRuleHandler in Interpret");
            }
            if (handler.Settings == null)
            {
                throw new ArgumentNullException("handler.Settings in Interpret");
            }

            //Проверка для всех элементов правил.
            //Если неверно составлен, то либо выкидывается исключение (в случае соответствующей настройки),
            //либо просто ничего не обрабатывается
            if (ThrowExceptionIfInvalid(handler.Settings))
            {
                return;
            }

            handler.Settings.ApplyCustomParameters(this);

            if (handler.Settings.CheckCustomParameters(this))
            {
                InnerInterpret(handler);
            }
        }
Example #8
0
        private string GetKindStringValue(TextHolderKind kind, IRuleHandler handler)
        {
            CommonRuleServiceRequest req = new CommonRuleServiceRequest()
            {
                RuleSerializer = Serializer
            };

            switch (kind)
            {
            case TextHolderKind.Choir:
                req.Key = CommonRuleConstants.ChoirRule;
                break;

            case TextHolderKind.Deacon:
                req.Key = CommonRuleConstants.DeaconRule;
                break;

            case TextHolderKind.Lector:
                req.Key = CommonRuleConstants.LectorRule;
                break;

            case TextHolderKind.Priest:
                req.Key = CommonRuleConstants.PriestRule;
                break;

            case TextHolderKind.Stihos:
                req.Key = CommonRuleConstants.StihosRule;
                break;

            default:
                return(string.Empty);
            }

            return(handler.Settings.Rule.Owner.GetCommonRuleTextValue(req, handler.Settings.Language));
        }
 protected override void InnerInterpret(IRuleHandler handler)
 {
     if (handler.IsTypeAuthorized(this))
     {
         base.InnerInterpret(handler);
     }
 }
 protected override void InnerInterpret(IRuleHandler handler)
 {
     if (handler.IsAuthorized <KanonasItemRuleBase>())
     {
         handler.Execute(this);
     }
 }
Example #11
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);
                        }
                    }
                }
            }
        }
Example #12
0
 protected override void InnerInterpret(IRuleHandler handler)
 {
     if (handler.IsTypeAuthorized(this))
     {
         handler.Execute(this);
     }
 }
Example #13
0
 protected override void InnerInterpret(IRuleHandler handler)
 {
     if (handler.IsAuthorized <KSedalenRule>())
     {
         handler.Execute(this);
     }
 }
Example #14
0
 protected override void InnerInterpret(IRuleHandler settings)
 {
     foreach (RuleExpression valueElement in ValuesElements)
     {
         valueElement.Interpret(settings);
     }
 }
        protected override void InnerInterpret(IRuleHandler handler)
        {
            ChildExpression.Interpret(handler);

            DateTime easterDate = easterContext.GetCurrentEaster(handler.Settings.Date.Year);

            ValueCalculated = easterDate.AddDays((int)ChildExpression.ValueCalculated);
        }
        protected override void InnerInterpret(IRuleHandler handler)
        {
            ChildExpression.Interpret(handler);

            DateTime easterDate = queryProcessor.Process(new CurrentEasterQuery(handler.Settings.Date.Year));

            ValueCalculated = easterDate.AddDays((int)ChildExpression.ValueCalculated);
        }
Example #17
0
        public OdiViewModelFactory(IRuleHandler handler, IRuleSerializerRoot serializer, Action <OutputSectionModelCollection> appendModelAction)
        {
            this.handler           = handler ?? throw new ArgumentNullException("IRuleHandler in OdiViewModelHandler");
            this.appendModelAction = appendModelAction ?? throw new ArgumentNullException("Action<ElementViewModel> in OdiViewModelHandler");
            this.serializer        = serializer ?? throw new ArgumentNullException("IRuleSerializerRoot in OdiViewModelHandler");

            choruses = serializer.GetCommonRuleChildren <TextHolder>(handler.Settings.TypiconVersionId, CommonRuleConstants.KanonasChorusRule);
        }
Example #18
0
 protected override void InnerInterpret(IRuleHandler handler)
 {
     //если значение выражения пустое, просто передаем текущую дату
     //из вводимой даты берем только год
     ValueCalculated = (ValueExpression.IsEmpty)
         ? handler.Settings.Date
         : new DateTime(handler.Settings.Date.Year, ValueExpression.Month, ValueExpression.Day);
 }
Example #19
0
        protected static string GetKindStringValue(ViewModelItemKind kind, IRuleHandler handler, IRuleSerializerRoot ruleSerializer)
        {
            string result = "";

            int index = -1;

            switch (kind)
            {
            case ViewModelItemKind.Choir:
                index = 0;
                break;

            case ViewModelItemKind.Deacon:
                index = 1;
                break;

            case ViewModelItemKind.Lector:
                index = 2;
                break;

            case ViewModelItemKind.Priest:
                index = 3;
                break;

            case ViewModelItemKind.Stihos:
                index = 4;
                break;

            case ViewModelItemKind.Irmos:
                index = 5;
                break;

            case ViewModelItemKind.Troparion:
                index = 6;
                break;

            case ViewModelItemKind.Chorus:
                index = 7;
                break;

            case ViewModelItemKind.Theotokion:
                index = 8;
                break;
                //default:
                //    return string.Empty;
            }

            if (index >= 0)
            {
                result = handler.Settings.Rule.Owner.GetCommonRuleIndexedString(
                    new CommonRuleServiceRequest()
                {
                    Key = CommonRuleConstants.ViewModelKind, RuleSerializer = ruleSerializer
                }, index, handler.Settings.Language.Name);
            }

            return(result);
        }
Example #20
0
 public void CreateViewModel(IRuleHandler handler, Action <ElementViewModel> append)
 {
     ViewModelFactory.Create(new CreateViewModelRequest <TextHolder>()
     {
         Element           = this,
         Handler           = handler,
         AppendModelAction = append
     });
 }
Example #21
0
        private static void Rewrite(IAsAdditionElement found, IRuleHandler handler)
        {
            var currentsettings = handler.Settings;

            handler.Settings = currentsettings.Addition;
            (found as RuleElementBase).Interpret(handler);

            handler.Settings = currentsettings;
        }
Example #22
0
 public void CreateViewModel(IRuleHandler handler, Action <OutputSectionModelCollection> append)
 {
     ViewModelFactory.Create(new CreateViewModelRequest <KontakionRule>()
     {
         Element           = this,
         Handler           = handler,
         AppendModelAction = append
     });
 }
Example #23
0
        private static (ItemText StihosText, ItemText ChoirText) GetStringValues(IRuleHandler handler, IRuleSerializerRoot serializer)
        {
            //находим Стих и Хор для дальнешей вставки
            var stihos = serializer.GetCommonRuleItemTextValue(handler.Settings.TypiconVersionId, CommonRuleConstants.StihosRule);

            var choir = serializer.GetCommonRuleItemTextValue(handler.Settings.TypiconVersionId, CommonRuleConstants.ChoirRule);

            return(stihos, choir);
        }
Example #24
0
 public virtual void CreateViewModel(IRuleHandler handler, Action <OutputSectionModelCollection> append)
 {
     ViewModelFactory.Create(new CreateViewModelRequest <YmnosStructureRule>()
     {
         Element           = this,
         Handler           = handler,
         AppendModelAction = append
     });
 }
Example #25
0
        protected override void InnerInterpret(IRuleHandler handler)
        {
            if (handler.IsAuthorized <KAfterRule>())
            {
                base.InnerInterpret(handler);

                handler.Execute(this);
            }
        }
Example #26
0
        protected override void InnerInterpret(IRuleHandler handler)
        {
            if (handler.IsTypeAuthorized(this) && !this.AsAdditionHandled(handler))
            {
                base.InnerInterpret(handler);

                handler.Execute(this);
            }
        }
Example #27
0
        protected override void InnerInterpret(IRuleHandler handler)
        {
            if (handler.IsAuthorized <Notice>())
            {
                handler.Execute(this);

                //base.Interpret(date, handler);
            }
        }
Example #28
0
 public virtual void CreateViewModel(IRuleHandler handler, Action <ElementViewModel> append)
 {
     ViewModelFactory.Create(new CreateViewModelRequest <KanonasRule>()
     {
         Element           = this,
         Handler           = handler,
         AppendModelAction = append
     });
 }
Example #29
0
 public static void AppendViewModel(this ItemText text, IRuleHandler handler, OutputSectionModelCollection viewModel)
 {
     if (text?.IsEmpty == false)
     {
         viewModel.Add(OutputSectionFactory.Create(TextHolderKind.Text,
                                                   new List <ItemTextNoted> {
             new ItemTextNoted(text)
         }));
     }
 }
 public static void AppendViewModel(this ItemText text, IRuleHandler handler, ElementViewModel viewModel)
 {
     if (text?.IsEmpty == false)
     {
         viewModel.Add(ViewModelItemFactory.Create(TextHolderKind.Text,
                                                   new List <ParagraphViewModel> {
             ParagraphVMFactory.Create(text, handler.Settings.Language.Name)
         }));
     }
 }
		public static IEnumerable<string> GetRuleLines(IRuleHandler profile)
		{
			return
				(profile.DecodedRules ?? string.Empty).Split(Environment.NewLine.ToCharArray()).Where(x => !string.IsNullOrEmpty(x));
		}