private IEnumerable<IFilterCondition> TranslateFilterConditions(IEnumerable<FilterCondition> filterConditions, IByContextSettings settings) { foreach (var filterCondition in filterConditions) { IFilterConditionFactory factory = this._helper.GetConfigurationProperty(filterCondition, x => x.ConditionName, () => settings.FilterConditionFactories[settings.DefaultFilterConditionName], x => settings.FilterConditionFactories[x]); yield return factory.Create(filterCondition.Properties); } }
private IEnumerable<Tuple<IValueProvider, IFilterCondition[]>> BuildValueProviders(Parameter parameter, IByContextSettings settings) { foreach (var parameterValue in parameter.Values) { IEnumerable<IFilterCondition> filterConditions = this.TranslateFilterConditions(parameterValue.FilterConditions, settings); yield return new Tuple<IValueProvider, IFilterCondition[]>(settings.ValueProviderBuilder.Build(parameter, parameterValue),filterConditions.ToArray()); } }
private void BuildParameterProvider(IByContextSettings settings, SectionProvider provider, Parameter parameter, PropertyInfo parameterPropertyInfo) { if (string.IsNullOrEmpty(parameter.TypeName)) { parameter.TypeName = parameterPropertyInfo.PropertyType.AssemblyQualifiedName; } else if (!parameterPropertyInfo.PropertyType.IsAssignableFrom(Type.GetType(parameter.TypeName, true))) { throw new InvalidParameterConfiguration(string.Format("Specified type {0} for parameter {1} is not assignable to the property of type {2}", parameter.TypeName, parameter.Name,parameterPropertyInfo.PropertyType.FullName)); } /*var valueProvider = new ParameterToParameterValueProviderConverter().Convert(parameter, settings);*/ var valueProvider = new ParameterToQueryEngineParameterValueProviderConverter().Convert(parameter, settings); provider.ParameterValuesProviders.Add(parameterPropertyInfo.Name, valueProvider); }
public IParameterValueProvider Convert(Parameter parameter, IByContextSettings settings) { var parameterType = Type.GetType(parameter.TypeName, true); var required = this.GetRequired(parameter); bool isParameterSupportedCollection = settings.ResultBuilderProvider.IsTypeIsSupportedCollection(parameterType); var engine = this.BuildQueryEngine(parameter, settings, isParameterSupportedCollection); var resultBuilder = settings.ResultBuilderProvider.Get(parameterType); IParameterValueProvider parameterValueProvider = new QueryEngineParameterValueProvider (engine, resultBuilder, required, parameter.Name, settings.LogggerProvider); return parameterValueProvider; }
public ISectionProvider Convert(Section section, IByContextSettings settings) { try { Type sectionType = Type.GetType(section.TypeName, true); var binder = this.GetModelBinderForSection(sectionType, section, settings); var provider = new SectionProvider { SectionType = sectionType, ModelBinder = binder }; this.BuildParametersProviders(section, settings, provider, sectionType); return provider; } catch (Exception e) { throw new SessionToProviderConvertionFailed(section, e); } }
private void BuildParametersProviders(Section section, IByContextSettings settings, SectionProvider provider, Type sectionType) { var properties = sectionType.GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (Parameter parameter in section.Parameters.Values) { var parameterPropertyInfo = properties.SingleOrDefault(x => x.Name.ToLower() == parameter.Name.ToLower()); if (parameterPropertyInfo == null) { if(settings.ThrowIfParameterMemberMissing) { throw new MemberNotFoundForParameter(parameter); } } else { this.BuildParameterProvider(settings, provider, parameter, parameterPropertyInfo); } } }
public EagerLoadValueProviderBuilderStrategy(IByContextSettings settings) { _settings = settings; }
private IQueryEngine BuildQueryEngine(Parameter parameter, IByContextSettings settings, bool isParameterSupportedCollection) { var queriableItems = this.BuildValueProviders(parameter, settings).Select(x => QueriableItem.Create(x.Item1, x.Item2)); return settings.QueryEngineBuilder.Get(queriableItems, isParameterSupportedCollection); }
private IModelBinder GetModelBinderForSection(Type sectionType, Section section, IByContextSettings settings) { var factory = new ConfigurationHelper() .GetConfigurationProperty<Section, IModelBinderFactory>(section, x => x.ModelBinderFactory, settings.ModelBinderFactory, x => settings.ModelBinderFactory); return factory.Create(sectionType); }
public ConvertFromSectionDataProvider(Func<IEnumerable<Section>> getMehtod, IByContextSettings settings) { this.GetMehtod = getMehtod; this.Settings = settings; }
public EagerLoadValueProviderDecorator(IValueProvider inner, IByContextSettings settings) { _inner = inner; settings.AfterInitListeners.Add(this); }