(DISTFILES): Comment out a few missing files.
[mono-project.git] / mcs / class / Mono.Data.PostgreSqlClient / Mono.Data.PostgreSqlClient / PgSqlParameterCollection.cs
blob6e3bcc2813e9777e225af820108ddb11c615afdf
1 //
2 // Mono.Data.PostgreSqlClient.PgSqlParameterCollection.cs
3 //
4 // Author:
5 // Rodrigo Moya (rodrigo@ximian.com)
6 // Daniel Morgan (danmorg@sc.rr.com)
7 //
8 // (C) Ximian, Inc 2002
9 //
12 // Permission is hereby granted, free of charge, to any person obtaining
13 // a copy of this software and associated documentation files (the
14 // "Software"), to deal in the Software without restriction, including
15 // without limitation the rights to use, copy, modify, merge, publish,
16 // distribute, sublicense, and/or sell copies of the Software, and to
17 // permit persons to whom the Software is furnished to do so, subject to
18 // the following conditions:
19 //
20 // The above copyright notice and this permission notice shall be
21 // included in all copies or substantial portions of the Software.
22 //
23 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32 using System;
33 using System.ComponentModel;
34 using System.Data;
35 using System.Data.Common;
36 using System.Collections;
38 namespace Mono.Data.PostgreSqlClient
40 /// <summary>
41 /// Collects all parameters relevant to a Command object
42 /// and their mappings to DataSet columns.
43 /// </summary>
44 // public sealed class PgSqlParameterCollection : MarshalByRefObject,
45 // IDataParameterCollection, IList, ICollection, IEnumerable
46 public sealed class PgSqlParameterCollection : IDataParameterCollection,
47 IList
49 private ArrayList parameterList = new ArrayList();
51 [MonoTODO]
52 public IEnumerator GetEnumerator()
54 throw new NotImplementedException ();
58 public int Add( object value)
60 // Call the add version that receives a SqlParameter
62 // Check if value is a PgSqlParameter.
63 CheckType(value);
64 Add((PgSqlParameter) value);
66 return IndexOf (value);
70 public PgSqlParameter Add(PgSqlParameter value)
72 parameterList.Add(value);
73 return value;
77 public PgSqlParameter Add(string parameterName, object value)
79 PgSqlParameter sqlparam = new PgSqlParameter();
80 sqlparam.Value = value;
81 // TODO: Get the dbtype and Sqldbtype from system type of value.
83 return Add(sqlparam);
87 public PgSqlParameter Add(string parameterName, SqlDbType sqlDbType)
89 PgSqlParameter sqlparam = new PgSqlParameter();
90 sqlparam.ParameterName = parameterName;
91 sqlparam.SqlDbType = sqlDbType;
92 return Add(sqlparam);
96 public PgSqlParameter Add(string parameterName,
97 SqlDbType sqlDbType, int size)
99 PgSqlParameter sqlparam = new PgSqlParameter();
100 sqlparam.ParameterName = parameterName;
101 sqlparam.SqlDbType = sqlDbType;
102 sqlparam.Size = size;
103 return Add(sqlparam);
107 public PgSqlParameter Add(string parameterName,
108 SqlDbType sqlDbType, int size, string sourceColumn)
110 PgSqlParameter sqlparam = new PgSqlParameter();
111 sqlparam.ParameterName = parameterName;
112 sqlparam.SqlDbType = sqlDbType;
113 sqlparam.Size = size;
114 sqlparam.SourceColumn = sourceColumn;
115 return Add(sqlparam);
118 [MonoTODO]
119 public void Clear()
121 throw new NotImplementedException ();
125 public bool Contains(object value)
127 // Check if value is a SqlParameter
128 CheckType(value);
129 return Contains(((PgSqlParameter)value).ParameterName);
133 [MonoTODO]
134 public bool Contains(string value)
136 for(int p = 0; p < parameterList.Count; p++) {
137 if(((PgSqlParameter)parameterList[p]).ParameterName.Equals(value))
138 return true;
140 return false;
143 [MonoTODO]
144 public void CopyTo(Array array, int index)
146 throw new NotImplementedException ();
150 public int IndexOf(object value)
152 // Check if value is a SqlParameter
153 CheckType(value);
154 return IndexOf(((PgSqlParameter)value).ParameterName);
158 public int IndexOf(string parameterName)
160 int p = -1;
162 for(p = 0; p < parameterList.Count; p++) {
163 if(((PgSqlParameter)parameterList[p]).ParameterName.Equals(parameterName))
164 return p;
166 return p;
169 [MonoTODO]
170 public void Insert(int index, object value)
172 throw new NotImplementedException ();
175 [MonoTODO]
176 public void Remove(object value)
178 throw new NotImplementedException ();
181 [MonoTODO]
182 public void RemoveAt(int index)
184 throw new NotImplementedException ();
187 [MonoTODO]
188 public void RemoveAt(string parameterName)
190 throw new NotImplementedException ();
193 [MonoTODO]
194 public int Count {
195 get {
196 return parameterList.Count;
200 object IList.this[int index] {
201 [MonoTODO]
202 get {
203 return (PgSqlParameter) this[index];
206 [MonoTODO]
207 set {
208 this[index] = (PgSqlParameter) value;
212 public PgSqlParameter this[int index] {
213 get {
214 return (PgSqlParameter) parameterList[index];
217 set {
218 parameterList[index] = (PgSqlParameter) value;
222 object IDataParameterCollection.this[string parameterName] {
223 [MonoTODO]
224 get {
225 return this[parameterName];
228 [MonoTODO]
229 set {
230 CheckType(value);
231 this[parameterName] = (PgSqlParameter) value;
235 public PgSqlParameter this[string parameterName] {
236 get {
237 for(int p = 0; p < parameterList.Count; p++) {
238 if(parameterName.Equals(((PgSqlParameter)parameterList[p]).ParameterName))
239 return (PgSqlParameter) parameterList[p];
241 throw new IndexOutOfRangeException("The specified name does not exist: " + parameterName);
244 set {
245 for(int p = 0; p < parameterList.Count; p++) {
246 if(parameterName.Equals(((PgSqlParameter)parameterList[p]).ParameterName))
247 parameterList[p] = value;
249 throw new IndexOutOfRangeException("The specified name does not exist: " + parameterName);
253 bool IList.IsFixedSize {
254 get {
255 throw new NotImplementedException ();
259 bool IList.IsReadOnly {
260 get {
261 throw new NotImplementedException ();
265 bool ICollection.IsSynchronized {
266 get {
267 throw new NotImplementedException ();
271 object ICollection.SyncRoot {
272 get {
273 throw new NotImplementedException ();
277 /// <summary>
278 /// This method checks if the parameter value is of
279 /// PgSqlParameter type. If it doesn't, throws an InvalidCastException.
280 /// </summary>
281 private void CheckType(object value)
283 if(!(value is PgSqlParameter))
284 throw new InvalidCastException("Only PgSqlParameter objects can be used.");