예제 #1
0
        private static void AddFieldToQuery(GroupQuery groupQuery, string keyword, Field field, bool wildcard = true)
        {
            if (wildcard)
            {
                if (keyword.StartsWith("\"") && keyword.EndsWith("\""))
                {
                    var fieldQuery = new FieldQuery(keyword.Trim(), field);
                    groupQuery.QueryExpressions.Add(fieldQuery);
                    return;
                }

                if (keyword.Trim().Contains(" "))
                {
                    var words = keyword.Trim().Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);
                    var query = new GroupQuery(LuceneOperator.OR);
                    foreach (string w in words)
                    {
                        if (w.Equals("and") || w.Equals("+"))
                        {
                            continue;
                        }
                        var s = w.Replace("\"", string.Empty).Trim();
                        var f = new FieldQuery(string.Format("{0}*", LuceneHelpers.Escape(s)), field);
                        query.QueryExpressions.Add(f);
                    }
                    groupQuery.QueryExpressions.Add(query);
                }
                else
                {
                    var fieldQuery = new FieldQuery(string.Format("{0}*", LuceneHelpers.Escape(keyword)), field);
                    groupQuery.QueryExpressions.Add(fieldQuery);
                }
            }
            else
            {
                var fieldQuery = new FieldQuery(string.Format("{0}", LuceneHelpers.Escape(keyword.Trim())), field);
                groupQuery.QueryExpressions.Add(fieldQuery);
            }
        }
예제 #2
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (ManagerAssist.stop_list.Count == 0)
        {
            string       url       = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "App_Data\\StopList\\中文停用词.txt";
            StreamReader objReader = new StreamReader(url, Encoding.GetEncoding("UTF-8"));
            //StringReader SR = new StringReader(url);
            String line = "";
            while ((line = objReader.ReadLine()) != null)
            {
                ManagerAssist.stop_list.Add(line);
            }
            objReader.Close();
        }
        List <GroupNode> primarygroupNodeList = GroupQuery.getAllPrimaryGroups();

        foreach (GroupNode primaryGroupNode in primarygroupNodeList)
        {
            ListItem item = new ListItem(primaryGroupNode.NodeName, "" + primaryGroupNode.PrimaryGroupId);
            SearchDropDownList.Items.Add(item);
        }
    }
예제 #3
0
        private IQueryExpression CreateQuery(string searchText, IEnumerable<ContentReference> searchRoots, HttpContextBase context, string languageBranch)
        {
            //Main query which groups other queries. Each query added
            //must match in order for a page or file to be returned.
            var query = new GroupQuery(LuceneOperator.AND);

            //Add free text query to the main query
            query.QueryExpressions.Add(new FieldQuery(searchText));

            //Search for pages using the provided language
            var pageTypeQuery = new GroupQuery(LuceneOperator.AND);
            pageTypeQuery.QueryExpressions.Add(new ContentQuery<PageData>());
            pageTypeQuery.QueryExpressions.Add(new FieldQuery(languageBranch, Field.Culture));

            //Search for media without languages
            var contentTypeQuery = new GroupQuery(LuceneOperator.OR);
            contentTypeQuery.QueryExpressions.Add(new ContentQuery<MediaData>());
            contentTypeQuery.QueryExpressions.Add(pageTypeQuery);

            query.QueryExpressions.Add(contentTypeQuery);

            //Create and add query which groups type conditions using OR
            var typeQueries = new GroupQuery(LuceneOperator.OR);
            query.QueryExpressions.Add(typeQueries);
            
            foreach (var root in searchRoots)
            {
                var contentRootQuery = new VirtualPathQuery();
                contentRootQuery.AddContentNodes(root, _contentLoader);
                typeQueries.QueryExpressions.Add(contentRootQuery);
            }

            var accessRightsQuery = new AccessControlListQuery();
            accessRightsQuery.AddAclForUser(PrincipalInfo.Current, context);
            query.QueryExpressions.Add(accessRightsQuery);

            return query;
        }
        private IQueryExpression CreateQuery(string searchText, IEnumerable<ContentReference> searchRoots, HttpContextBase context, string languageBranch)
        {
            //Main query which groups other queries. Each query added
            //must match in order for a page or file to be returned.
            var query = new GroupQuery(LuceneOperator.AND);

            //Add free text query to the main query
            query.QueryExpressions.Add(new FieldQuery(searchText));

            //Search for pages using the provided language
            var pageTypeQuery = new GroupQuery(LuceneOperator.AND);
            pageTypeQuery.QueryExpressions.Add(new ContentQuery<PageData>());
            pageTypeQuery.QueryExpressions.Add(new FieldQuery(languageBranch, Field.Culture));

            //Search for media without languages
            var contentTypeQuery = new GroupQuery(LuceneOperator.OR);
            contentTypeQuery.QueryExpressions.Add(new ContentQuery<MediaData>());
            contentTypeQuery.QueryExpressions.Add(pageTypeQuery);

            query.QueryExpressions.Add(contentTypeQuery);

            //Create and add query which groups type conditions using OR
            var typeQueries = new GroupQuery(LuceneOperator.OR);
            query.QueryExpressions.Add(typeQueries);

            foreach (var root in searchRoots)
            {
                var contentRootQuery = new VirtualPathQuery();
                contentRootQuery.AddContentNodes(root, _contentLoader);
                typeQueries.QueryExpressions.Add(contentRootQuery);
            }

            var accessRightsQuery = new AccessControlListQuery();
            accessRightsQuery.AddAclForUser(PrincipalInfo.Current, context);
            query.QueryExpressions.Add(accessRightsQuery);

            return query;
        }
