Example #1
0
        public void BuildFor(CohortAggregateContainer container, ParameterManager parameterManager)
        {
            ThrowIfAlreadyBuilt();
            IsForContainer = true;

            _log.AppendLine("Starting Build for " + container);
            //gather dependencies
            foreach (var cohortSet in ChildProvider.GetAllChildrenRecursively(container).OfType <AggregateConfiguration>().Where(IsEnabled).OrderBy(ac => ac.Order))
            {
                AddDependency(cohortSet);
            }

            if (!Dependencies.Any())
            {
                throw new QueryBuildingException($"There are no AggregateConfigurations under the SET container '{container}'");
            }

            LogDependencies();

            BuildDependenciesSql(parameterManager.ParametersFoundSoFarInQueryGeneration[ParameterLevel.Global].ToArray());

            MakeCacheDecision();

            Sql = BuildSql(container, parameterManager);
        }
Example #2
0
        /// <summary>
        /// Objects are enabled if they do not support disabling (<see cref="IDisableable"/>) or are <see cref="IDisableable.IsDisabled"/> = false
        /// </summary>
        /// <returns></returns>
        private bool IsEnabled(IOrderable arg)
        {
            var parentDisabled = ChildProvider.GetDescendancyListIfAnyFor(arg)?.Parents.Any(p => p is IDisableable d && d.IsDisabled);

            //if a parent is disabled
            if (parentDisabled.HasValue && parentDisabled.Value)
            {
                return(false);
            }

            //or you yourself are disabled
            var dis = arg as IDisableable;

            return(dis == null || !dis.IsDisabled);
        }