static void Initialize() { try { //Get the feature's configuration info var qc = ConfigurationManager.GetSection("FilterProvider") as FilterProviderConfiguration; if (qc == null) return; if (qc.DefaultProvider == null) throw new ProviderException("You must specify a valid default provider."); //Instantiate the providers providerCollection = new FilterProviderCollection(); ProvidersHelper.InstantiateProviders(qc.Providers, providerCollection, typeof (FilterProviderBase)); providerCollection.SetReadOnly(); defaultProvider = providerCollection[qc.DefaultProvider]; if (defaultProvider == null) { PropertyInformation information = qc.ElementInformation.Properties["defaultProvider"]; if (information != null) throw new ConfigurationErrorsException( "You must specify a default provider for the feature.", information.Source, information.LineNumber); } } catch (Exception ex) { isInitialized = true; Tracing.Tracer.LogError(ex); throw; } isInitialized = true; //error-free initialization }
public static void CreateMember(ITypeInfo typeInfo , FilterProviderBase provider) { var attributes = new List<Attribute>{new BrowsableAttribute(false),new MemberDesignTimeVisibilityAttribute( false)}; IMemberInfo member = typeInfo.CreateMember(provider.FilterMemberName, provider.FilterMemberType); if (provider.FilterMemberIndexed) attributes.Add(new IndexedAttribute()); if (provider.FilterMemberSize!=SizeAttribute.DefaultStringMappingFieldSize) attributes.Add(new SizeAttribute(provider.FilterMemberSize)); foreach (var attribute in attributes) member.AddAttribute(attribute); }
public void CopyTo(FilterProviderBase[] array, int index) { base.CopyTo(array, index); }
static bool HasFilterValue(FilterProviderBase provider) { return provider.FilterValue == null || (provider.FilterValue is ICollection && ((ICollection) provider.FilterValue).Count==0); }
string GetNodeAlias(SelectStatement statement, FilterProviderBase providerBase) { return statement.Operands.OfType<QueryOperand>().Where(operand => operand.ColumnName == providerBase.FilterMemberName).Select(operand => operand.NodeAlias).FirstOrDefault() ?? statement.Alias; }
IEnumerable<BinaryOperator> GetBinaryOperators(CriteriaOperatorExtractor extractor, FilterProviderBase providerBase) { return extractor.BinaryOperators.Where( @operator => @operator.RightOperand is OperandValue && ReferenceEquals(((OperandValue) @operator.RightOperand).Value, providerBase.FilterMemberName)); }
void ApplyCondition(SelectStatement statement, FilterProviderBase providerBase, string nodeAlias) { if (providerBase.FilterValue is IEnumerable) { CriteriaOperator criteriaOperator = ((IEnumerable) providerBase.FilterValue).Cast<object>().Aggregate<object, CriteriaOperator>(null, (current, value) => current | new QueryOperand(providerBase.FilterMemberName, nodeAlias) == value.ToString()); criteriaOperator = new GroupOperator(criteriaOperator); statement.Condition &= criteriaOperator; } else statement.Condition &= new QueryOperand(providerBase.FilterMemberName, nodeAlias) == (providerBase.FilterValue == null ? null : providerBase.FilterValue.ToString()); Tracing.Tracer.LogVerboseValue("new_statement", statement); }