예제 #5
0
        public static int Count <T>(string keywords, ContentReference root) where T : IContent
        {
            var groupQuery = new GroupQuery(LuceneOperator.AND);

            groupQuery.QueryExpressions.Add(new ContentQuery <T>());

            if (string.IsNullOrWhiteSpace(keywords))
            {
                var dateRangeQuery = new CreatedDateRangeQuery(DateTime.MinValue, DateTime.MaxValue, true);
                groupQuery.QueryExpressions.Add(dateRangeQuery);
            }
            else
            {
                var keywordGroupQuery = new GroupQuery(LuceneOperator.OR);
                keywordGroupQuery.QueryExpressions.Add(AddQueryExpression(keywords, Field.Title));
                keywordGroupQuery.QueryExpressions.Add(AddQueryExpression(keywords, Field.DisplayText));
                groupQuery.QueryExpressions.Add(keywordGroupQuery);
            }

            var searchHandler = ServiceLocator.Current.GetInstance <LuceneContentSearchHandler>();

            return(searchHandler.GetSearchResults <T>(groupQuery, root, 1, int.MaxValue, null, true).TotalHits);
        }
예제 #6
0
        public virtual void testQueryByMember()
        {
            GroupQuery query = identityService.createGroupQuery().groupMember("fozzie");

            verifyQueryResults(query, 2);

            query = identityService.createGroupQuery().groupMember("kermit");
            verifyQueryResults(query, 3);

            query = query.orderByGroupId().asc();
            IList <Group> groups = query.list();

            assertEquals(3, groups.Count);
            assertEquals("admin", groups[0].Id);
            assertEquals("frogs", groups[1].Id);
            assertEquals("muppets", groups[2].Id);

            query  = query.groupType("user");
            groups = query.list();
            assertEquals(2, groups.Count);
            assertEquals("frogs", groups[0].Id);
            assertEquals("muppets", groups[1].Id);
        }
예제 #7
0
        public static IList <T> SearchTags <T>(string tags, ContentReference root, int pageNumber, int pageSize, Collection <SortField> sortFields, out int totalItems) where T : IContent
        {
            var groupQuery = new GroupQuery(LuceneOperator.AND);

            groupQuery.QueryExpressions.Add(new ContentQuery <T>());

            var keywordGroupQuery = new GroupQuery(LuceneOperator.OR);

            keywordGroupQuery.QueryExpressions.Add(AddQueryExpression(tags, Field.DisplayText));
            groupQuery.QueryExpressions.Add(keywordGroupQuery);

            var searchHandler = ServiceLocator.Current.GetInstance <LuceneContentSearchHandler>();

            // Get search results
            var results = searchHandler.GetSearchResults <T>(groupQuery, root, pageNumber, pageSize, sortFields, true);

            totalItems = results.TotalHits;

            // Convert search results to pages
            var indexResponseItems = results.IndexResponseItems;

            return(indexResponseItems.Select(v => searchHandler.GetContent <T>(v)).Where(v => v != null).ToList());
        }
예제 #8
0
        public virtual SearchResults GetSearchResults <T>(string searchQuery, ContentReference root, int page, int pageSize, Collection <SortField> sortFields, bool filterOnAccess) where T : IContent
        {
            if (!this.ServiceActive)
            {
                return(null);
            }
            var groupQuery = new GroupQuery(LuceneOperator.AND);

            groupQuery.QueryExpressions.Add(new ContentQuery <T>());
            groupQuery.QueryExpressions.Add(new FieldQuery(ContentLanguage.PreferredCulture.Name, Field.Culture));
            groupQuery.QueryExpressions.Add(new FieldQuery(searchQuery));
            if (!ContentReference.IsNullOrEmpty(root))
            {
                var virtualPathQuery = new VirtualPathQuery();
                virtualPathQuery.AddContentNodes(root, this.contentRepository);
                groupQuery.QueryExpressions.Add(virtualPathQuery);
            }
            if (filterOnAccess)
            {
                var accessControlListQuery = new AccessControlListQuery();
                accessControlListQuery.AddAclForUser(PrincipalInfo.Current, HttpContext.Current);
                groupQuery.QueryExpressions.Add(accessControlListQuery);
            }

            #region Customized
            Collection <string> sortFieldCollection = null;
            if (sortFields != null && sortFields.Count > 0)
            {
                sortFieldCollection = new Collection <string>();
                foreach (var sortField in sortFields)
                {
                    sortFieldCollection.Add(string.Format("{0},{1},{2}", sortField.Field, sortField.Type, sortField.Reverse));
                }
            }
            #endregion
            return(this.searchHandler.GetSearchResults(groupQuery, this.NamedIndexingService, this.namedIndexes, page, pageSize, sortFieldCollection));
        }
