Author: kostat
Date: 2006-05-25 11:49:21 -0400 (Thu, 25 May 2006)
New Revision: 61113

Modified:
   
branches/mainsoft/gh1.7/mcs/class/System.Data/Mainsoft.Data.Jdbc.Providers.jvm/IProvider.cs
   
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbConnection.cs
   
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.ProviderBase.jvm/AbstractDBConnection.cs
   
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.SqlClient.jvm/SqlConnection.cs
Log:
1. Support multiple providers for SqlClient.
2. Add possibility to choose provider from SqlClient by adding "Provider=" to 
connection string.
3. Unify id and provider parameters; use id for provider name everywhere.



Modified: 
branches/mainsoft/gh1.7/mcs/class/System.Data/Mainsoft.Data.Jdbc.Providers.jvm/IProvider.cs
===================================================================
--- 
branches/mainsoft/gh1.7/mcs/class/System.Data/Mainsoft.Data.Jdbc.Providers.jvm/IProvider.cs
 2006-05-25 15:48:16 UTC (rev 61112)
+++ 
branches/mainsoft/gh1.7/mcs/class/System.Data/Mainsoft.Data.Jdbc.Providers.jvm/IProvider.cs
 2006-05-25 15:49:21 UTC (rev 61113)
@@ -48,7 +48,7 @@
 
                #region Consts
 
-               public const string Name = "Provider";
+               public const string Name = "id";
                public const string KeyMapping = "keyMapping";
                public const string KeyMappingExcludes = "keyExclude";
                public const string JdbcUrlPattern = "url";

Modified: 
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbConnection.cs
===================================================================
--- 
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbConnection.cs
      2006-05-25 15:48:16 UTC (rev 61112)
+++ 
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbConnection.cs
      2006-05-25 15:49:21 UTC (rev 61113)
@@ -46,12 +46,7 @@
 namespace System.Data.OleDb
 {
        public sealed class OleDbConnection : AbstractDBConnection {
-               #region Fields 
 
-               static readonly IList _providers = (IList) 
ConfigurationSettings.GetConfig("Mainsoft.Data.Configuration/OleDbProviders");
-
-               #endregion //Fields
-
                #region Events
 
                public event OleDbInfoMessageEventHandler InfoMessage;
@@ -84,22 +79,11 @@
 
                protected override IConnectionProvider GetConnectionProvider() {
                        IDictionary conProviderDict = 
ConnectionStringDictionary.Parse(ConnectionString);
-                       string providerName = 
(string)conProviderDict["Provider"];
-
-                       if (providerName != null)
-                       for (int i = 0; i < _providers.Count; i++) {
-                               IDictionary providerInfo = (IDictionary) 
_providers[i];
-                                       
-                               string curProvider = 
(string)providerInfo["Provider"];
-                               if (String.Compare(providerName, 0, 
curProvider, 0, providerName.Length, true, CultureInfo.InvariantCulture) == 0) {
-                                       string providerType = (string) 
providerInfo [ConfigurationConsts.ProviderType];
-                                       if (providerType == null || 
providerType.Length == 0)
-                                               return new GenericProvider 
(providerInfo); 
-                                       else {
-                                               Type t = Type.GetType 
(providerType);
-                                               return (IConnectionProvider) 
Activator.CreateInstance (t , new object[] {providerInfo});
-                                       }
-                               }
+                       string jdbcUrl = (string)conProviderDict["JdbcUrl"];
+                       if (jdbcUrl == null) {
+                               string provider = 
(string)conProviderDict["Provider"];
+                               if (provider != null)
+                                       return 
GetConnectionProvider("Mainsoft.Data.Configuration/OleDbProviders", provider);
                        }
 
                        return new GenericProvider (conProviderDict);

Modified: 
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.ProviderBase.jvm/AbstractDBConnection.cs
===================================================================
--- 
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.ProviderBase.jvm/AbstractDBConnection.cs
  2006-05-25 15:48:16 UTC (rev 61112)
+++ 
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.ProviderBase.jvm/AbstractDBConnection.cs
  2006-05-25 15:49:21 UTC (rev 61113)
@@ -29,7 +29,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-
+using System.Globalization;
 using System.Data;
 using System.Data.ProviderBase;
 using System.Data.Configuration;
@@ -361,6 +361,33 @@
                }
                protected abstract IConnectionProvider GetConnectionProvider();
 
+               static protected IConnectionProvider 
GetConnectionProvider(string sectionMame, string provider) {
+                       if (provider == null)
+                               throw new ArgumentNullException("provider");
+
+                       IList providers = (IList) 
ConfigurationSettings.GetConfig(sectionMame);
+                       if (providers.Count == 0)
+                               throw new ArgumentException("Configuration 
section is empty.", "sectionName");
+
+                       for (int i = 0; i < providers.Count; i++) {
+                               IDictionary providerInfo = (IDictionary) 
providers[i];
+                                       
+                               string curProvider = 
(string)providerInfo[ConfigurationConsts.Name];
+                               if (String.Compare(provider, 0, curProvider, 0, 
provider.Length, true, CultureInfo.InvariantCulture) == 0) {
+                                       string providerType = (string) 
providerInfo [ConfigurationConsts.ProviderType];
+                                       if (providerType == null || 
providerType.Length == 0)
+                                               return new GenericProvider 
(providerInfo); 
+                                       else {
+                                               Type t = Type.GetType 
(providerType);
+                                               return (IConnectionProvider) 
Activator.CreateInstance (t , new object[] {providerInfo});
+                                       }
+                               }
+                       }
+
+                       throw new ArgumentException(
+                               String.Format("Unknown provider name '{0}'", 
provider), "ConnectionString");
+               }
+
                #endregion // Properties
 
                #region Methods

Modified: 
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.SqlClient.jvm/SqlConnection.cs
===================================================================
--- 
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.SqlClient.jvm/SqlConnection.cs
    2006-05-25 15:48:16 UTC (rev 61112)
+++ 
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.SqlClient.jvm/SqlConnection.cs
    2006-05-25 15:49:21 UTC (rev 61113)
@@ -48,23 +48,10 @@
 
                private const int DEFAULT_PACKET_SIZE = 8192;
 
-               static readonly IConnectionProvider _connectionProvider;
-
                #endregion // Fields
 
                #region Constructors
 
-               static SqlConnection() {
-                       IDictionary providerInfo = (IDictionary)((IList) 
ConfigurationSettings.GetConfig("Mainsoft.Data.Configuration/SqlClientProvider"))[0];
-                       string providerType = (string) providerInfo 
[ConfigurationConsts.ProviderType];
-                       if (providerType == null || providerType.Length == 0)
-                               _connectionProvider = new GenericProvider 
(providerInfo); 
-                       else {
-                               Type t = Type.GetType (providerType);
-                               _connectionProvider = (IConnectionProvider) 
Activator.CreateInstance (t , new object[] {providerInfo});
-                       }
-               }
-
                public SqlConnection() : this(null)
                {
                }
@@ -114,7 +101,12 @@
                }
 
                protected override IConnectionProvider GetConnectionProvider() {
-                       return _connectionProvider;
+                       IDictionary conProviderDict = 
ConnectionStringDictionary.Parse(ConnectionString);
+                       string provider = (string)conProviderDict["Provider"];
+                       if (provider == null)
+                               provider = "SQLCLIENT";
+
+                       return 
GetConnectionProvider("Mainsoft.Data.Configuration/SqlClientProviders", 
provider);
                }
 
                #endregion // Properties

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to