imported everything from my branch (which is slightly harmless).
[mono.git] / mcs / class / System.Data.OracleClient / System.Data.OracleClient / OracleParameterCollection.cs
1 // 
2 // OracleParameterCollection.cs
3 //
4 // Part of the Mono class libraries at
5 // mcs/class/System.Data.OracleClient/System.Data.OracleClient
6 //
7 // Assembly: System.Data.OracleClient.dll
8 // Namespace: System.Data.OracleClient
9 //
10 // Authors: 
11 //    Tim Coleman <tim@timcoleman.com>
12 //
13 // Copyright (C) Tim Coleman , 2003
14 //
15 // Licensed under the MIT/X11 License.
16 //
17
18 using System;
19 using System.Collections;
20 using System.ComponentModel;
21 using System.Data;
22 using System.Data.OracleClient.Oci;
23 using System.Drawing.Design;
24 using System.Reflection;
25
26 namespace System.Data.OracleClient {
27         [ListBindable (false)]
28         [Editor ("Microsoft.VSDesigner.Data.Oracle.Design.DBParametersEditor, " + Consts.AssemblyMicrosoft_VSDesigner, typeof(UITypeEditor))]
29         public sealed class OracleParameterCollection : MarshalByRefObject, IDataParameterCollection, IList, ICollection, IEnumerable
30         {
31                 #region Fields
32
33                 OracleCommand command;
34                 ArrayList list;
35
36                 #endregion // Fields
37
38                 #region Constructors
39
40                 internal OracleParameterCollection (OracleCommand command)
41                         : this ()
42                 {
43                         this.command = command;
44                 }
45
46                 public OracleParameterCollection ()
47                 {
48                         list = new ArrayList ();
49                 }
50
51                 #endregion // Constructors
52
53                 #region Properties
54
55                 public int Count {
56                         get { return list.Count; }
57                 }
58
59                 public bool IsFixedSize {
60                         get { return false; }
61                 }
62
63                 public bool IsReadOnly {
64                         get { return false; }
65                 }
66
67                 public bool IsSynchronized {
68                         get { return false; }
69                 }
70
71                 public OracleParameter this [string parameterName] {
72                         get {
73                                 foreach (OracleParameter p in list)
74                                         if (p.ParameterName.Equals (parameterName))
75                                                 return p;
76                                 throw new IndexOutOfRangeException ("The specified name does not exist: " + parameterName);
77                         }
78                         set {
79                                 if (!Contains (parameterName))
80                                         throw new IndexOutOfRangeException ("The specified name does not exist: " + parameterName);
81                                 this [IndexOf (parameterName)] = value;
82                         }
83                 }
84
85                 object IList.this [int index] {
86                         get { return (OracleParameter) this [index]; }
87                         set { this [index] = (OracleParameter) value; }
88                 }
89
90                 bool IList.IsFixedSize {
91                         get { return IsFixedSize; }
92                 }
93
94                 bool IList.IsReadOnly {
95                         get { return IsReadOnly; }
96                 }
97
98                 bool ICollection.IsSynchronized {
99                         get { return IsSynchronized; }
100                 }
101
102                 object ICollection.SyncRoot {
103                         get { return SyncRoot; }
104                 }
105
106                 public OracleParameter this [int index] {
107                         get { return (OracleParameter) list [index]; }
108                         set { list [index] = value; }
109                 }
110
111                 object IDataParameterCollection.this [string parameterName] {
112                         get { return this [parameterName]; }
113                         set {
114                                 if (!(value is OracleParameter))
115                                         throw new InvalidCastException ("The parameter was not an OracleParameter.");
116                                 this [parameterName] = (OracleParameter) value;
117                         }
118                 }
119
120                 public object SyncRoot {
121                         get { return this; }
122                 }
123
124                 #endregion // Properties
125
126                 #region Methods
127
128                 public int Add (object value)
129                 {
130                         if (!(value is OracleParameter))
131                                 throw new InvalidCastException ("The parameter was not an OracleParameter.");
132                         Add ((OracleParameter) value);
133                         return IndexOf (value);
134                 }
135
136                 public OracleParameter Add (OracleParameter value)
137                 {
138                         if (value.Container != null)
139                                 throw new ArgumentException ("The OracleParameter specified in the value parameter is already added to this or another OracleParameterCollection.");
140                         value.Container = this;
141                         list.Add (value);
142                         return value;
143                 }
144
145                 public OracleParameter Add (string parameterName, object value)
146                 {
147                         return Add (new OracleParameter (parameterName, value));
148                 }
149
150                 public OracleParameter Add (string parameterName, OracleType dataType)
151                 {
152                         return Add (new OracleParameter (parameterName, dataType));
153                 }
154
155                 public OracleParameter Add (string parameterName, OracleType dataType, int size)
156                 {
157                         return Add (new OracleParameter (parameterName, dataType, size));
158                 }
159
160                 public OracleParameter Add (string parameterName, OracleType dataType, int size, string srcColumn)
161                 {
162                         return Add (new OracleParameter (parameterName, dataType, size, srcColumn));
163                 }
164
165                 public void Clear ()
166                 {
167                         list.Clear ();
168                 }
169
170                 public bool Contains (object value)
171                 {
172                         if (!(value is OracleParameter))
173                                 throw new InvalidCastException ("The parameter was not an OracleParameter.");
174                         return Contains (((OracleParameter) value).ParameterName);
175                 }
176
177                 public bool Contains (string parameterName)
178                 {
179                         foreach (OracleParameter p in list)
180                                 if (p.ParameterName.Equals (parameterName))
181                                         return true;
182                         return false;
183                 }
184
185                 public void CopyTo (Array array, int index)
186                 {
187                         list.CopyTo (array, index);
188                 }
189
190                 public IEnumerator GetEnumerator ()
191                 {
192                         return list.GetEnumerator ();
193                 }
194
195                 public int IndexOf (object value)
196                 {
197                         if (!(value is OracleParameter))
198                                 throw new InvalidCastException ("The parameter was not an OracleParameter.");
199                         return IndexOf (((OracleParameter) value).ParameterName);
200                 }
201
202                 public int IndexOf (string parameterName)
203                 {
204                         for (int i = 0; i < Count; i += 1)
205                                 if (this [i].ParameterName.Equals (parameterName))
206                                         return i;
207                         return -1;
208                 }
209
210                 public void Insert (int index, object value)
211                 {
212                         if (!(value is OracleParameter))
213                                 throw new InvalidCastException ("The parameter was not an OracleParameter.");
214                         list.Insert (index, value);
215                 }
216
217                 public void Remove (object value)
218                 {
219                         if (!(value is OracleParameter))
220                                 throw new InvalidCastException ("The parameter was not an OracleParameter.");
221                         list.Remove (value);
222                 }
223
224                 public void RemoveAt (int index)
225                 {
226                         list.RemoveAt (index);
227                 }
228
229                 public void RemoveAt (string parameterName)
230                 {
231                         list.RemoveAt (IndexOf (parameterName));
232                 }
233
234                 #endregion // Methods
235         }
236 }