// Copyright (C) Tim Coleman, 2002-2003
//
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
using System;
using System.Collections;
using System.ComponentModel;
#region Properties
[Browsable (false)]
+#if !NET_2_0
[DataSysDescription ("The number of items in the collection")]
+#endif
[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
public int Count {
get { return mappings.Count; }
}
[Browsable (false)]
+#if !NET_2_0
[DataSysDescription ("The specified DataTableMapping object")]
+#endif
[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
public DataTableMapping this [int index] {
get { return (DataTableMapping)(mappings[index]); }
}
[Browsable (false)]
+#if !NET_2_0
[DataSysDescription ("The specified DataTableMapping object")]
+#endif
[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
public DataTableMapping this [string sourceTable] {
get { return (DataTableMapping) sourceTables[sourceTable]; }
public int Add (object value)
{
if (!(value is System.Data.Common.DataTableMapping))
- throw new SystemException ("The object passed in was not a DataTableMapping object.");
+ throw new InvalidCastException ("The object passed in was not a DataTableMapping object.");
sourceTables[((DataTableMapping)value).SourceTable] = value;
dataSetTables[((DataTableMapping)value).DataSetTable] = value;
return mapping;
}
-#if NET_1_2
- [MonoTODO]
+#if NET_2_0
public void AddRange (Array values)
{
- throw new NotImplementedException ();
+ for (int i = 0; i < values.Length; ++i)
+ Add (values.GetValue (i));
}
#endif
mappings.CopyTo (array, index);
}
+#if NET_2_0
+ public void CopyTo (DataTableMapping[] array, int index)
+ {
+ mappings.CopyTo (array, index);
+ }
+#endif
+
public DataTableMapping GetByDataSetTable (string dataSetTable)
{
- return (DataTableMapping)(dataSetTables[dataSetTable]);
+
+ // this should work case-insenstive.
+ if (!(dataSetTables[dataSetTable] == null))
+ return (DataTableMapping)(dataSetTables[dataSetTable]);
+ else {
+ string lowcasevalue = dataSetTable.ToLower();
+ object [] keyarray = new object[dataSetTables.Count];
+ dataSetTables.Keys.CopyTo(keyarray,0);
+ for (int i=0; i<keyarray.Length; i++) {
+ string temp = (string) keyarray[i];
+ if (lowcasevalue.Equals(temp.ToLower())) return (DataTableMapping)(dataSetTables[keyarray[i]]);
+ }
+ return null;
+
+ }
+
}
[EditorBrowsable (EditorBrowsableState.Advanced)]
if (tableMappings.Contains (sourceTable))
return tableMappings[sourceTable];
if (mappingAction == MissingMappingAction.Error)
- throw new InvalidOperationException ();
+ throw new InvalidOperationException (String.Format ("Missing source table mapping: '{0}'",
+ sourceTable));
if (mappingAction == MissingMappingAction.Ignore)
return null;
return new DataTableMapping (sourceTable, dataSetTable);
public int IndexOfDataSetTable (string dataSetTable)
{
- return IndexOf ((DataTableMapping)(dataSetTables[dataSetTable]));
+ // this should work case-insensitive
+
+ if (!(dataSetTables[dataSetTable] == null))
+ return IndexOf ((DataTableMapping)(dataSetTables[dataSetTable]));
+ else {
+ string lowcasevalue = dataSetTable.ToLower();
+ object [] keyarray = new object[dataSetTables.Count];
+ dataSetTables.Keys.CopyTo(keyarray,0);
+ for (int i=0; i<keyarray.Length; i++) {
+ string temp = (string) keyarray[i];
+ if (lowcasevalue.Equals(temp.ToLower()))
+ return IndexOf ((DataTableMapping)(dataSetTables[keyarray[i]]));
+
+ }
+ return -1;
+
+ }
+
}
public void Insert (int index, object value)
{
mappings.Insert (index, value);
+ sourceTables[((DataTableMapping)value).SourceTable] = value;
+ dataSetTables[((DataTableMapping)value).DataSetTable] = value;
}
+#if NET_2_0
+ public void Insert (int index, DataTableMapping value)
+ {
+ mappings.Insert (index, value);
+ sourceTables[value.SourceTable] = value;
+ dataSetTables[value.DataSetTable] = value;
+ }
+#endif
+
ITableMapping ITableMappingCollection.Add (string sourceTableName, string dataSetTableName)
{
ITableMapping tableMapping = new DataTableMapping (sourceTableName, dataSetTableName);
public void Remove (object value)
{
+ if (!(value is DataTableMapping))
+ throw new InvalidCastException ();
+ int index = mappings.IndexOf (value);
+ if (( index < 0 ) || (index >=mappings.Count))
+ throw new ArgumentException("There is no such element in collection.");
mappings.Remove ((DataTableMapping) value);
}
+#if NET_2_0
+ public void Remove (DataTableMapping value)
+ {
+ int index = mappings.IndexOf (value);
+ if (( index < 0 ) || (index >=mappings.Count))
+ throw new ArgumentException("There is no such element in collection.");
+ mappings.Remove ((DataTableMapping) value);
+ }
+#endif
+
public void RemoveAt (int index)
{
+ if (( index < 0 ) || (index >=mappings.Count))
+ throw new IndexOutOfRangeException("There is no element in collection.");
+
mappings.RemoveAt (index);
}