예제 #9
0
        private IQueryExpression CreateQuery(string searchText, IEnumerable <ContentReference> searchRoots, HttpContextBase context, string languageBranch)
        {
            var query = new GroupQuery(LuceneOperator.AND);

            query.QueryExpressions.Add(new FieldQuery(searchText));

            var pageTypeQuery = new GroupQuery(LuceneOperator.AND);

            pageTypeQuery.QueryExpressions.Add(new ContentQuery <PageData>());
            pageTypeQuery.QueryExpressions.Add(new FieldQuery(languageBranch, Field.Culture));

            var contentTypeQuery = new GroupQuery(LuceneOperator.OR);

            contentTypeQuery.QueryExpressions.Add(new ContentQuery <MediaData>());
            contentTypeQuery.QueryExpressions.Add(pageTypeQuery);

            query.QueryExpressions.Add(contentTypeQuery);

            var typeQueries = new GroupQuery(LuceneOperator.OR);

            query.QueryExpressions.Add(typeQueries);

            foreach (var root in searchRoots)
            {
                var contentRootQuery = new VirtualPathQuery();
                contentRootQuery.AddContentNodes(root);
                typeQueries.QueryExpressions.Add(contentRootQuery);
            }

            var accessRightsQuery = new AccessControlListQuery();

            accessRightsQuery.AddAclForUser(PrincipalInfo.Current, context);
            query.QueryExpressions.Add(accessRightsQuery);

            return(query);
        }
예제 #10
0
        public static int CountPastEvents <T>(IList <string> tags, ContentReference root, int pageNumber, int pageSize) where T : IContent
        {
            var groupQuery = new GroupQuery(LuceneOperator.AND);

            groupQuery.QueryExpressions.Add(new ContentQuery <T>());
            groupQuery.QueryExpressions.Add(new OlderEventQuery());

            if (tags != null && tags.Count > 0)
            {
                var tagGroupQuery = new GroupQuery(LuceneOperator.AND);
                tagGroupQuery.QueryExpressions.Add(new EventTagQuery(tags, LuceneOperator.OR));
                groupQuery.QueryExpressions.Add(tagGroupQuery);
            }

            var searchHandler = ServiceLocator.Current.GetInstance <LuceneContentSearchHandler>();

            // Get search results
            var sortFields = new Collection <SortField>();

            sortFields.Add(new SortField(EventDateField.FieldName, SortField.LONG, true));
            var results = searchHandler.GetSearchResults <T>(groupQuery, root, 1, pageSize, sortFields, true);

            return(results.TotalHits);
        }
        /// <summary>
        /// 组合查询方法
        /// </summary>
        /// <param name="dic">条件</param>
        /// <returns>查询内容</returns>
        public DataTable SelectGroupQuer(GroupQuery gropuQuery)
        {
            DataTable dt  = new DataTable();
            string    sql = "PROC_GroupCheck";//存储过程

            SqlParameter[] paras = new SqlParameter[]
            {
                new SqlParameter("@comboFields1", gropuQuery.Field1),
                new SqlParameter("@comboFields2", gropuQuery.Field2),
                new SqlParameter("@comboFields3", gropuQuery.Field3),
                new SqlParameter("@comboOperators1", gropuQuery.Operator1),
                new SqlParameter("@comboOperators2", gropuQuery.Operator2),
                new SqlParameter("@comboOperators3", gropuQuery.Operator3),
                new SqlParameter("@textBox1", gropuQuery.Content1),
                new SqlParameter("@textBox2", gropuQuery.Content2),
                new SqlParameter("@textBox3", gropuQuery.Content3),
                new SqlParameter("@comboCheck1", gropuQuery.Relation1),
                new SqlParameter("@comboCheck2", gropuQuery.Relation2),
                new SqlParameter("@DbName", gropuQuery.DbName)
            };
            dt = sqlHelper.ExecuteQuery(sql, paras, CommandType.StoredProcedure);

            return(dt);
        }
