Пример #1
0
        public override SchemaFilterResult VisitSchemaPredicate(SchemaPredicateExpression node)
        {
            var fieldValue = node.ValueExpression.Value.ToString();

            var toReturn = new SchemaFilterResult();

            switch (node.ValueExpression.ClauseType)
            {
            case ValuePredicateType.Equal:
                toReturn.NhCriterion = Restrictions.Eq(Projections.Property(() => schema.Alias), fieldValue);
                toReturn.Joins.Add(new Join(() => agg.NodeVersion, () => version, JoinType.InnerJoin));
                toReturn.Joins.Add(new Join(() => version.AttributeSchemaDefinition, () => schema, JoinType.InnerJoin));
                break;

            case ValuePredicateType.NotEqual:
                toReturn.NhCriterion = !Restrictions.Eq(Projections.Property(() => schema.Alias), fieldValue);
                toReturn.Joins.Add(new Join(() => agg.NodeVersion, () => version, JoinType.InnerJoin));
                toReturn.Joins.Add(new Join(() => version.AttributeSchemaDefinition, () => schema, JoinType.InnerJoin));
                break;

            default:
                throw new InvalidOperationException("Cannot query an item by schema alias by any other operator than == or !=");
            }

            return(toReturn);
        }
Пример #2
0
        public override Expression VisitSchemaPredicate(SchemaPredicateExpression node)
        {
            _expressionsFound.AppendFormat("\nSchema: {0} {1} {2}", node.SelectorExpression.Name, node.ValueExpression.ClauseType.ToString(), node.ValueExpression.Value);

            if (node.SelectorExpression.Name == _fieldName && node.ValueExpression.Value.Equals(_fieldValue) && node.ValueExpression.ClauseType == _valuePredicateType)
            {
                FoundMatch = true;
            }

            return(node);
        }
Пример #3
0
        private Expression GetCriteriaExpression(QueryModel queryModel, Expression wherePredicate)
        {
            var visitExpression = true;

            // Check if this is a fake Where clause to fool Remotion
            var casted = wherePredicate as BinaryExpression;

            if (casted != null)
            {
                var left  = casted.Left as ConstantExpression;
                var right = casted.Right as ConstantExpression;
                if (left != null && right != null && left.Equals(this.IgnoreExpression) && right.Equals(this.IgnoreExpression))
                {
                    visitExpression = false;
                }
            }

            Expression criteriaExpression = null;

            if (visitExpression)
            {
                criteriaExpression = this._treeVisitor.VisitExpression(wherePredicate);
            }

            // If the item type of the FromClause has a DefaultSchemaForQueryingAttribute, add that automatically
            // to the Where expression
            var itemType = queryModel.MainFromClause.ItemType;

            if (itemType != null)
            {
                var attribs = itemType.GetCustomAttributes <DefaultSchemaForQueryingAttribute>(true).ToArray();
                if (attribs.Any())
                {
                    foreach (var schemaForQueryingAttribute in attribs)
                    {
                        var schemaExpression = new SchemaPredicateExpression(
                            new SchemaSelectorExpression("Alias"),
                            new SchemaValueExpression(ValuePredicateType.Equal, schemaForQueryingAttribute.SchemaAlias));

                        if (criteriaExpression == null)
                        {
                            criteriaExpression = schemaExpression;
                        }
                        else
                        {
                            criteriaExpression = Expression.And(criteriaExpression, schemaExpression);
                        }
                    }
                }
            }
            return(criteriaExpression);
        }
        public override MembershipProviderQuery VisitSchemaPredicate(SchemaPredicateExpression node)
        {
            throw new NotImplementedException();

            //var schemaPropertyname = node.SelectorExpression.Name;
            //var fieldValue = node.ValueExpression.Value.ToString();

            //switch (node.ValueExpression.ClauseType)
            //{
            //    case ValuePredicateType.Equal:
            //    case ValuePredicateType.NotEqual:
            //    default:
            //        throw new InvalidOperationException(
            //            "Cannot query an item by schema alias by any other operator than == or !=");
            //}
        }
        public override Expression VisitSchemaPredicate(SchemaPredicateExpression node)
        {
            _expressionsFound.AppendFormat("\n{0}", node);

            foreach (var schemaPredicateExpression in _tester.Schemas)
            {
                if (node.SelectorExpression.Name == schemaPredicateExpression.SelectorExpression.Name &&
                    node.ValueExpression.Value.Equals(schemaPredicateExpression.ValueExpression.Value) &&
                    node.ValueExpression.ClauseType == schemaPredicateExpression.ValueExpression.ClauseType)
                {
                    FoundMatch = true;
                    break;
                }
            }

            return(node);
        }
