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