예제 #12
0
        public virtual void testQueryById()
        {
            GroupQuery query = identityService.createGroupQuery().groupId("muppets");

            verifyQueryResults(query, 1);
        }
예제 #13
0
 private GroupQuery(GroupQuery other) : base(other) { }
예제 #14
0
        private Search OrgViewSearch(Search search)
        {
            ObjectTypes types;

            if (search == null || search.Query == null || search.Query.QueryScope == null)
            {
                types = IncludeFolders ? ObjectTypes.AllIncFolders : ObjectTypes.AllExcFolders;
            }
            else
            {
                types = IncludeFolders
                            ? search.Query.QueryScope.ObjectTypes
                            : (search.Query.QueryScope.ObjectTypes & ~ObjectTypes.Folder);
            }

            QueryScope scope = new QueryScope(types);
            
            QueryFilter filter;

            if (search == null || search.Query == null || search.Query.QueryFilter == null)
                filter = Query;
            else if (Query == null)
                filter = search.Query.QueryFilter;
            else
                filter = new GroupQuery(new[] { search.Query.QueryFilter, Query }, GroupQuery.GroupQueryType.And);

            return new Search(new Query(scope, filter), Grouping, false, "", null, null, new Sort[] { });
        }
예제 #15
0
        public object Get(GroupQuery request)
        {
            var result = repo;

            return(result);
        }
예제 #16
0
        public Group GetGroup(Guid groupId)
        {
            var query = new GroupQuery(dbContext.Groups);

            return(new GroupMapper().Map(query.Execute(groupId)));
        }
예제 #17
0
        public Group GetGroup(Guid id)
        {
            GroupQuery query = new GroupQuery(dbContext.Groups);

            return(query.Execute(id));
        }
 public async ValueTask <BungieResponse <GroupSearchResponse> > GroupSearch(
     GroupQuery query,
     CancellationToken token = default)
 {
     return(await _apiAccess.GroupSearch(query, token));
 }
예제 #19
0
        private static Search OrgViewSearch(Search search, bool includeFolders, // normally exclude folders even if in search: CA-27260
            QueryFilter addFilter, Grouping grouping)
        {
            QueryFilter filter;
            ObjectTypes types;

            if (search == null || search.Query == null || search.Query.QueryScope == null)
            {
                types = includeFolders ? ObjectTypes.AllIncFolders : ObjectTypes.AllExcFolders;
            }
            else
            {
                types = includeFolders ? search.Query.QueryScope.ObjectTypes : (search.Query.QueryScope.ObjectTypes & ~ObjectTypes.Folder);
            }

            QueryScope scope = new QueryScope(types);

            if (search == null || search.Query == null || search.Query.QueryFilter == null)
                filter = addFilter;
            else if (addFilter == null)
                filter = search.Query.QueryFilter;
            else
                filter = new GroupQuery(new QueryFilter[] { search.Query.QueryFilter, addFilter }, GroupQuery.GroupQueryType.And);

            return new Search(new Query(scope, filter), grouping, false, "", null, null, new Sort[] { });
        }
