Author: fmantek Date: Mon Nov 12 11:17:59 2007 New Revision: 317 Modified: trunk/clients/cs/src/core/documentquery.cs
Log: Fixed title-exact query construction Modified: trunk/clients/cs/src/core/documentquery.cs ============================================================================== --- trunk/clients/cs/src/core/documentquery.cs (original) +++ trunk/clients/cs/src/core/documentquery.cs Mon Nov 12 11:17:59 2007 @@ -1,163 +1,161 @@ -/* Copyright (c) 2006 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -using System; -using System.Diagnostics; -using System.Globalization; -using System.Text; -using System.Xml; - -namespace Google.GData.Client -{ - /// <summary> - /// A subclass of FeedQuery, to create a document based query URI. - /// Provides public properties that describe the different - /// aspects of the URI, as well as a composite URI. - /// </summary> - public class DocumentQuery : FeedQuery - { - private string title; - private bool exact; - - /// <summary> - /// Constructor - Sets the base URI - /// </summary> - /// <param name="baseUri"></param> - public DocumentQuery(string baseUri) : base(baseUri) - { - Title = null; - Exact = false; - } - - /// <summary> - /// The exact or unexact title to query for. - /// </summary> - public string Title - { - get - { - return title; - } - - set - { - title = value; - } - } - - /// <summary> - /// If true, then only the exact title string will be looked for. - /// </summary> - public bool Exact - { - get - { - return exact; - } - - set - { - exact = value; - } - } - -#if WindowsCE || PocketPC -#else - - /// <summary> - /// Parses an incoming URI string and sets the instance variables - /// of this object. - /// </summary> - /// <param name="targetUri">Takes an incoming Uri string and parses all the properties of it</param> - /// <returns>Throws a query exception when it finds something wrong with the input, otherwise returns a baseuri.</returns> - protected override Uri ParseUri(Uri targetUri) - { - base.ParseUri(targetUri); - if (targetUri != null) - { - char[] delimiters = { '?', '&' }; - - TokenCollection tokens = new TokenCollection(targetUri.Query, delimiters); - foreach (String token in tokens) - { - if (token.Length > 0) - { - char[] otherDelimiters = { '=' }; - String[] parameters = token.Split(otherDelimiters, 2); - switch (parameters[0]) - { - case "title": - Title = parameters[1]; - Exact = false; - break; - case "title-exact": - Title = parameters[1]; - Exact = true; - break; - } - } - } - } - return this.Uri; - } -#endif - /// <summary> - /// Resets object state to default, as if newly created. - /// </summary> - protected override void Reset() - { - base.Reset(); - Title = null; - Exact = false; - } - - /// <summary> - /// Creates the partial URI query string based on all set properties. - /// </summary> - /// <returns> string => the query part of the URI </returns> - protected override string CalculateQuery() - { - string path = base.CalculateQuery(); - StringBuilder newPath = new StringBuilder(path, 2048); - - char paramInsertion; - - if (path.IndexOf('?') == -1) - { - paramInsertion = '?'; - } - else - { - paramInsertion = '&'; - } - - if (Title != null) - { - newPath.Append(paramInsertion); - - if (Exact) +/* Copyright (c) 2006 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +using System; +using System.Diagnostics; +using System.Globalization; +using System.Text; +using System.Xml; + +namespace Google.GData.Client +{ + /// <summary> + /// A subclass of FeedQuery, to create a document based query URI. + /// Provides public properties that describe the different + /// aspects of the URI, as well as a composite URI. + /// </summary> + public class DocumentQuery : FeedQuery + { + private string title; + private bool exact; + + /// <summary> + /// Constructor - Sets the base URI + /// </summary> + /// <param name="baseUri"></param> + public DocumentQuery(string baseUri) : base(baseUri) + { + Title = null; + Exact = false; + } + + /// <summary> + /// The exact or unexact title to query for. + /// </summary> + public string Title + { + get + { + return title; + } + + set + { + title = value; + } + } + + /// <summary> + /// If true, then only the exact title string will be looked for. + /// </summary> + public bool Exact + { + get + { + return exact; + } + + set + { + exact = value; + } + } + +#if WindowsCE || PocketPC +#else + + /// <summary> + /// Parses an incoming URI string and sets the instance variables + /// of this object. + /// </summary> + /// <param name="targetUri">Takes an incoming Uri string and parses all the properties of it</param> + /// <returns>Throws a query exception when it finds something wrong with the input, otherwise returns a baseuri.</returns> + protected override Uri ParseUri(Uri targetUri) + { + base.ParseUri(targetUri); + if (targetUri != null) + { + char[] delimiters = { '?', '&' }; + + TokenCollection tokens = new TokenCollection(targetUri.Query, delimiters); + foreach (String token in tokens) { - newPath.AppendFormat(CultureInfo.InvariantCulture, "title-exact={0}", Utilities.UriEncodeReserved(Title)); - } - else + if (token.Length > 0) + { + char[] otherDelimiters = { '=' }; + String[] parameters = token.Split(otherDelimiters, 2); + switch (parameters[0]) + { + case "title": + Title = parameters[1]; + Exact = false; + break; + case "title-exact": + Title = parameters[1]; + Exact = true; + break; + } + } + } + } + return this.Uri; + } +#endif + /// <summary> + /// Resets object state to default, as if newly created. + /// </summary> + protected override void Reset() + { + base.Reset(); + Title = null; + Exact = false; + } + + /// <summary> + /// Creates the partial URI query string based on all set properties. + /// </summary> + /// <returns> string => the query part of the URI </returns> + protected override string CalculateQuery() + { + string path = base.CalculateQuery(); + StringBuilder newPath = new StringBuilder(path, 2048); + + char paramInsertion; + + if (path.IndexOf('?') == -1) + { + paramInsertion = '?'; + } + else + { + paramInsertion = '&'; + } + + if (Title != null) + { + newPath.Append(paramInsertion); + newPath.AppendFormat(CultureInfo.InvariantCulture, "title={0}", Utilities.UriEncodeReserved(Title)); + + if (Exact) { - newPath.AppendFormat(CultureInfo.InvariantCulture, "title={0}", Utilities.UriEncodeReserved(Title)); - } - } - - return newPath.ToString(); - } - } -} + newPath.Append(paramInsertion); + newPath.AppendFormat(CultureInfo.InvariantCulture, "title-exact=true"); + } + } + + return newPath.ToString(); + } + } +} --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Data API" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/google-help-dataapi?hl=en -~----------~----~----~----~------~----~------~--~---
