void ParseQuerySet(XmlReader xmlReader) { string querySetName = xmlReader.GetAttribute("Name"); QuerySetDefinition toFind; if (querySetDictionary.TryGetValue(querySetName, out toFind)) { throw new SlkSettingsException(xmlReader, Resources.SlkUtilitiesDuplicateQuerySetName, querySetName); } QueryDefinition unused; if (queryDictionary.TryGetValue(querySetName, out unused)) { throw new SlkSettingsException(xmlReader, Resources.SlkUtilitiesQuerySetSameAsQuery, querySetName); } string defaultQueryName = xmlReader.GetAttribute("DefaultQueryName"); if (!queryDictionary.TryGetValue(defaultQueryName, out unused)) { throw new SlkSettingsException(xmlReader, Resources.SlkUtilitiesUndefinedQuery, defaultQueryName); } QuerySetDefinition querySetDefinition = new QuerySetDefinition(querySetName, xmlReader.GetAttribute("Title"), defaultQueryName); while (xmlReader.Read()) { if (xmlReader.NodeType == XmlNodeType.EndElement) { break; } else if (xmlReader.NodeType != XmlNodeType.Element) { continue; } else if (xmlReader.Name == "IncludeQuery") { string queryName = xmlReader.GetAttribute("QueryName"); QueryDefinition queryDef; try { queryDef = queryDictionary[queryName]; } catch (KeyNotFoundException) { throw new SlkSettingsException(xmlReader, Resources.SlkUtilitiesUndefinedQuery, queryName); } querySetDefinition.AddIncludeQuery(queryDef); } } querySetDefinitions.Add(querySetDefinition); querySetDictionary.Add(querySetName, querySetDefinition); }
/// <summary> /// Locates a <c>QuerySetDefinition</c> in a list of query sets given its name. If requested, /// the list of queries is searched in addition to the list of query sets; in that case, if a /// query name matching the query set name is found, a <c>QuerySetDefinition</c> containing /// only that query is returned. /// </summary> /// /// <param name="querySetName">The name of the query set (or query) or query to look for. /// </param> /// /// <param name="searchQueries">If <c>true</c>, the list of queries is searched (for a query /// named <paramref name="querySetName"/>) in addition to the list of query sets. If /// <c>false</c>, only the list of query sets is searched.</param> /// /// <returns> /// The requested <c>QuerySetDefinition</c>, or <c>null</c> if none was found. /// </returns> /// public QuerySetDefinition FindQuerySetDefinition(string querySetName, bool searchQueries) { // Check parameters if (querySetName == null) { throw new ArgumentNullException("querySetName"); } // search query sets QuerySetDefinition foundQuerySetDef = null; if (querySetDictionary.TryGetValue(querySetName, out foundQuerySetDef) == false) { QueryDefinition foundQueryDef; if (queryDictionary.TryGetValue(querySetName, out foundQueryDef)) { foundQuerySetDef = new QuerySetDefinition(foundQueryDef.Name, foundQueryDef.Title, foundQueryDef.Name); foundQuerySetDef.AddIncludeQuery(foundQueryDef); } } return(foundQuerySetDef); }