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

/mcs/class/System.Data/System.Data.OleDb/OleDbParameterCollection.cs

https://bitbucket.org/danipen/mono
C# | 431 lines | 338 code | 58 blank | 35 comment | 15 complexity | e977bb6976aef12dd995b81ada06a712 MD5 | raw file
Possible License(s): Unlicense, Apache-2.0, LGPL-2.0, MPL-2.0-no-copyleft-exception, CC-BY-SA-3.0, GPL-2.0
  1. //
  2. // System.Data.OleDb.OleDbParameterCollection
  3. //
  4. // Author:
  5. // Rodrigo Moya (rodrigo@ximian.com)
  6. // Tim Coleman (tim@timcoleman.com)
  7. // Umadevi S (sumadevi@novell.com)
  8. //
  9. // Copyright (C) Rodrigo Moya, 2002
  10. // Copyright (C) Tim Coleman, 2002
  11. // Copyright (C) Novell Inc.
  12. //
  13. //
  14. // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
  15. //
  16. // Permission is hereby granted, free of charge, to any person obtaining
  17. // a copy of this software and associated documentation files (the
  18. // "Software"), to deal in the Software without restriction, including
  19. // without limitation the rights to use, copy, modify, merge, publish,
  20. // distribute, sublicense, and/or sell copies of the Software, and to
  21. // permit persons to whom the Software is furnished to do so, subject to
  22. // the following conditions:
  23. //
  24. // The above copyright notice and this permission notice shall be
  25. // included in all copies or substantial portions of the Software.
  26. //
  27. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  28. // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  29. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  30. // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  31. // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  32. // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  33. // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  34. //
  35. using System.Collections;
  36. using System.Data;
  37. using System.Data.Common;
  38. using System.ComponentModel;
  39. namespace System.Data.OleDb
  40. {
  41. [ListBindable (false)]
  42. [EditorAttribute ("Microsoft.VSDesigner.Data.Design.DBParametersEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing)]
  43. public sealed class OleDbParameterCollection :
  44. #if NET_2_0
  45. DbParameterCollection, IList, ICollection, IDataParameterCollection
  46. #else
  47. MarshalByRefObject, IDataParameterCollection, IList, ICollection, IEnumerable
  48. #endif
  49. {
  50. #region Fields
  51. ArrayList list = new ArrayList ();
  52. #endregion // Fields
  53. #region Constructors
  54. internal OleDbParameterCollection ()
  55. {
  56. }
  57. #endregion // Constructors
  58. #region Properties
  59. #if ONLY_1_1
  60. [Browsable (false)]
  61. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  62. #endif
  63. public
  64. #if NET_2_0
  65. override
  66. #endif
  67. int Count {
  68. get { return list.Count; }
  69. }
  70. [Browsable (false)]
  71. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  72. public new OleDbParameter this[int index] {
  73. get { return (OleDbParameter) list [index]; }
  74. set { list[index] = (OleDbParameter) value; }
  75. }
  76. [Browsable (false)]
  77. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  78. public new OleDbParameter this[string parameterName] {
  79. get {
  80. foreach (OleDbParameter p in list)
  81. if (p.ParameterName.Equals (parameterName))
  82. return p;
  83. throw new IndexOutOfRangeException ("The specified name does not exist: " + parameterName);
  84. }
  85. set {
  86. if (!Contains (parameterName))
  87. throw new IndexOutOfRangeException("The specified name does not exist: " + parameterName);
  88. this [IndexOf (parameterName)] = (OleDbParameter) value;
  89. }
  90. }
  91. #if NET_2_0
  92. public override bool IsFixedSize {
  93. get {
  94. return list.IsFixedSize;
  95. }
  96. }
  97. public override bool IsReadOnly {
  98. get {
  99. return list.IsReadOnly;
  100. }
  101. }
  102. public override bool IsSynchronized {
  103. get {
  104. return list.IsSynchronized;
  105. }
  106. }
  107. public override object SyncRoot {
  108. get {
  109. return list.SyncRoot;
  110. }
  111. }
  112. #else
  113. bool IList.IsFixedSize {
  114. get { return false; }
  115. }
  116. bool IList.IsReadOnly {
  117. get { return false; }
  118. }
  119. bool ICollection.IsSynchronized {
  120. get { return list.IsSynchronized; }
  121. }
  122. object ICollection.SyncRoot {
  123. get { return list.SyncRoot; }
  124. }
  125. object IList.this[int index] {
  126. get { return list[index]; }
  127. set { list[index] = value; }
  128. }
  129. object IDataParameterCollection.this [string index] {
  130. [MonoTODO]
  131. get {
  132. throw new NotImplementedException ();
  133. }
  134. [MonoTODO]
  135. set {
  136. throw new NotImplementedException ();
  137. }
  138. }
  139. #endif
  140. internal IntPtr GdaParameterList {
  141. [MonoTODO]
  142. get {
  143. IntPtr param_list;
  144. param_list = libgda.gda_parameter_list_new ();
  145. // FIXME: add parameters to list
  146. return param_list;
  147. }
  148. }
  149. #endregion // Properties
  150. #region Methods
  151. #if NET_2_0
  152. [EditorBrowsable(EditorBrowsableState.Never)]
  153. #endif
  154. public
  155. #if NET_2_0
  156. override
  157. #endif
  158. int Add (object value)
  159. {
  160. if (!(value is OleDbParameter))
  161. throw new InvalidCastException ("The parameter was not an OleDbParameter.");
  162. Add ((OleDbParameter) value);
  163. return IndexOf (value);
  164. }
  165. public OleDbParameter Add (OleDbParameter value)
  166. {
  167. if (value.Container != null)
  168. throw new ArgumentException ("The OleDbParameter specified in the value parameter is already added to this or another OleDbParameterCollection.");
  169. value.Container = this;
  170. list.Add (value);
  171. return value;
  172. }
  173. #if NET_2_0
  174. [Obsolete("OleDbParameterCollection.Add(string, value) is now obsolete. Use OleDbParameterCollection.AddWithValue(string, object) instead.")]
  175. [EditorBrowsable(EditorBrowsableState.Never)]
  176. #endif
  177. public OleDbParameter Add (string parameterName, object value)
  178. {
  179. return Add (new OleDbParameter (parameterName, value));
  180. }
  181. #if NET_2_0
  182. public OleDbParameter AddWithValue (string parameterName, object value)
  183. {
  184. return Add (new OleDbParameter (parameterName, value));
  185. }
  186. #endif
  187. public OleDbParameter Add (string parameterName, OleDbType oleDbType)
  188. {
  189. return Add (new OleDbParameter (parameterName, oleDbType));
  190. }
  191. public OleDbParameter Add (string parameterName, OleDbType oleDbType, int size)
  192. {
  193. return Add (new OleDbParameter (parameterName, oleDbType, size));
  194. }
  195. public OleDbParameter Add (string parameterName, OleDbType oleDbType, int size, string sourceColumn)
  196. {
  197. return Add (new OleDbParameter (parameterName, oleDbType, size, sourceColumn));
  198. }
  199. #if NET_2_0
  200. public override void AddRange(Array values)
  201. {
  202. if (values == null)
  203. throw new ArgumentNullException ("values");
  204. foreach (object value in values)
  205. Add (value);
  206. }
  207. public void AddRange(OleDbParameter[] values)
  208. {
  209. if (values == null)
  210. throw new ArgumentNullException ("values");
  211. foreach (OleDbParameter value in values)
  212. Add (value);
  213. }
  214. #endif
  215. public
  216. #if NET_2_0
  217. override
  218. #endif
  219. void Clear()
  220. {
  221. foreach (OleDbParameter p in list)
  222. p.Container = null;
  223. list.Clear ();
  224. }
  225. public
  226. #if NET_2_0
  227. override
  228. #endif
  229. bool Contains (object value)
  230. {
  231. if (!(value is OleDbParameter))
  232. throw new InvalidCastException ("The parameter was not an OleDbParameter.");
  233. return Contains (((OleDbParameter) value).ParameterName);
  234. }
  235. public
  236. #if NET_2_0
  237. override
  238. #endif
  239. bool Contains (string value)
  240. {
  241. foreach (OleDbParameter p in list)
  242. if (p.ParameterName.Equals (value))
  243. return true;
  244. return false;
  245. }
  246. #if NET_2_0
  247. public bool Contains (OleDbParameter value)
  248. {
  249. return IndexOf (value) != -1;
  250. }
  251. #endif
  252. public
  253. #if NET_2_0
  254. override
  255. #endif
  256. void CopyTo (Array array, int index)
  257. {
  258. list.CopyTo (array, index);
  259. }
  260. #if NET_2_0
  261. public void CopyTo(OleDbParameter[] array, int index)
  262. {
  263. CopyTo (array, index);
  264. }
  265. #endif
  266. public
  267. #if NET_2_0
  268. override
  269. #endif
  270. IEnumerator GetEnumerator()
  271. {
  272. return list.GetEnumerator ();
  273. }
  274. #if NET_2_0
  275. [MonoTODO]
  276. protected override DbParameter GetParameter (int index)
  277. {
  278. throw new NotImplementedException ();
  279. }
  280. [MonoTODO]
  281. protected override DbParameter GetParameter (string parameterName)
  282. {
  283. throw new NotImplementedException ();
  284. }
  285. #endif
  286. public
  287. #if NET_2_0
  288. override
  289. #endif
  290. int IndexOf (object value)
  291. {
  292. if (!(value is OleDbParameter))
  293. throw new InvalidCastException ("The parameter was not an OleDbParameter.");
  294. return IndexOf (((OleDbParameter) value).ParameterName);
  295. }
  296. #if NET_2_0
  297. public int IndexOf(OleDbParameter value)
  298. {
  299. return IndexOf (value);
  300. }
  301. #endif
  302. public
  303. #if NET_2_0
  304. override
  305. #endif
  306. int IndexOf (string parameterName)
  307. {
  308. for (int i = 0; i < Count; i += 1)
  309. if (this [i].ParameterName.Equals (parameterName))
  310. return i;
  311. return -1;
  312. }
  313. public
  314. #if NET_2_0
  315. override
  316. #endif
  317. void Insert (int index, object value)
  318. {
  319. list.Insert (index, value);
  320. }
  321. #if NET_2_0
  322. public void Insert (int index, OleDbParameter value)
  323. {
  324. Insert (index, value);
  325. }
  326. #endif
  327. public
  328. #if NET_2_0
  329. override
  330. #endif
  331. void Remove (object value)
  332. {
  333. ((OleDbParameter) value).Container = null;
  334. list.Remove (value);
  335. }
  336. #if NET_2_0
  337. public void Remove (OleDbParameter value)
  338. {
  339. Remove (value);
  340. }
  341. #endif
  342. public
  343. #if NET_2_0
  344. override
  345. #endif
  346. void RemoveAt (int index)
  347. {
  348. this [index].Container = null;
  349. list.RemoveAt (index);
  350. }
  351. public
  352. #if NET_2_0
  353. override
  354. #endif
  355. void RemoveAt (string parameterName)
  356. {
  357. RemoveAt (IndexOf (parameterName));
  358. }
  359. #if NET_2_0
  360. [MonoTODO]
  361. protected override void SetParameter (int index, DbParameter value)
  362. {
  363. throw new NotImplementedException ();
  364. }
  365. [MonoTODO]
  366. protected override void SetParameter (string parameterName, DbParameter value)
  367. {
  368. throw new NotImplementedException ();
  369. }
  370. #endif
  371. #endregion // Methods
  372. }
  373. }