Esempio n. 1
0
        /// <param name="includeFolders">
        /// Normally exclude folders even if in search: CA-27260
        /// </param>
        private static Search OrgViewSearch(Search search, bool includeFolders, 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[] { }));
        }
Esempio n. 2
0
        public Query(QueryScope scope, QueryFilter filter)
        {
            if (scope == null)
            {
                this.scope = new QueryScope(ObjectTypes.AllExcFolders);
            }
            else
            {
                this.scope = scope;
            }

            this.filter = filter;  // null is OK
        }
Esempio n. 3
0
        public static Search SearchForFolder(string path)
        {
            QueryScope  scope       = new QueryScope(ObjectTypes.AllIncFolders);
            QueryFilter innerFilter = new StringPropertyQuery(PropertyNames.uuid, path,
                                                              StringPropertyQuery.PropertyQueryType.exactmatch, true);
            QueryFilter filter   = new RecursiveXMOPropertyQuery <Folder>(PropertyNames.folder, innerFilter);
            Query       q        = new Query(scope, filter);
            Grouping    grouping = new FolderGrouping((Grouping)null);

            string[] pathParts = Folders.PointToPath(path);
            string   name      = ((pathParts.Length == 0 || (pathParts.Length == 1 && pathParts[pathParts.Length - 1] == String.Empty)) ?
                                  Messages.FOLDERS : pathParts[pathParts.Length - 1]);

            return(new Search(q, grouping, false, name, null, false));
        }
Esempio n. 4
0
 public Query(XmlNode node)
 {
     foreach (XmlNode child in node.ChildNodes)
     {
         if (child.NodeType != XmlNodeType.Element)
         {
             continue;
         }
         else if (child.Name == "QueryScope")
         {
             this.scope = new QueryScope(child);
         }
         else
         {
             this.filter = (QueryFilter)SearchMarshalling.FromXmlNode(child);
         }
     }
 }
Esempio n. 5
0
        /// <summary>
        /// This gets the default search for the overview panel when an object in the tree is selected.
        /// Pass null as value and you'll get the default search (this could be the default overview or default treeview search,
        /// depending on the value of scope).
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public static Search SearchFor(IXenObject value, QueryScope scope)
        {
            if (value is Host)
            {
                Grouping hostGrouping = new XenModelObjectPropertyGrouping <Host>(PropertyNames.host, null);

                QueryFilter uuidQuery = new StringPropertyQuery(PropertyNames.uuid, Helpers.GetUuid(value), StringPropertyQuery.PropertyQueryType.exactmatch, true);
                QueryFilter hostQuery = new RecursiveXMOListPropertyQuery <Host>(PropertyNames.host, uuidQuery);

                Query query = new Query(scope, hostQuery);
                return(new Search(query, hostGrouping, false, String.Format(Messages.SEARCH_TITLE_HOST, Helpers.GetName(value)), null, false));
            }
            else if (value is Pool)
            {
                Grouping hostGrouping = new XenModelObjectPropertyGrouping <Host>(PropertyNames.host, null);
                Grouping poolGrouping = new XenModelObjectPropertyGrouping <Pool>(PropertyNames.pool, hostGrouping);

                QueryFilter uuidQuery = new StringPropertyQuery(PropertyNames.uuid, Helpers.GetUuid(value), StringPropertyQuery.PropertyQueryType.exactmatch, true);
                QueryFilter poolQuery = new RecursiveXMOPropertyQuery <Pool>(PropertyNames.pool, uuidQuery);

                Query query = new Query(scope, poolQuery);
                return(new Search(query, poolGrouping, false, String.Format(Messages.SEARCH_TITLE_POOL, Helpers.GetName(value)), null, false));
            }
            else if (value is Folder)
            {
                Folder folder = value as Folder;
                return(Search.SearchForFolder(folder.opaque_ref));
            }
            else
            {
                // This is the default search on the treeview

                //Grouping storageLinkPoolGrouping = new XenModelObjectPropertyGrouping<StorageLinkPool>(PropertyNames.storageLinkPool, (Grouping)null);
                //Grouping storageLinkSystemGrouping = new XenModelObjectPropertyGrouping<StorageLinkSystem>(PropertyNames.storageLinkSystem, storageLinkPoolGrouping);
                //Grouping storageLinkServerGrouping = new XenModelObjectPropertyGrouping<StorageLinkServer>(PropertyNames.storageLinkServer, storageLinkSystemGrouping);
                Grouping dockervmGrouping = new XenModelObjectPropertyGrouping <VM>(PropertyNames.dockervm, null);
                Grouping hostGrouping     = new XenModelObjectPropertyGrouping <Host>(PropertyNames.host, dockervmGrouping);
                Grouping poolGrouping     = new XenModelObjectPropertyGrouping <Pool>(PropertyNames.pool, hostGrouping);

                return(new Search(new Query(scope, null),
                                  poolGrouping, false, String.Format(Messages.SEARCH_TITLE_OVERVIEW), null, false));
            }
        }
Esempio n. 6
0
        // Make a new search which is the same as the current search but with an additional filter
        public Search AddFilter(QueryFilter addFilter)
        {
            QueryScope scope = (Query == null ? null : Query.QueryScope);

            QueryFilter filter;

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

            return(new Search(new Query(scope, filter), Grouping, ShowSearch, "", "", Columns, Sorting));
        }
Esempio n. 7
0
        internal static QueryScope GetOverviewScopeExcludingGivenTypes(ObjectTypes excludedTypes)
        {
            QueryScope overviewScope = GetOverviewScope();

            return(new QueryScope(overviewScope.ObjectTypes & ~excludedTypes));
        }