Some fixes, thanks to duncan
[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 //
7 // Copyright (C) Rodrigo Moya, 2002
8 //
9
10 using System.Collections;
11 using System.Data;
12 using System.Data.Common;
13
14 namespace System.Data.OleDb
15 {
16         public sealed class OleDbParameterCollection : MarshalByRefObject,
17                 IDataParameterCollection, IList, ICollection, IEnumerable
18         {
19                 private ArrayList m_list = new ArrayList ();
20
21                 /*
22                  * Properties
23                  */
24
25                 int ICollection.Count {
26                         get {
27                                 return m_list.Count;
28                         }
29                 }
30
31                 bool IList.IsFixedSize
32                 {
33                         get {
34                                 return false;
35                         }
36                 }
37                 
38                 bool IList.IsReadOnly
39                 {
40                         get {
41                                 return false;
42                         }
43                 }
44                 
45                 bool ICollection.IsSynchronized
46                 {
47                         get {
48                                 return m_list.IsSynchronized;
49                         }
50                 }
51
52                 object ICollection.SyncRoot
53                 {
54                         get {
55                                 return m_list.SyncRoot;
56                         }
57                 }
58                 
59                 object IList.this[int index]
60                 {
61                         get {
62                                 return m_list[index];
63                         }
64                         set {
65                                 m_list[index] = value;
66                         }
67                 }
68
69                 object IDataParameterCollection.this[string name]
70                 {
71                         [MonoTODO]
72                         get {
73                                 throw new NotImplementedException ();
74                         }
75                         [MonoTODO]
76                         set {
77                                 throw new NotImplementedException ();
78                         }
79                 }
80
81                 /*
82                  * Methods
83                  */
84
85                 int IList.Add (object value)
86                 {
87                         if (!(value is IDataParameter))
88                                 throw new InvalidCastException ();
89
90                         m_list.Add (value);
91                         return m_list.IndexOf (value);
92                 }
93
94                 public OleDbParameter Add (OleDbParameter parameter)
95                 {
96                         m_list.Add (parameter);
97                         return parameter;
98                 }
99
100                 public OleDbParameter Add (string name, object value)
101                 {
102                         OleDbParameter parameter = new OleDbParameter (name, value);
103                         m_list.Add (parameter);
104                         return parameter;
105                 }
106
107                 public OleDbParameter Add (string name, OleDbType type)
108                 {
109                         OleDbParameter parameter = new OleDbParameter (name, type);
110                         m_list.Add (parameter);
111                         return parameter;
112                 }
113
114                 public OleDbParameter Add (string name, OleDbType type, int width)
115                 {
116                         OleDbParameter parameter = new OleDbParameter (name, type, width);
117                         m_list.Add (parameter);
118                         return parameter;
119                 }
120
121                 public OleDbParameter Add (string name, OleDbType type,
122                                            int width, string src_col)
123                 {
124                         OleDbParameter parameter = new OleDbParameter (name, type, width, src_col);
125                         m_list.Add (parameter);
126                         return parameter;
127                 }
128
129                 void IList.Clear ()
130                 {
131                         m_list.Clear ();
132                 }
133
134                 bool IList.Contains (object value)
135                 {
136                         return m_list.Contains (value);
137                 }
138
139                 bool IDataParameterCollection.Contains (string value)
140                 {
141                         for (int i = 0; i < m_list.Count; i++) {
142                                 IDataParameter parameter;
143
144                                 parameter = (IDataParameter) m_list[i];
145                                 if (parameter.ParameterName == value)
146                                         return true;
147                         }
148
149                         return false;
150                 }
151
152                 void ICollection.CopyTo (Array array, int index)
153                 {
154                         ((OleDbParameter[])(m_list.ToArray ())).CopyTo (array, index);
155                 }
156
157                 IEnumerator IEnumerable.GetEnumerator ()
158                 {
159                         return m_list.GetEnumerator ();
160                 }
161                 
162                 int IList.IndexOf (object value)
163                 {
164                         return m_list.IndexOf (value);
165                 }
166
167                 int IDataParameterCollection.IndexOf (string name)
168                 {
169                         return m_list.IndexOf (((IDataParameterCollection) this)[name]);
170                 }
171
172                 void IList.Insert (int index, object value)
173                 {
174                         m_list.Insert (index, value);
175                 }
176
177                 void IList.Remove (object value)
178                 {
179                         m_list.Remove (value);
180                 }
181
182                 void IList.RemoveAt (int index)
183                 {
184                         m_list.Remove ((object) m_list[index]);
185                 }
186
187                 void IDataParameterCollection.RemoveAt (string name)
188                 {
189                         m_list.Remove (((IDataParameterCollection) this)[name]);
190                 }
191         }
192 }