PageRenderTime 27ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/branches/SmartMe/Backup/SmartMe.Core/Data/QueryResult.cs

http://lunar-thu.googlecode.com/
C# | 203 lines | 162 code | 37 blank | 4 comment | 6 complexity | 8f8f70d0562ec1771de4f444fbb27867 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Collections;
  6. using System.Collections.ObjectModel;
  7. using SmartMe.Core.Pipeline;
  8. using System.Xml.Serialization;
  9. namespace SmartMe.Core.Data
  10. {
  11. /// <summary>
  12. /// 搜索返回的结果
  13. /// </summary>
  14. public class QueryResult : Message
  15. {
  16. #region fields
  17. private InputQuery _query;
  18. private List<SearchEngineResult> _searchEngineResultItems = new List<SearchEngineResult>();
  19. private List<SuggestionResult> _suggestionResultItems = new List<SuggestionResult>();
  20. private List<DictResult> _dictResultItems = new List<DictResult>();
  21. private List<IQueryResultItem> _items = new List<IQueryResultItem>();
  22. #endregion
  23. #region constructor
  24. public QueryResult()
  25. {
  26. // do nothing
  27. }
  28. public QueryResult(InputQuery query)
  29. {
  30. _query = query;
  31. }
  32. #endregion
  33. #region properties
  34. public InputQuery Query
  35. {
  36. get
  37. {
  38. return _query;
  39. }
  40. set
  41. {
  42. _query = value;
  43. }
  44. }
  45. [XmlIgnore]
  46. public List<IQueryResultItem> Items
  47. {
  48. get {
  49. _items.Clear();
  50. foreach ( IQueryResultItem item in _searchEngineResultItems )
  51. {
  52. _items.Add( item );
  53. }
  54. foreach ( IQueryResultItem item in _suggestionResultItems )
  55. {
  56. _items.Add( item );
  57. }
  58. foreach ( IQueryResultItem item in _dictResultItems )
  59. {
  60. _items.Add( item );
  61. }
  62. return _items;
  63. }
  64. }
  65. public List<SearchEngineResult> SearchEngineResultItems
  66. {
  67. get
  68. {
  69. return _searchEngineResultItems;
  70. }
  71. }
  72. [XmlIgnore]
  73. public List<SuggestionResult> SuggestionResultItems
  74. {
  75. get
  76. {
  77. return _suggestionResultItems;
  78. }
  79. }
  80. public List<DictResult> DictResultItems
  81. {
  82. get
  83. {
  84. return _dictResultItems;
  85. }
  86. }
  87. public DateTime LastUpdateTime
  88. {
  89. get;
  90. set;
  91. }
  92. #region IMessage Members
  93. public override MessageType MessageType
  94. {
  95. get
  96. {
  97. return MessageType.QueryResult;
  98. }
  99. }
  100. #endregion
  101. #endregion
  102. #region methods
  103. public bool IsEmpty()
  104. {
  105. foreach (SearchEngineResult r in _searchEngineResultItems)
  106. {
  107. if(r.Results.Count!=0)
  108. {
  109. return false;
  110. }
  111. }
  112. foreach (DictResult r in _dictResultItems)
  113. {
  114. if (r.Word!=string.Empty)
  115. {
  116. return false;
  117. }
  118. }
  119. foreach (SuggestionResult r in _suggestionResultItems)
  120. {
  121. if (r.Results.Count!=0)
  122. {
  123. return false;
  124. }
  125. }
  126. return true;
  127. }
  128. public override string ToString()
  129. {
  130. StringBuilder stringBuilder = new StringBuilder(_query.ToString());
  131. stringBuilder.Append( "\n" + _searchEngineResultItems.Count );
  132. foreach ( IQueryResultItem item in _searchEngineResultItems )
  133. {
  134. stringBuilder.Append("\n").Append(item);
  135. }
  136. stringBuilder.Append( "\n" + _suggestionResultItems.Count );
  137. foreach ( IQueryResultItem item in _suggestionResultItems )
  138. {
  139. stringBuilder.Append( "\n" ).Append( item );
  140. }
  141. stringBuilder.Append( "\n" + _dictResultItems.Count );
  142. foreach ( IQueryResultItem item in _dictResultItems )
  143. {
  144. stringBuilder.Append( "\n" ).Append( item );
  145. }
  146. return stringBuilder.ToString();
  147. }
  148. public override bool Equals(object obj)
  149. {
  150. QueryResult result = obj as QueryResult;
  151. if (result != null)
  152. {
  153. return (result.ToString() == this.ToString());
  154. }
  155. else
  156. {
  157. return false;
  158. }
  159. }
  160. public override int GetHashCode()
  161. {
  162. return ToString().GetHashCode();
  163. }
  164. #endregion
  165. }
  166. }