Esempio n. 1
0
 void CreateMembers(ITypesInfo typesInfo)
 {
     foreach (FilterProviderBase provider in FilterProviderManager.Providers)
     {
         FilterProviderBase provider1 = provider;
         foreach (ITypeInfo typeInfo in typesInfo.PersistentTypes.Where(typeInfo => TypeMatch(typeInfo, provider1)))
         {
             CreateMember(typeInfo, provider);
         }
     }
 }
Esempio n. 2
0
 void CreateMembers(ITypesInfo typesInfo)
 {
     foreach (FilterProviderBase provider in FilterProviderManager.Providers)
     {
         FilterProviderBase provider1 = provider;
         foreach (ITypeInfo typeInfo in typesInfo.PersistentTypes.Where(
                      typeInfo => (provider1.ObjectType == null || provider1.ObjectType == typeInfo.Type) && typeInfo.FindMember(provider1.FilterMemberName) == null && typeInfo.IsPersistent))
         {
             CreateMember(typeInfo, provider);
         }
     }
 }
Esempio n. 3
0
 void ApplyCondition(SelectStatement statement, FilterProviderBase providerBase, string nodeAlias)
 {
     if (providerBase.FilterValue is IList)
     {
         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());
     }
 }
Esempio n. 4
0
 public void InsertData(IList <InsertStatement> statements)
 {
     foreach (InsertStatement statement in statements)
     {
         if (!IsSystemTable(statement.TableName))
         {
             List <QueryOperand> operands = statement.Operands.OfType <QueryOperand>().ToList();
             for (int i = 0; i < operands.Count(); i++)
             {
                 FilterProviderBase providerBase =
                     FilterProviderManager.GetFilterProvider(statement.TableName, operands[i].ColumnName, StatementContext.Insert);
                 if (providerBase != null && !FilterIsShared(statements, providerBase))
                 {
                     statement.Parameters[i].Value = GetModifyFilterValue(providerBase);
                 }
             }
         }
     }
 }
Esempio n. 5
0
        public SelectStatement ApplyCondition(SelectStatement statement)
        {
            var extractor = new CriteriaOperatorExtractor();

            extractor.Extract(statement.Condition);

            foreach (FilterProviderBase provider in FilterProviderManager.Providers)
            {
                FilterProviderBase providerBase = FilterProviderManager.GetFilterProvider(statement.TableName, provider.FilterMemberName, StatementContext.Select);
                if (providerBase != null)
                {
                    IEnumerable <BinaryOperator> binaryOperators = GetBinaryOperators(extractor, providerBase);
                    if (!FilterIsShared(statement.TableName, providerBase.Name) && !binaryOperators.Any())
                    {
                        string nodeAlias = GetNodeAlias(statement, providerBase);
                        ApplyCondition(statement, providerBase, nodeAlias);
                    }
                }
            }
            return(statement);
        }
Esempio n. 6
0
        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);
            }
        }
Esempio n. 7
0
 string GetNodeAlias(SelectStatement statement, FilterProviderBase providerBase)
 {
     return(statement.Operands.OfType <QueryOperand>().Where(operand
                                                             => operand.ColumnName == providerBase.FilterMemberName).Select(operand
                                                                                                                            => operand.NodeAlias).FirstOrDefault() ?? GetNodeAlias(statement, providerBase.FilterMemberName));
 }
Esempio n. 8
0
 IEnumerable <BinaryOperator> GetBinaryOperators(CriteriaOperatorExtractor extractor, FilterProviderBase providerBase)
 {
     return(extractor.BinaryOperators.Where(
                @operator =>
                @operator.RightOperand is OperandValue &&
                ReferenceEquals(((OperandValue)@operator.RightOperand).Value, providerBase.FilterMemberName)));
 }
Esempio n. 9
0
 bool FilterIsShared(IEnumerable <InsertStatement> statements, FilterProviderBase providerBase)
 {
     return(statements.Aggregate(false, (current, insertStatement) => current & FilterIsShared(insertStatement.TableName, providerBase.Name)));
 }
Esempio n. 10
0
 object GetModifyFilterValue(FilterProviderBase providerBase)
 {
     return(providerBase.FilterValue is IList
                ? ((IList)providerBase.FilterValue).OfType <object>().FirstOrDefault()
                : providerBase.FilterValue);
 }
Esempio n. 11
0
 bool TypeMatch(ITypeInfo typeInfo, FilterProviderBase provider1)
 {
     return(((!typeInfo.IsInterface && provider1.ObjectType == null || provider1.ObjectType == typeInfo.Type) && typeInfo.FindMember(provider1.FilterMemberName) == null && typeInfo.IsPersistent) && !ModelSystemTablesNodesGenerator.SystemTables.Contains(typeInfo.Name));
 }