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