Пример #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
        public object Execute(Query.IContentQuery <Models.TextContent> query)
        {
            var translator = new QueryProcessor.TextContentTranslator();
            var executor   = translator.Translate(query);

            return(executor.Execute());
        }
Пример #3
0
        public TranslatedQuery Translate(Query.IContentQuery <TextContent> contentQuery)
        {
            if (contentQuery is CategoriesQuery)
            {
                var categoriesQuery = (CategoriesQuery)contentQuery;
                var translated      = new TranslatedCategoriesQuery(categoriesQuery.Repository, categoriesQuery.CategoryFolder);
                translated.SubQuery = this.Translate(categoriesQuery.InnerQuery);

                StringVisitor visitor = new StringVisitor(translated);
                visitor.Visite(contentQuery.Expression);

                return(translated);
            }
            //else if (contentQuery is CategorizablesQuery)
            //{
            //    var categorizablesQuery = (CategorizablesQuery)contentQuery;
            //    var translated = new TranslatedCategorizablesQuery(categorizablesQuery.Repository, categorizablesQuery.CategorizableFolder);
            //    translated.CategoryQuery = this.Translate(categorizablesQuery.CategoryQuery);

            //    StringVisitor visitor = new StringVisitor(translated);
            //    visitor.Visite(contentQuery.Expression);

            //    return translated;
            //}
            else if (contentQuery is ChildrenQuery)
            {
                var childrenQuery = (ChildrenQuery)contentQuery;
                var translated    = new TranslatedChildrenQuery(childrenQuery.Repository, childrenQuery.ChildSchema);
                translated.ParentQuery = this.Translate(childrenQuery.ParentQuery);

                StringVisitor visitor = new StringVisitor(translated);
                visitor.Visite(contentQuery.Expression);

                return(translated);
            }
            else if (contentQuery is ParentQuery)
            {
                var parentQuery = (ParentQuery)contentQuery;
                var translated  = new TranslatedParentQuery(parentQuery.Repository, parentQuery.ParentSchema);
                translated.ChildrenQuery = this.Translate(parentQuery.ChildrenQuery);


                StringVisitor visitor = new StringVisitor(translated);
                visitor.Visite(contentQuery.Expression);

                return(translated);
            }
            else if (contentQuery is TextContentQuery)
            {
                var textContentQuery = (TextContentQuery)contentQuery;
                var translated       = new TranslatedTextContentQuery(textContentQuery.Repository, textContentQuery.Schema, textContentQuery.Folder);

                StringVisitor visitor = new StringVisitor(translated);
                visitor.Visite(contentQuery.Expression);

                return(translated);
            }
            return(null);
        }
Пример #4
0
        public object Execute(Query.IContentQuery <Models.TextContent> query)
        {
            /*
             * Categories
             * SELECT * FROM [ef1].[dbo].[Test2] category
             * WHERE  EXISTS(
             *          SELECT ContentCategory.CategoryUUID
             *              FROM [fullips.__ContentCategory] ContentCategory,
             *                  (SELECT * FROM [ef1].[dbo].[Tests] content WHERE ([UUID] = 'F562CCDW9FGM53WE') AND FolderName='Test' )content
             *              WHERE content.UUID = ContentCategory.UUID AND ContentCategory.CategoryUUID = category.UUID
             *        ) AND 1=1 AND FolderName='Test2' ORDER BY Id DESC
             *
             */

            object result = null;

            //Get content from API service
            //
            if (query is TextContentQuery && ((TextContentQuery)query).Folder != null && ((TextContentQuery)query).Folder.GetActualFolder().StoreInAPI)
            {
                var folder = ((TextContentQuery)query).Folder;
                var schema = ((Kooboo.CMS.Content.Query.TextContentQuery)query).Schema;

                if (query.Expression is Query.Expressions.CallExpression)
                {
                    result = GetResult(folder, schema, (Expression)query.Expression, ((Query.Expressions.CallExpression)query.Expression).CallType);
                }
                else if (query.Expression is Query.Expressions.TakeExpression ||
                         query.Expression is Kooboo.CMS.Content.Query.Expressions.OrderExpression)
                {
                    result = GetResult(folder, schema, (Expression)query.Expression, Kooboo.CMS.Content.Query.Expressions.CallType.Unspecified);
                }
                if (result == null)
                {
                    return new TextContent[] {}
                }
                ;

                return(result);
            }

            var translator = new QueryProcessor.TextContentTranslator();
            var executor   = translator.Translate(query);

            result = executor.Execute();

            return(result);
        }
Пример #5
0
 public IQueryExecutor <TextContent> Translate(Query.IContentQuery <TextContent> contentQuery)
 {
     if (contentQuery is CategoriesQuery)
     {
         return(new CategoriesQueryExecutor((CategoriesQuery)contentQuery));
     }
     //else if (contentQuery is CategorizablesQuery)
     //{
     //    return new CategorizablesQueryExecutor((CategorizablesQuery)contentQuery);
     //}
     else if (contentQuery is ChildrenQuery)
     {
         return(new ChildrenQueryExecutor((ChildrenQuery)contentQuery));
     }
     else if (contentQuery is ParentQuery)
     {
         return(new ParentQueryExecutor((ParentQuery)contentQuery));
     }
     else if (contentQuery is TextContentQuery)
     {
         return(new SimpleQueryExecutor((TextContentQuery)contentQuery));
     }
     return(null);
 }
Пример #6
0
        public object Execute(Query.IContentQuery <Models.MediaContent> query)
        {
            MediaContentQueryExecutor executor = new MediaContentQueryExecutor((MediaContentQuery)query);

            return(executor.Execute());
        }
Пример #7
0
 object IContentProvider <Models.TextContent> .Execute(Query.IContentQuery <Models.TextContent> query)
 {
     return(ContentQueryExecutor.Execute(query));
 }