2 // System.Data.Common.DataColumnCollection
5 // Rodrigo Moya (rodrigo@ximian.com)
6 // Tim Coleman (tim@timcoleman.com)
9 // (C) Copyright 2002 Tim Coleman
13 using System.Collections;
16 namespace System.Data.Common
19 /// Contains a collection of DataColumnMapping objects. This class cannot be inherited.
21 public sealed class DataColumnMappingCollection : MarshalByRefObject // , IColumnMappingCollection , IList, ICollection, IEnumerable
26 Hashtable sourceColumns;
27 Hashtable dataSetColumns;
33 public DataColumnMappingCollection ()
35 list = new ArrayList ();
36 sourceColumns = new Hashtable ();
37 dataSetColumns = new Hashtable ();
45 get { return list.Count; }
48 public DataColumnMapping this[int index] {
49 get { return (DataColumnMapping)(list[index]); }
51 DataColumnMapping mapping = (DataColumnMapping)(list[index]);
52 sourceColumns[mapping] = value;
53 dataSetColumns[mapping] = value;
58 public DataColumnMapping this[string sourceColumn] {
59 get { return (DataColumnMapping)(sourceColumns[sourceColumn]); }
60 set { this[list.IndexOf (sourceColumns[sourceColumn])] = value; }
67 public int Add (object value)
69 if (!(value is DataColumnMapping))
70 throw new InvalidCastException ();
73 sourceColumns[((DataColumnMapping)value).SourceColumn] = value;
74 dataSetColumns[((DataColumnMapping)value).DataSetColumn] = value;
75 return list.IndexOf (value);
78 public DataColumnMapping Add (string sourceColumn, string dataSetColumn)
80 DataColumnMapping mapping = new DataColumnMapping (sourceColumn, dataSetColumn);
85 public void AddRange (DataColumnMapping[] values)
87 foreach (DataColumnMapping mapping in values)
96 public bool Contains (object value)
98 return (list.Contains (value));
101 public bool Contains (string value)
103 return (sourceColumns.Contains (value));
106 public void CopyTo (Array array, int index)
108 ((DataColumn[])(list.ToArray())).CopyTo (array, index);
111 public DataColumnMapping GetByDataSetColumn (string value)
113 return (DataColumnMapping)(dataSetColumns[value]);
116 public static DataColumnMapping GetColumnMappingBySchemaAction (DataColumnMappingCollection columnMappings, string sourceColumn, MissingMappingAction mappingAction)
118 if (columnMappings.Contains (sourceColumn))
119 return columnMappings[sourceColumn];
121 if (mappingAction == MissingMappingAction.Ignore)
124 if (mappingAction == MissingMappingAction.Error)
125 throw new SystemException ();
127 return new DataColumnMapping (sourceColumn, sourceColumn);
130 public IEnumerator GetEnumerator ()
132 return list.GetEnumerator ();
136 IColumnMapping IColumnMappingCollection.Add (string sourceColumnName, string dataSetColumnName)
138 return (IColumnMapping)(Add (sourceColumnName, dataSetColumnName));
141 IColumnMapping IColumnMappingCollection.GetByDataSetColumn (string dataSetColumnName)
143 return (IColumnMapping)(GetByDataSetColumn (dataSetColumnName));
147 public int IndexOf (object value)
149 return list.IndexOf (value);
152 public int IndexOf (string sourceColumn)
154 return list.IndexOf (sourceColumns[sourceColumn]);
157 public int IndexOfDataSetColumn (string value)
159 return list.IndexOf (dataSetColumns[value]);
162 public void Insert (int index, object value)
164 list.Insert (index, value);
165 sourceColumns[((DataColumnMapping)value).SourceColumn] = value;
166 dataSetColumns[((DataColumnMapping)value).DataSetColumn] = value;
169 public void Remove (object value)
171 sourceColumns.Remove(((DataColumnMapping)value).SourceColumn);
172 dataSetColumns.Remove(((DataColumnMapping)value).DataSetColumn);
176 public void RemoveAt (int index)
178 Remove (list[index]);
181 public void RemoveAt (string sourceColumn)
183 RemoveAt (list.IndexOf (sourceColumns[sourceColumn]));