**** Merged from MCS ****
[mono-project.git] / mcs / class / System.Data.OracleClient / System.Data.OracleClient / OracleParameterCollection.cs
blobaaaeeb53527f8608eeaf5379cbb0d9479e26c6ff
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>
13 // Copyright (C) Tim Coleman , 2003
15 // Licensed under the MIT/X11 License.
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;
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
31 #region Fields
33 OracleCommand command;
34 ArrayList list;
36 #endregion // Fields
38 #region Constructors
40 internal OracleParameterCollection (OracleCommand command)
41 : this ()
43 this.command = command;
46 public OracleParameterCollection ()
48 list = new ArrayList ();
51 #endregion // Constructors
53 #region Properties
55 public int Count {
56 get { return list.Count; }
59 public bool IsFixedSize {
60 get { return false; }
63 public bool IsReadOnly {
64 get { return false; }
67 public bool IsSynchronized {
68 get { return false; }
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);
78 set {
79 if (!Contains (parameterName))
80 throw new IndexOutOfRangeException ("The specified name does not exist: " + parameterName);
81 this [IndexOf (parameterName)] = value;
85 object IList.this [int index] {
86 get { return (OracleParameter) this [index]; }
87 set { this [index] = (OracleParameter) value; }
90 bool IList.IsFixedSize {
91 get { return IsFixedSize; }
94 bool IList.IsReadOnly {
95 get { return IsReadOnly; }
98 bool ICollection.IsSynchronized {
99 get { return IsSynchronized; }
102 object ICollection.SyncRoot {
103 get { return SyncRoot; }
106 public OracleParameter this [int index] {
107 get { return (OracleParameter) list [index]; }
108 set { list [index] = value; }
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;
120 public object SyncRoot {
121 get { return this; }
124 #endregion // Properties
126 #region Methods
128 public int Add (object value)
130 if (!(value is OracleParameter))
131 throw new InvalidCastException ("The parameter was not an OracleParameter.");
132 Add ((OracleParameter) value);
133 return IndexOf (value);
136 public OracleParameter Add (OracleParameter value)
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;
145 public OracleParameter Add (string parameterName, object value)
147 return Add (new OracleParameter (parameterName, value));
150 public OracleParameter Add (string parameterName, OracleType dataType)
152 return Add (new OracleParameter (parameterName, dataType));
155 public OracleParameter Add (string parameterName, OracleType dataType, int size)
157 return Add (new OracleParameter (parameterName, dataType, size));
160 public OracleParameter Add (string parameterName, OracleType dataType, int size, string srcColumn)
162 return Add (new OracleParameter (parameterName, dataType, size, srcColumn));
165 public void Clear ()
167 list.Clear ();
170 public bool Contains (object value)
172 if (!(value is OracleParameter))
173 throw new InvalidCastException ("The parameter was not an OracleParameter.");
174 return Contains (((OracleParameter) value).ParameterName);
177 public bool Contains (string parameterName)
179 foreach (OracleParameter p in list)
180 if (p.ParameterName.Equals (parameterName))
181 return true;
182 return false;
185 public void CopyTo (Array array, int index)
187 list.CopyTo (array, index);
190 public IEnumerator GetEnumerator ()
192 return list.GetEnumerator ();
195 public int IndexOf (object value)
197 if (!(value is OracleParameter))
198 throw new InvalidCastException ("The parameter was not an OracleParameter.");
199 return IndexOf (((OracleParameter) value).ParameterName);
202 public int IndexOf (string parameterName)
204 for (int i = 0; i < Count; i += 1)
205 if (this [i].ParameterName.Equals (parameterName))
206 return i;
207 return -1;
210 public void Insert (int index, object value)
212 if (!(value is OracleParameter))
213 throw new InvalidCastException ("The parameter was not an OracleParameter.");
214 list.Insert (index, value);
217 public void Remove (object value)
219 if (!(value is OracleParameter))
220 throw new InvalidCastException ("The parameter was not an OracleParameter.");
221 list.Remove (value);
224 public void RemoveAt (int index)
226 list.RemoveAt (index);
229 public void RemoveAt (string parameterName)
231 list.RemoveAt (IndexOf (parameterName));
234 #endregion // Methods