예제 #20
0
    private Hashtable map;//通过TreeNode寻找相应的GroupNode

    protected void Page_Load(object sender, EventArgs e)
    {
        user = (User)Session["user"];
        const string TARGET = "mainframe";

        /*
         * TreeView tv0 = new TreeView();
         * TreeNode tn0 = new TreeNode("体育");
         * tn0.NavigateUrl = "Showarticles.aspx";
         * tn0.Target = TARGET;
         *
         * TreeNode tn01 = new TreeNode("足球");
         * TreeNode tn02 = new TreeNode(@"<span class='iLabel'>篮球</span>");
         * tn01.Target = TARGET;
         * tn02.Target = TARGET;
         *
         * tn0.ChildNodes.Add(tn01);
         * tn0.ChildNodes.Add(tn02);
         * tv0.Nodes.Add(tn0);
         *
         * TableRow tr = new TableRow();
         * TableCell tc = new TableCell();
         * tc.Controls.Add(tv0);
         * tr.Controls.Add(tc);
         * HolderTable.Rows.Add(tr);
         *
         * TreeView tv1 = new TreeView();
         * TreeNode tn1 = new TreeNode("军事");
         * tn1.Target = TARGET;
         * TreeNode tn11 = new TreeNode("亚洲");
         * TreeNode tn12 = new TreeNode("中东");
         * tn11.Target = TARGET;
         * tn12.Target = TARGET;
         * tn1.ChildNodes.Add(tn11);
         * tn1.ChildNodes.Add(tn12);
         * tv1.Nodes.Add(tn1);
         *
         * TableRow tr1 = new TableRow();
         * TableCell tc1 = new TableCell();
         * tc1.Controls.Add(tv1);
         * tr1.Controls.Add(tc1);
         * HolderTable.Rows.Add(tr1);
         *
         */

        //针对为注册用户
        if (user == null)
        {
            //首先建立左边的TreeView
            //取得所有主分类
            List <GroupNode> primaryGroups   = GroupQuery.getAllPrimaryGroups();
            List <GroupNode> secondaryGroups = GroupQuery.getAllSecondaryGroups();
            List <GroupNode> list            = GroupQuery.sortGroupNodeList(new List <GroupNode>[] { primaryGroups, secondaryGroups });



            TreeNode tmpPrimaryNode = null;
            foreach (GroupNode gn in list)
            {
                if (gn.IsPrimaryGroup)
                {
                    TreeView tv = new TreeView();
                    TreeNode tn = new TreeNode(gn.NodeName);//根节点
                    tn.Target      = TARGET;
                    tn.NavigateUrl = "Showarticles.aspx?gn=" + gn.Id + "&primary=1&other=0&pgid=-1";
                    tmpPrimaryNode = tn;
                    tv.Nodes.Add(tn);

                    TableCell tc = new TableCell();
                    tc.Controls.Add(tv);
                    TableRow tr = new TableRow();
                    tr.Controls.Add(tc);

                    HolderTable.Rows.Add(tr);
                }
                else
                {
                    TreeNode tn = new TreeNode(gn.NodeName);//子节点
                    tn.Target = TARGET;
                    if (gn.NodeName == "其他")
                    {
                        tn.NavigateUrl = "Showarticles.aspx?gn=" + gn.Id + "&primary=0&other=1&pgid=" + gn.PrimaryGroupId;
                    }
                    else
                    {
                        tn.NavigateUrl = "Showarticles.aspx?gn=" + gn.Id + "&primary=0&other=0&pgid=" + gn.PrimaryGroupId;
                    }
                    tmpPrimaryNode.ChildNodes.Add(tn);
                }
            }
        }
        else//针对已登录用户
        {
            List <GroupNode> primaryGroups   = GroupQuery.getFocusedPublicGroupsByUserId(user.UserId);
            List <GroupNode> secondaryGroups = GroupQuery.getAllInterestLabelsByUserId(user.UserId);
            List <GroupNode> list            = GroupQuery.sortGroupNodeList(new List <GroupNode>[] { primaryGroups, secondaryGroups });

            if (list == null || list.Count == 0)
            {
                Label tmpLabel = new Label();
                tmpLabel.Text = "您还没有任何关注哦!";
                TableCell tc = new TableCell();
                TableRow  tr = new TableRow();
                tc.Controls.Add(tmpLabel);
                tr.Controls.Add(tc);
                HolderTable.Rows.Add(tr);
                return;
            }

            TreeNode tmpPrimaryNode = null;

            foreach (GroupNode gn in list)
            {
                if (gn.IsPrimaryGroup)
                {
                    TreeView tv = new TreeView();
                    TreeNode tn = new TreeNode(gn.NodeName);//根节点
                    tn.Target      = TARGET;
                    tn.NavigateUrl = "Showarticles.aspx?gn=" + gn.Id + "&primary=1&other=0&pgid=-1";
                    tmpPrimaryNode = tn;
                    tv.Nodes.Add(tn);

                    TableCell tc = new TableCell();
                    tc.Controls.Add(tv);
                    TableRow tr = new TableRow();
                    tr.Controls.Add(tc);

                    HolderTable.Rows.Add(tr);
                }
                else
                {
                    //这里还需要判断是否是兴趣标签
                    TreeNode tn;
                    if (gn.IsInterestLabel)
                    {
                        tn = new TreeNode(@"<span class='iLabel'>" + gn.NodeName + @"</span>");//子节点
                    }
                    else
                    {
                        tn = new TreeNode(gn.NodeName);
                    }

                    tn.Target = TARGET;
                    if (gn.NodeName == "其他")
                    {
                        tn.NavigateUrl = "Showarticles.aspx?gn=" + gn.Id + "&primary=0&other=1&pgid=" + gn.PrimaryGroupId;
                    }
                    else
                    {
                        tn.NavigateUrl = "Showarticles.aspx?gn=" + gn.Id + "&primary=0&other=0&pgid=" + gn.PrimaryGroupId;
                    }
                    tmpPrimaryNode.ChildNodes.Add(tn);
                }
            }

            //增加其他选项
            TreeView othertv = new TreeView();
            TreeNode othertn = new TreeNode("其他");
            othertn.NavigateUrl = "Showarticles.aspx?gn=-1&primary=1&other=1&pgid=-1";
            othertn.Target      = TARGET;
            othertv.Nodes.Add(othertn);
            TableRow  othertr = new TableRow();
            TableCell othertc = new TableCell();
            othertr.Controls.Add(othertc);
            othertc.Controls.Add(othertv);
            HolderTable.Rows.Add(othertr);
        }

        /*primaryGroups = new List<GroupNode>();
         *  List<GroupNode> temp = GroupQuery.getFocusedPublicGroupsByUserId(user.UserId);
         *  foreach (GroupNode node in temp)
         *  {
         *      if (node.IsPrimaryGroup)
         *          primaryGroups.Add(node);
         *  }*/
    }
