Ejemplo n.º 1
0
        private Clause <TEntity> CreateInternal(bool allowReturnAll = false)
        {
            if (!Clauses.Any() && allowReturnAll != true)
            {
                throw new Exception("No clauses specified, to retrieve all you need to set that it is enabled");
            }

            Clause <TEntity> clause = null;

            foreach (var clauseData in Clauses)
            {
                if (clause == null)
                {
                    clause = clauseData.Clause;
                }
                else
                {
                    switch (clauseData.Operator)
                    {
                    case Operator.And:
                        clause &= clauseData.Clause;
                        break;

                    case Operator.Or:
                        clause |= clauseData.Clause;
                        break;

                    default:
                        throw new Exception("Unknown operator used");
                    }
                }
            }

            return(clause);
        }
Ejemplo n.º 2
0
        public TSpecification EndGroup()
        {
            if (!Clauses.Any())
            {
                return(Parent);
            }

            var specification = CreateInternal();

            if (specification != null)
            {
                Parent.Clause(specification);
            }
            else
            {
                switch (Parent.CurrentOperator)
                {
                case Operator.And:
                    Parent.Clause(new TrueSpecification <TEntity>());
                    break;

                case Operator.Or:
                    Parent.Clause(new FalseSpecification <TEntity>());
                    break;
                }
            }
            return(Parent);
        }
Ejemplo n.º 3
0
        private void SetStatement(SqlStatement value)
        {
            if (!Clauses.Any())
            {
                Clauses.Add(value);
            }

            if (Clauses[0] is SqlStatement)
            {
                Clauses[0] = value;
            }
            else
            {
                Clauses.Insert(0, value);
            }
        }