コード例 #1
0
        public object Execute(Query.IContentQuery <Models.MediaContent> query)
        {
            var mediaQuery = (MediaContentQuery)query;
            QueryExpressionTranslator translator = new QueryExpressionTranslator();
            var contentQueryable = translator.Translate(query.Expression, All(mediaQuery.MediaFolder));

            //translator.Visite(query.Expression);
            switch (translator.CallType)
            {
            case CallType.Count:
                return(contentQueryable.Count());

            case CallType.First:
                return(contentQueryable.First());

            case CallType.Last:
                return(contentQueryable.Last());

            case CallType.LastOrDefault:
                return(contentQueryable.LastOrDefault());

            case CallType.FirstOrDefault:
                return(contentQueryable.FirstOrDefault());

            case CallType.Unspecified:
            default:
                return(contentQueryable);
            }
        }
コード例 #2
0
ファイル: QueryExecutor.cs プロジェクト: Epitomy/CMS
        public override object Execute()
        {
            var contents = (IEnumerable <TextContent>)ContentQueryExecutor.Execute(CategoriesQuery.InnerQuery);
            IQueryable <TextContent> categories = new TextContent[0].AsQueryable();

            if (contents.Count() > 0)
            {
                categories = CategoriesQuery.CategoryFolder.GetSchema().GetContents().AsQueryable();
            }

            QueryExpressionTranslator translator = new QueryExpressionTranslator();


            categories = translator.Translate(CategoriesQuery.Expression, categories);


            var categoryData = CategoriesQuery.Repository.GetCategoryData()
                               .Where(it => it.CategoryFolder.EqualsOrNullEmpty(CategoriesQuery.CategoryFolder.FullName, StringComparison.CurrentCultureIgnoreCase))
                               .Where(it => contents.Any(c => it.ContentUUID.EqualsOrNullEmpty(c.UUID, StringComparison.CurrentCultureIgnoreCase)))
                               .ToArray();

            categories = categories.Where(it => categoryData.Any(c => it.UUID.EqualsOrNullEmpty(c.CategoryUUID, StringComparison.CurrentCultureIgnoreCase)));

            var result = Execute(categories, translator.OrderExpressions, translator.CallType, translator.Skip, translator.Take);

            return(result);
        }
コード例 #3
0
            private Expression <Func <MediaContent, bool> > VisitInner(IExpression expression)
            {
                var visitor = new QueryExpressionTranslator();

                visitor.Visite(expression);
                return(visitor.LinqExpression);
            }
コード例 #4
0
ファイル: QueryExecutor.cs プロジェクト: Epitomy/CMS
        public override object Execute()
        {
            IEnumerable <TextContent> contents = new TextContent[0];

            contents = TextContentQuery.Schema.GetContents();

            if (TextContentQuery.Folder != null)
            {
                contents = contents.Where(it => it.FolderName.EqualsOrNullEmpty(TextContentQuery.Folder.FullName, StringComparison.CurrentCultureIgnoreCase));
            }

            QueryExpressionTranslator translator = new QueryExpressionTranslator();

            var contentQueryable = translator.Translate(TextContentQuery.Expression, contents.AsQueryable());

            foreach (var categoryQuery in translator.CategoryQueries)
            {
                var categories = (IEnumerable <TextContent>)ContentQueryExecutor.Execute(categoryQuery);


                var categoryData = TextContentQuery.Repository.GetCategoryData()
                                   .Where(it => categories.Any(c => it.CategoryUUID.EqualsOrNullEmpty(c.UUID, StringComparison.CurrentCultureIgnoreCase)));

                contentQueryable = contentQueryable.Where(it => categoryData.Any(c => it.UUID.EqualsOrNullEmpty(c.ContentUUID, StringComparison.CurrentCultureIgnoreCase)));
            }

            return(Execute(contentQueryable, translator.OrderExpressions, translator.CallType, translator.Skip, translator.Take));
        }
コード例 #5
0
        private Expression <Func <TextContent, bool> > VisitInner(IExpression expression)
        {
            var visitor = new QueryExpressionTranslator();

            visitor.Visite(expression);
            //combine the order expressions.
            this.OrderExpressions.AddRange(visitor.OrderExpressions);

            this.CategoryQueries = this.CategoryQueries.Concat(visitor.CategoryQueries);
            return(visitor.LinqExpression);
        }
コード例 #6
0
ファイル: QueryExecutor.cs プロジェクト: Epitomy/CMS
        public override object Execute()
        {
            var parent = (IEnumerable <TextContent>)ContentQueryExecutor.Execute(ChildrenQuery.ParentQuery);
            IQueryable <TextContent> contents = new TextContent[0].AsQueryable();

            if (parent.Count() > 0)
            {
                contents = ChildrenQuery.ChildSchema.GetContents().AsQueryable();
            }

            QueryExpressionTranslator translator = new QueryExpressionTranslator();

            contents = translator.Translate(ChildrenQuery.Expression, contents);

            contents = contents.Where(it => parent.Any(c => it.ParentUUID.EqualsOrNullEmpty(c.UUID, StringComparison.CurrentCultureIgnoreCase)));


            return(Execute(contents, translator.OrderExpressions, translator.CallType, translator.Skip, translator.Take));
        }