예제 #21
0
        private Query ProcessNode(AstNode root, Flags flags, out Props props)
        {
            if (++_parseDepth > MaxParseDepth)
            {
                throw XPathException.Create(SR.Xp_QueryTooComplex);
            }

            Debug.Assert(root != null, "root != null");
            Query result = null;
            props = Props.None;
            switch (root.Type)
            {
                case AstNode.AstType.Axis:
                    result = ProcessAxis((Axis)root, flags, out props);
                    break;
                case AstNode.AstType.Operator:
                    result = ProcessOperator((Operator)root, out props);
                    break;
                case AstNode.AstType.Filter:
                    result = ProcessFilter((Filter)root, flags, out props);
                    break;
                case AstNode.AstType.ConstantOperand:
                    result = new OperandQuery(((Operand)root).OperandValue);
                    break;
                case AstNode.AstType.Variable:
                    result = ProcessVariable((Variable)root);
                    break;
                case AstNode.AstType.Function:
                    result = ProcessFunction((Function)root, out props);
                    break;
                case AstNode.AstType.Group:
                    result = new GroupQuery(ProcessNode(((Group)root).GroupNode, Flags.None, out props));
                    break;
                case AstNode.AstType.Root:
                    result = new AbsoluteQuery();
                    break;
                default:
                    Debug.Fail("Unknown QueryType encountered!!");
                    break;
            }
            --_parseDepth;
            return result;
        }
        public IEnumerable <AccountGroup> GroupQuery(GroupQuery query)
        {
            IQueryable <Account> accountsQuery = AccountContext.Accounts;

            accountsQuery = AddQueryItems(accountsQuery, query);

            IQueryable <AccountGroup> groups;

            switch (query.Keys)
            {
            case "sex":
                groups = accountsQuery.GroupBy(s => s.Sex).Select(s => new AccountGroup
                {
                    Count = s.Count(),
                    Sex   = s.Key.ToString().ToLower()
                });
                break;

            case "status":
                groups = accountsQuery.Where(s => s.Status != null).GroupBy(s => s.Status).Select(s => new AccountGroup
                {
                    Count  = s.Count(),
                    Status = s.Key.ToString().ToLower()
                });
                break;

            case "country":
                groups = accountsQuery.Where(s => s.Country != null).GroupBy(s => s.Country).Select(s => new AccountGroup
                {
                    Count   = s.Count(),
                    Country = s.Key.ToString().ToLower()
                });
                break;

            case "city":
                groups = accountsQuery.Where(s => s.City != null).GroupBy(s => s.City).Select(s => new AccountGroup
                {
                    Count = s.Count(),
                    City  = s.Key.ToString().ToLower()
                });
                break;

            case "interests":
                groups = accountsQuery.Where(s => s.Interests != null).SelectMany(s => s.Interests).GroupBy(s => s).Select(s => new AccountGroup
                {
                    Count     = s.Count(),
                    Interests = s.Key.ToString().ToLower()
                });
                break;

            default:
                throw new Exception($"Unsupported keys: {query.Keys}");
            }
            if (query.Order == 1)
            {
                groups = groups.OrderBy(s => s.Count);
            }
            else
            {
                groups = groups.OrderByDescending(s => s.Count);
            }
            return(groups.Take(query.Limit));
        }
 public Group GetGroup(Guid groupId)
 {
     var query = new GroupQuery(dbContext.Groups);
     return new GroupMapper().Map(query.Execute(groupId));
 }
예제 #24
0
 private Query ProcessNode(AstNode root, Flags flags, out Props props) {
     Debug.Assert(root != null, "root != null");
     Query result = null;
     props = Props.None;
     switch (root.Type) {
     case AstNode.AstType.Axis:
         result = ProcessAxis((Axis)root, flags, out props);
         break;
     case AstNode.AstType.Operator:
         result = ProcessOperator((Operator)root, out props);
         break;
     case AstNode.AstType.Filter:
         result = ProcessFilter((Filter)root, flags, out props);
         break;
     case AstNode.AstType.ConstantOperand:
         result = new OperandQuery(((Operand)root).OperandValue);
         break;
     case AstNode.AstType.Variable:
         result = ProcessVariable((Variable)root);
         break;
     case AstNode.AstType.Function:
         result = ProcessFunction((Function)root, out props);
         break;
     case AstNode.AstType.Group:
         result = new GroupQuery(ProcessNode(((Group)root).GroupNode, Flags.None, out props));
         break;
     case AstNode.AstType.Root:
         result = new AbsoluteQuery();
         break;
     default:
         Debug.Assert(false, "Unknown QueryType encountered!!");
         break;
     }
     return result;
 }
