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);
        }
Exemple #2
0
        protected override void VisitWhereCategory(WhereCategoryExpression expression)
        {
            if (query is TranslatedTextContentQuery)
            {
                TranslatedTextContentQuery textContentQuery = (TranslatedTextContentQuery)query;

                var categoryQuery = (new TextContentQueryTranslator()).Translate(expression.CategoryQuery);

                textContentQuery.CategroyQueries = textContentQuery.CategroyQueries.Concat(new[] { (TranslatedTextContentQuery)categoryQuery });
            }
        }