コード例 #7
0
ファイル: QueryExecutor.cs プロジェクト: Epitomy/CMS
        public override object Execute()
        {
            var contents = (IEnumerable<TextContent>)ContentQueryExecutor.Execute(CategoriesQuery.InnerQuery);
            IQueryable<TextContent> categories = new TextContent[0].AsQueryable();
            if (contents.Count() > 0)
            {
                categories = CategoriesQuery.CategoryFolder.GetSchema().GetContents().AsQueryable();
            }

            QueryExpressionTranslator translator = new QueryExpressionTranslator();

            categories = translator.Translate(CategoriesQuery.Expression, categories);

            var categoryData = CategoriesQuery.Repository.GetCategoryData()
                .Where(it => it.CategoryFolder.EqualsOrNullEmpty(CategoriesQuery.CategoryFolder.FullName, StringComparison.CurrentCultureIgnoreCase))
                .Where(it => contents.Any(c => it.ContentUUID.EqualsOrNullEmpty(c.UUID, StringComparison.CurrentCultureIgnoreCase)))
                .ToArray();

            categories = categories.Where(it => categoryData.Any(c => it.UUID.EqualsOrNullEmpty(c.CategoryUUID, StringComparison.CurrentCultureIgnoreCase)));

            var result = Execute(categories, translator.OrderExpressions, translator.CallType, translator.Skip, translator.Take);

            return result;
        }
コード例 #8
0
ファイル: QueryExecutor.cs プロジェクト: Epitomy/CMS
        public override object Execute()
        {
            var parent = (IEnumerable<TextContent>)ContentQueryExecutor.Execute(ChildrenQuery.ParentQuery);
            IQueryable<TextContent> contents = new TextContent[0].AsQueryable();
            if (parent.Count() > 0)
            {

                contents = ChildrenQuery.ChildSchema.GetContents().AsQueryable();

            }

            QueryExpressionTranslator translator = new QueryExpressionTranslator();
            contents = translator.Translate(ChildrenQuery.Expression, contents);

            contents = contents.Where(it => parent.Any(c => it.ParentUUID.EqualsOrNullEmpty(c.UUID, StringComparison.CurrentCultureIgnoreCase)));

            return Execute(contents, translator.OrderExpressions, translator.CallType, translator.Skip, translator.Take);
        }
コード例 #9
0
ファイル: QueryExecutor.cs プロジェクト: Epitomy/CMS
        public override object Execute()
        {
            IEnumerable<TextContent> contents = new TextContent[0];

            contents = TextContentQuery.Schema.GetContents();

            if (TextContentQuery.Folder != null)
            {
                contents = contents.Where(it => it.FolderName.EqualsOrNullEmpty(TextContentQuery.Folder.FullName, StringComparison.CurrentCultureIgnoreCase));
            }

            QueryExpressionTranslator translator = new QueryExpressionTranslator();

            var contentQueryable = translator.Translate(TextContentQuery.Expression, contents.AsQueryable());

            foreach (var categoryQuery in translator.CategoryQueries)
            {
                var categories = (IEnumerable<TextContent>)ContentQueryExecutor.Execute(categoryQuery);

                var categoryData = TextContentQuery.Repository.GetCategoryData()
                    .Where(it => categories.Any(c => it.CategoryUUID.EqualsOrNullEmpty(c.UUID, StringComparison.CurrentCultureIgnoreCase)));

                contentQueryable = contentQueryable.Where(it => categoryData.Any(c => it.UUID.EqualsOrNullEmpty(c.ContentUUID, StringComparison.CurrentCultureIgnoreCase)));

            }

            return Execute(contentQueryable, translator.OrderExpressions, translator.CallType, translator.Skip, translator.Take);
        }
コード例 #10
0
        private Expression<Func<TextContent, bool>> VisitInner(IExpression expression)
        {
            var visitor = new QueryExpressionTranslator();
            visitor.Visite(expression);
            //combine the order expressions.
            this.OrderExpressions.AddRange(visitor.OrderExpressions);

            this.CategoryQueries = this.CategoryQueries.Concat(visitor.CategoryQueries);
            return visitor.LinqExpression;
        }
コード例 #11
0
ファイル: MediaContentProvider.cs プロジェクト: Epitomy/CMS
 private Expression<Func<MediaContent, bool>> VisitInner(IExpression expression)
 {
     var visitor = new QueryExpressionTranslator();
     visitor.Visite(expression);
     return visitor.LinqExpression;
 }
コード例 #12
0
ファイル: MediaContentProvider.cs プロジェクト: Epitomy/CMS
 public object Execute(Query.IContentQuery<Models.MediaContent> query)
 {
     var mediaQuery = (MediaContentQuery)query;
     QueryExpressionTranslator translator = new QueryExpressionTranslator();
     var contentQueryable = translator.Translate(query.Expression, All(mediaQuery.MediaFolder));
     //translator.Visite(query.Expression);
     switch (translator.CallType)
     {
         case CallType.Count:
             return contentQueryable.Count();
         case CallType.First:
             return contentQueryable.First();
         case CallType.Last:
             return contentQueryable.Last();
         case CallType.LastOrDefault:
             return contentQueryable.LastOrDefault();
         case CallType.FirstOrDefault:
             return contentQueryable.FirstOrDefault();
         case CallType.Unspecified:
         default:
             return contentQueryable;
     }
 }