예제 #25
0
        public static void WriteGroupResponse(HList <KeyValuePair <GroupKey, int> > result, GroupQuery query, ref ParseContext stream)
        {
            if (result.Count == 0)
            {
                stream.Write(EmptyGroups);
                return;
            }

            stream.Write(GroupsPrefix);
            var shouldWriteSeparator = false;

            foreach (KeyValuePair <GroupKey, int> kvp in result)
            {
                if (shouldWriteSeparator)
                {
                    stream.WriteByte(Separator);
                }

                stream.WriteByte(StartObject);

                SerializeGroupKey(ref stream, query._first, kvp.Key);
                SerializeGroupKey(ref stream, query._second, kvp.Key);

                stream.Write(countProp);
                WriteInt(ref stream, kvp.Value);

                stream.WriteByte(EndObject);
                shouldWriteSeparator = true;
            }

            stream.Write(Suffix);
        }
예제 #26
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Before public void setUpRuntimeData()
        public virtual void setUpRuntimeData()
        {
            mockQuery = setUpMockGroupQuery(MockProvider.createMockGroups());
        }
 public Group GetGroup(Guid id)
 {
     GroupQuery query = new GroupQuery(dbContext.Groups);
     return query.Execute(id);
 }
예제 #28
0
        /// <summary>
        /// 组合查询方法
        /// </summary>
        /// <param name="comf1">字段1</param>
        /// <param name="comf2">字段2</param>
        /// <param name="comf3">字段3</param>
        /// <param name="comoper1">操作符1</param>
        /// <param name="comoper2">操作符2</param>
        /// <param name="comoper3">操作符3</param>
        /// <param name="contetn1">内容1</param>
        /// <param name="content2">内容2</param>
        /// <param name="contetn3">内容3</param>
        /// <param name="rel1">组合关系1</param>
        /// <param name="rel2">组合关系2</param>
        /// <param name="form">组合查询窗体</param>
        /// <returns></returns>
        public DataTable SelectGroupQuer(string comf1, string comf2, string comf3, string comoper1, string comoper2, string comoper3, string contetn1, string content2, string contetn3, string rel1, string rel2, string DbName, Form form)
        {
            DataTable SelectGroupQuerTable = new DataTable();
            //调用接口与工厂
            GroupQuerIDAL groupQuerIDAL = (GroupQuerIDAL)fact.CreateUser("GroupQuerDAL");

            #region 第一组条件赋值
            GroupQuery groupQuery = new GroupQuery();
            groupQuery.Field1    = comf1;
            groupQuery.Operator1 = comoper1;
            groupQuery.Content1  = contetn1;
            groupQuery.DbName    = DbName;
            #endregion
            #region 第二组条件赋值
            groupQuery.Relation1 = rel1;
            groupQuery.Field2    = comf2;
            groupQuery.Operator2 = comoper2;
            groupQuery.Content2  = content2;
            #endregion
            #region 第三组条件赋值
            groupQuery.Field3    = comf3;
            groupQuery.Operator3 = comoper3;
            groupQuery.Content3  = contetn3;
            groupQuery.Relation2 = rel2;
            #endregion
            #region 组合查询逻辑
            //判断第一个组合关系是否被选中
            if (rel1.Trim() != "")//被选中
            {
                #region 判断第二个组合关系是否被玄宗
                if (rel2.Trim() != "")//被选中
                {
                    #region 判断所有控件内容是否为空
                    if (comf1.Trim() != "" && comoper1.Trim() != "" && contetn1.Trim() != "")
                    {
                        if (comf2.Trim() != "" && comoper2.Trim() != "" && content2.Trim() != "")
                        {
                            if (comf3.Trim() != "" && comoper3.Trim() != "" && contetn3.Trim() != "")
                            {
                                //查询具体内容
                                SelectGroupQuerTable = groupQuerIDAL.SelectGroupQuer(groupQuery);
                            } //第三组
                        }     //第二组
                    }         //第一组
                    #endregion
                }
                else
                {
                    #region 判断前两组控件的内容是否为空
                    if (comf1.Trim() != "" && comoper1.Trim() != "" && contetn1.Trim() != "")
                    {
                        if (comf2.Trim() != "" && comoper2.Trim() != "" && content2.Trim() != "")
                        {
                            //查询具体内容
                            SelectGroupQuerTable = groupQuerIDAL.SelectGroupQuer(groupQuery);
                        } //第二组
                    }     //第一组
                    #endregion
                }
                #endregion
            }
            else//没被选中
            {
                #region 判断第一组控件内容是否为空
                if (comf1.Trim() != "" && comoper1.Trim() != "" && contetn1.Trim() != "")
                {
                    //查询具体内容
                    SelectGroupQuerTable = groupQuerIDAL.SelectGroupQuer(groupQuery);
                }
                #endregion
            }
            #endregion
            return(SelectGroupQuerTable);
        }
 private GroupQuery(GroupQuery other) : base((BaseAxisQuery) other)
 {
 }