Пример #6
0
        public override IQuery VisitSchemaPredicate(SchemaPredicateExpression node)
        {
            var schemaPropertyname = node.SelectorExpression.Name;
            var fieldValue         = node.ValueExpression.Value.ToString();

            var c = _manager.CreateSearchCriteria();

            switch (node.ValueExpression.ClauseType)
            {
            case ValuePredicateType.Equal:
                return(c.Must().EntityType <TypedEntity>().Must().Field(FixedIndexedFields.SchemaAlias, fieldValue.Escape()).Compile());

            case ValuePredicateType.NotEqual:
                return(c.Must().EntityType <TypedEntity>().Not().Field(FixedIndexedFields.SchemaAlias, fieldValue.Escape()).Compile());

            default:
                throw new InvalidOperationException(
                          "Cannot query an item by schema alias by any other operator than == or !=");
            }
        }
        public override ICriterion VisitSchemaPredicate(SchemaPredicateExpression node)
        {
            var schemaPropertyname = node.SelectorExpression.Name;
            var fieldValue         = node.ValueExpression.Value.ToString();

            switch (node.ValueExpression.ClauseType)
            {
            case ValuePredicateType.Equal:
                _requiresSchemaTableJoin = true;
                // Since this is an 'equal' clause, add it to the RequiredSchemaAliases list
                RequiredSchemaAliases.Add(node);
                return(Restrictions.Eq(Projections.Property(() => schema.Alias), fieldValue));

            case ValuePredicateType.NotEqual:
                _requiresSchemaTableJoin      = true;
                _someSchemaAliasesAreExcluded = true;
                return(!Restrictions.Eq(Projections.Property(() => schema.Alias), fieldValue));

            default:
                throw new InvalidOperationException(
                          "Cannot query an item by schema alias by any other operator than == or !=");
            }
        }
Пример #8
0
        public override QueryOver <NodeVersion> VisitSchemaPredicate(SchemaPredicateExpression node)
        {
            var schemaPropertyname = node.SelectorExpression.Name;
            var fieldValue         = node.ValueExpression.Value.ToString();

            switch (node.ValueExpression.ClauseType)
            {
            case ValuePredicateType.Equal:
                return(QueryOver.Of <NodeVersion>()
                       .JoinQueryOver <AttributeSchemaDefinition>(x => x.AttributeSchemaDefinition)
                       .Where(x => x.Alias == fieldValue)
                       .Select(x => x.Id));

            case ValuePredicateType.NotEqual:
                return(QueryOver.Of <NodeVersion>()
                       .JoinQueryOver <AttributeSchemaDefinition>(x => x.AttributeSchemaDefinition)
                       .Where(x => x.Alias != fieldValue)
                       .Select(x => x.Id));

            default:
                throw new InvalidOperationException(
                          "Cannot query an item by schema alias by any other operator than == or !=");
            }
        }
Пример #9
0
 public override Expression <Func <XElement, bool> > VisitSchemaPredicate(SchemaPredicateExpression node)
 {
     throw new NotImplementedException();
 }
Пример #10
0
 public abstract T VisitSchemaPredicate(SchemaPredicateExpression node);
Пример #11
0
        private Expression GetCriteriaExpression(QueryModel queryModel, Expression wherePredicate)
        {
            var visitExpression = true;

            // Check if this is a fake Where clause to fool Remotion
            var casted = wherePredicate as BinaryExpression;
            if (casted != null)
            {
                var left = casted.Left as ConstantExpression;
                var right = casted.Right as ConstantExpression;
                if (left != null && right != null && left.Equals(this.IgnoreExpression) && right.Equals(this.IgnoreExpression))
                {
                    visitExpression = false;
                }
            }

            Expression criteriaExpression = null;

            if (visitExpression)
            {
                criteriaExpression = this._treeVisitor.VisitExpression(wherePredicate);
            }

            // If the item type of the FromClause has a DefaultSchemaForQueryingAttribute, add that automatically
            // to the Where expression
            var itemType = queryModel.MainFromClause.ItemType;
            if (itemType != null)
            {
                var attribs = itemType.GetCustomAttributes<DefaultSchemaForQueryingAttribute>(true).ToArray();
                if (attribs.Any())
                {
                    foreach (var schemaForQueryingAttribute in attribs)
                    {
                        var schemaExpression = new SchemaPredicateExpression(
                            new SchemaSelectorExpression("Alias"),
                            new SchemaValueExpression(ValuePredicateType.Equal, schemaForQueryingAttribute.SchemaAlias));

                        if (criteriaExpression == null)
                        {
                            criteriaExpression = schemaExpression;
                        }
                        else
                        {
                            criteriaExpression = Expression.And(criteriaExpression, schemaExpression);
                        }
                    }
                }
            }
            return criteriaExpression;
        }
Пример #12
0
 public override Expression VisitSchemaPredicate(SchemaPredicateExpression node)
 {
     StringBuilder.AppendFormat("\n{0}", node);
     return(node);
 }