2 // System.Data.Common.DataTableMappingCollection.cs
5 // Rodrigo Moya (rodrigo@ximian.com)
6 // Tim Coleman (tim@timcoleman.com)
9 // Copyright (C) Tim Coleman, 2002-2003
13 using System.Collections;
14 using System.ComponentModel;
16 namespace System.Data.Common {
17 [ListBindable (false)]
18 [EditorAttribute ("Microsoft.VSDesigner.Data.Design.DataTableMappingCollectionEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing )]
19 public sealed class DataTableMappingCollection : MarshalByRefObject, ITableMappingCollection, IList, ICollection, IEnumerable
24 Hashtable sourceTables;
25 Hashtable dataSetTables;
31 public DataTableMappingCollection()
33 mappings = new ArrayList ();
34 sourceTables = new Hashtable ();
35 dataSetTables = new Hashtable ();
38 #endregion // Constructors
43 [DataSysDescription ("The number of items in the collection")]
44 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
46 get { return mappings.Count; }
50 [DataSysDescription ("The specified DataTableMapping object")]
51 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
52 public DataTableMapping this [int index] {
53 get { return (DataTableMapping)(mappings[index]); }
55 DataTableMapping mapping = (DataTableMapping) mappings[index];
56 sourceTables [mapping.SourceTable] = value;
57 dataSetTables [mapping.DataSetTable] = value;
58 mappings [index] = value;
63 [DataSysDescription ("The specified DataTableMapping object")]
64 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
65 public DataTableMapping this [string sourceTable] {
66 get { return (DataTableMapping) sourceTables[sourceTable]; }
67 set { this [mappings.IndexOf (sourceTables[sourceTable])] = value; }
70 object IList.this [int index] {
71 get { return (object)(this[index]); }
73 if (!(value is DataTableMapping))
74 throw new ArgumentException ();
75 this[index] = (DataTableMapping)value;
79 bool ICollection.IsSynchronized {
80 get { return mappings.IsSynchronized; }
83 object ICollection.SyncRoot {
84 get { return mappings.SyncRoot; }
87 bool IList.IsFixedSize {
91 bool IList.IsReadOnly {
95 object ITableMappingCollection.this [string sourceTable] {
96 get { return this [sourceTable]; }
98 if (!(value is DataTableMapping))
99 throw new ArgumentException ();
100 this [sourceTable] = (DataTableMapping) value;
104 #endregion // Properties
108 public int Add (object value)
110 if (!(value is System.Data.Common.DataTableMapping))
111 throw new SystemException ("The object passed in was not a DataTableMapping object.");
113 sourceTables[((DataTableMapping)value).SourceTable] = value;
114 dataSetTables[((DataTableMapping)value).DataSetTable] = value;
115 return mappings.Add (value);
118 public DataTableMapping Add (string sourceTable, string dataSetTable)
120 DataTableMapping mapping = new DataTableMapping (sourceTable, dataSetTable);
127 public void AddRange (Array values)
129 throw new NotImplementedException ();
133 public void AddRange (DataTableMapping[] values)
135 foreach (DataTableMapping dataTableMapping in values)
136 this.Add (dataTableMapping);
141 sourceTables.Clear ();
142 dataSetTables.Clear ();
146 public bool Contains (object value)
148 return mappings.Contains (value);
151 public bool Contains (string value)
153 return sourceTables.Contains (value);
156 public void CopyTo (Array array, int index)
158 mappings.CopyTo (array, index);
161 public DataTableMapping GetByDataSetTable (string dataSetTable)
163 return (DataTableMapping)(dataSetTables[dataSetTable]);
166 [EditorBrowsable (EditorBrowsableState.Advanced)]
167 public static DataTableMapping GetTableMappingBySchemaAction (DataTableMappingCollection tableMappings, string sourceTable, string dataSetTable, MissingMappingAction mappingAction)
169 if (tableMappings.Contains (sourceTable))
170 return tableMappings[sourceTable];
171 if (mappingAction == MissingMappingAction.Error)
172 throw new InvalidOperationException ();
173 if (mappingAction == MissingMappingAction.Ignore)
175 return new DataTableMapping (sourceTable, dataSetTable);
178 public IEnumerator GetEnumerator ()
180 return mappings.GetEnumerator ();
183 public int IndexOf (object value)
185 return mappings.IndexOf (value);
188 public int IndexOf (string sourceTable)
190 return IndexOf (sourceTables[sourceTable]);
193 public int IndexOfDataSetTable (string dataSetTable)
195 return IndexOf ((DataTableMapping)(dataSetTables[dataSetTable]));
198 public void Insert (int index, object value)
200 mappings.Insert (index, value);
203 ITableMapping ITableMappingCollection.Add (string sourceTableName, string dataSetTableName)
205 ITableMapping tableMapping = new DataTableMapping (sourceTableName, dataSetTableName);
210 ITableMapping ITableMappingCollection.GetByDataSetTable (string dataSetTableName)
212 return this [mappings.IndexOf (dataSetTables [dataSetTableName])];
215 public void Remove (object value)
217 mappings.Remove ((DataTableMapping) value);
220 public void RemoveAt (int index)
222 mappings.RemoveAt (index);
225 public void RemoveAt (string sourceTable)
227 RemoveAt (mappings.IndexOf (sourceTables[sourceTable]));
230 #endregion // Methods