예제 #30
0
    protected void Page_Load(object sender, EventArgs e)
    {
        /*
         * tv0 = new TreeView();
         * TreeNode tn0 = new TreeNode("体育");
         * tn0.ShowCheckBox = true;
         * TreeNode tn01 = new TreeNode("足球");
         * TreeNode tn02 = new TreeNode(@"<span class='iLabel'>篮球</span>");
         *
         * tn0.ChildNodes.Add(tn01);
         * tn0.ChildNodes.Add(tn02);
         * tv0.Nodes.Add(tn0);
         *
         * TableRow tr = new TableRow();
         * TableCell tc = new TableCell();
         * tc.Controls.Add(tv0);
         * tr.Controls.Add(tc);
         * HolderTable.Controls.Add(tr);
         *
         * TreeView tv1 = new TreeView();
         * TreeNode tn1 = new TreeNode("军事");
         *
         * TreeNode tn11 = new TreeNode("亚洲");
         * TreeNode tn12 = new TreeNode("中东");
         * tn1.ChildNodes.Add(tn11);
         * tn1.ChildNodes.Add(tn12);
         * tv1.Nodes.Add(tn1);
         *
         * TableCell tc1 = new TableCell();
         * tc1.Controls.Add(tv1);
         * tr.Controls.Add(tc1);
         */


        user = (User)Session["user"];

        if (user == null)
        {
            Label1.Text           = "对不起,您没有访问该资源的权限";
            Label1.Font.Size      = 18;
            Label1.ForeColor      = Color.Red;
            Label2.Visible        = false;
            DropDownList1.Visible = false;
            Label3.Visible        = false;
            Label4.Visible        = false;
            TextBox1.Visible      = false;
            TextBox2.Visible      = false;
            Button1.Visible       = false;
            Button2.Visible       = false;
            return;
        }

        map    = new Hashtable();
        p2o    = new Hashtable();
        tvs    = new List <TreeView>();
        alltns = new List <TreeNode>();


        Label1.Visible = false;

        List <GroupNode> lists = GroupQuery.sortGroupNodeList(new List <GroupNode>[] { GroupQuery.getAllPrimaryGroups(), GroupQuery.getAllSecondaryGroups(), GroupQuery.getAllInterestLabelsByUserId(user.UserId) });
        List <GroupNode> list2 = GroupQuery.sortGroupNodeList(new List <GroupNode>[] { GroupQuery.getFocusedPublicGroupsByUserId(user.UserId), GroupQuery.getAllInterestLabelsByUserId(user.UserId) });

        List <GroupNode> list3 = GroupQuery.getAllPrimaryGroups();

        //DropDownList1.Items.Clear();

        /*
         * foreach (TreeView tv in tvs)
         * {
         *  tv.Nodes.Clear();
         * }
         * */
        if (!IsPostBack)
        {
            foreach (GroupNode gn in list3)
            {
                if (gn.NodeName != "其他")
                {
                    DropDownList1.Items.Add(new ListItem(gn.NodeName, gn.Id.ToString()));
                }
            }
        }

        TreeNode tmpPrimary = null;

        foreach (GroupNode gn in lists)
        {
            TableRow row = new TableRow();
            if (gn.NodeName == "其他" && gn.IsPrimaryGroup)
            {
                continue;
            }

            TreeNode tn = new TreeNode(gn.NodeName);

            map.Add(tn, gn);
            tn.ShowCheckBox = true;
            if (checkDup(list2, gn))
            {
                tn.Checked = true;
            }

            tn.NavigateUrl = "#";



            if (gn.NodeName == "其他")
            {
                p2o.Add(tmpPrimary, gn);
                continue;
            }
            alltns.Add(tn);
            if (gn.IsPrimaryGroup)
            {
                tmpPrimary = tn;
                TreeView tv = new TreeView();
                tv.Nodes.Add(tn);
                tvs.Add(tv);
                TableCell tc = new TableCell();
                tc.Controls.Add(tv);
                row.Controls.Add(tc);
                HolderTable.Rows.Add(row);
                tmpPrimary.ChildNodes.Clear();
            }
            else
            {
                //if (!IsPostBack)
                //{
                tmpPrimary.ChildNodes.Add(tn);
                if (gn.IsInterestLabel)
                {
                    tn.Text = @"<span class='iLabel'>" + gn.NodeName + @"</span>";
                }
                //}
            }
        }
    }