Beispiel #1
0
        private static void BuildJoinCondition(SqlQuery query, SqlQueryJoin join, QueryConditionDef condition, DocDef docDef, SqlQueryCondition parentCondition, IDataContext dataContext)
        {
            if (condition.Condition != ConditionOperation.Include && condition.Condition != ConditionOperation.Exp)
            {
                var leftPart  = BuildConditionPart(query, condition.Left, dataContext);
                var rightPart = BuildConditionPart(query, condition.Right, dataContext);
                join.Conditions.Add(new SqlQueryCondition(condition.Operation, leftPart, condition.Condition, rightPart));
            }
            else if (condition.Condition == ConditionOperation.Include && condition.Conditions != null && condition.Conditions.Count > 0)
            {
                var attrDef = String.IsNullOrEmpty(condition.AttributeName)
                                  ? docDef.Attributes.First(a => a.Id == condition.AttributeId)
                                  : docDef.Attributes.First(
                    a => String.Equals(a.Name, condition.AttributeName, StringComparison.OrdinalIgnoreCase));
                query.JoinSource(query.FindSourceByDocDef(docDef), attrDef.DocDefType.Id, SqlSourceJoinType.Inner, attrDef.Id);

                foreach (var child in condition.Conditions)
                {
                    BuildJoinCondition(query, join, child, attrDef.DocDefType.Id, parentCondition, dataContext);
                }
            }
            else if (condition.Condition == ConditionOperation.Exp && condition.Conditions != null)
            {
                var exp = new SqlQueryCondition(null, condition.Operation, Guid.Empty, ConditionOperation.Exp, null);

                foreach (var child in condition.Conditions)
                {
                    BuildJoinCondition(query, join, child, docDef, exp, dataContext);
                }
            }
        }
Beispiel #2
0
        private static void BuildJoinCondition(SqlQuery query, SqlQueryJoin join, QueryConditionDef condition, Guid docDefId, SqlQueryCondition parentCondition, IDataContext dataContext)
        {
            // using (var defRepo = new DocDefRepository(dataContext))
            var defRepo = query.Provider.Get <IDocDefRepository>();
            {
                var docDef = defRepo.DocDefById(docDefId);

                BuildJoinCondition(query, join, condition, docDef, parentCondition, dataContext);
            }
        }
Beispiel #3
0
        private static void BuildCondition(SqlQuery query, QueryConditionDef condition, DocDef docDef, SqlQueryCondition parentCondition)
        {
            if (condition.Condition != ConditionOperation.Include && condition.Condition != ConditionOperation.Exp)
            {
                if (condition.SubQueryDef != null)
                {
                    var subQuery = Build(query.DataContext, condition.SubQueryDef);
                    if (String.IsNullOrEmpty(condition.AttributeName))
                    {
                        query.AddCondition(condition.Operation, docDef, condition.AttributeId, condition.Condition,
                                           subQuery, condition.SubQueryAttribute, parentCondition);
                    }
                    else
                    {
                        query.AddCondition(condition.Operation, docDef, condition.AttributeName, condition.Condition,
                                           subQuery, condition.SubQueryAttribute, parentCondition);
                    }
                }
                else
                if (String.IsNullOrEmpty(condition.AttributeName))
                {
                    query.AddCondition(condition.Operation, docDef, condition.AttributeId, condition.Condition, condition.Values, parentCondition);
                }
                else
                {
                    query.AddCondition(condition.Operation, docDef, condition.AttributeName, condition.Condition,
                                       condition.Values, parentCondition);
                }
            }
            else if (condition.Condition == ConditionOperation.Include && condition.Conditions != null && condition.Conditions.Count > 0)
            {
                var attrDef = String.IsNullOrEmpty(condition.AttributeName)
                                  ? docDef.Attributes.First(a => a.Id == condition.AttributeId)
                                  : docDef.Attributes.First(
                    a => String.Equals(a.Name, condition.AttributeName, StringComparison.OrdinalIgnoreCase));
                query.JoinSource(query.FindSourceByDocDef(docDef), attrDef.DocDefType.Id, SqlSourceJoinType.Inner, attrDef.Id);

                foreach (var child in condition.Conditions)
                {
                    BuildCondition(query, child, attrDef.DocDefType.Id, parentCondition);
                }
            }
            else if (condition.Condition == ConditionOperation.Exp && condition.Conditions != null)
            {
                var exp = query.AddExpCondition(condition.Operation, parentCondition);

                foreach (var child in condition.Conditions)
                {
                    BuildCondition(query, child, docDef, exp);
                }
            }
        }
        public IQueryCondition AddExpCondition(ExpressionOperation operation, string attribute)
        {
            var exp = new QueryConditionDef {
                Operation = operation, Condition = ConditionOperation.Exp
            };

            AddCondition(exp);
            var condition = CreateConditionDef(attribute, ExpressionOperation.And, ""); // new QueryConditionDef { AttributeName = attribute, Operation = ExpressionOperation.And };

            exp.Conditions.Add(condition);

            var expBuilder = new ExpressionBuilder(this, exp);

            return(new QueryConditionBuilder(expBuilder, condition));
        }
Beispiel #5
0
        public IQueryCondition On(string source, string attrName)
        {
            var sourceDef = Parent.GetSource(source);

            var condition = new QueryConditionDef
            {
                Operation = ExpressionOperation.And,
                Left      = new QueryConditionPartDef
                {
                    Attribute = new QuerySingleAttributeDef
                    {
                        Alias     = attrName,
                        Attribute = new QueryAttributeRef {
                            Source = sourceDef, AttributeName = attrName
                        }
                    }
                }
            };

            AddCondition(condition);

            return(new QueryConditionBuilder(this, condition));
        }
 internal override void AddCondition(QueryConditionDef condition)
 {
     Condition.Conditions.Add(condition);
 }
 public ConditionExpressionBuilder(BaseQueryBuilder parent, QueryConditionDef condition)
     : base(parent)
 {
     Condition = condition;
 }
Beispiel #8
0
 public QueryCondition(QueryConditionDef condition, DocDef docDef)
 {
     Condition = condition;
     DocDef    = docDef;
 }
Beispiel #9
0
 internal override void AddCondition(QueryConditionDef condition)
 {
     Def.WhereConditions.Add(condition);
 }
Beispiel #10
0
 internal virtual void AddCondition(QueryConditionDef condition)
 {
     throw new NotImplementedException();
 }