Beispiel #1
0
        public IEnumerable <Lpp.Dns.DataMart.Lib.PropertyData> GetSettings()
        {
            Lpp.Dns.DataMart.Model.Settings.SQLProvider sqlProvider = (Lpp.Dns.DataMart.Model.Settings.SQLProvider)cmbDataProvider.SelectedItem;
            bool isODBC   = sqlProvider == Model.Settings.SQLProvider.ODBC;
            bool isOracle = sqlProvider == Model.Settings.SQLProvider.Oracle;

            List <Lpp.Dns.DataMart.Lib.PropertyData> settings = new List <DataMart.Lib.PropertyData>();

            settings.Add(new DataMart.Lib.PropertyData("DataProvider", sqlProvider.ToString()));
            settings.Add(new DataMart.Lib.PropertyData("Server", isODBC ? string.Empty : txtServer.Text.Trim()));
            settings.Add(new DataMart.Lib.PropertyData("Port", isODBC ? string.Empty : txtPort.Text.Trim()));
            settings.Add(new DataMart.Lib.PropertyData("UserID", isODBC ? string.Empty : txtUserID.Text.Trim()));
            settings.Add(new DataMart.Lib.PropertyData("Password", isODBC ? string.Empty : txtPassword.Text.Trim()));
            settings.Add(new DataMart.Lib.PropertyData("Database", isODBC ? string.Empty : txtDatabase.Text.Trim()));
            settings.Add(new DataMart.Lib.PropertyData("DataSourceName", isODBC ? cmbDataSourceName.SelectedItem.ToString() : string.Empty));
            settings.Add(new DataMart.Lib.PropertyData("ConnectionTimeout", txtConnectionTimeout.Value.ToString()));
            settings.Add(new DataMart.Lib.PropertyData("CommandTimeout", txtCommandTimeout.Value.ToString()));

            return(settings);
        }
Beispiel #2
0
        public static QueryComposer.Adapters.PCORI.PCORIModelAdapter CreatePCORIModelAdapterAdapter(string connectionString, Lpp.Dns.DataMart.Model.Settings.SQLProvider sqlProvider, string schema = null)
        {
            Dictionary <string, object> adapterSettings;

            if (sqlProvider == Settings.SQLProvider.SQLServer)
            {
                var connectionStringBuilder = new System.Data.SqlClient.SqlConnectionStringBuilder(connectionString);
                adapterSettings = new Dictionary <string, object>()
                {
                    { "Server", connectionStringBuilder.DataSource },
                    { "UserID", connectionStringBuilder.UserID },
                    { "Password", connectionStringBuilder.Password },
                    { "Database", connectionStringBuilder.InitialCatalog },
                    { "DataProvider", sqlProvider.ToString() }
                };
            }
            else if (sqlProvider == Settings.SQLProvider.PostgreSQL)
            {
                var postgresConnectionStringBuilder = new Npgsql.NpgsqlConnectionStringBuilder(connectionString);

                adapterSettings = new Dictionary <string, object>()
                {
                    { "Server", postgresConnectionStringBuilder.Host },
                    { "Port", postgresConnectionStringBuilder.Port.ToString() },
                    { "UserID", postgresConnectionStringBuilder.Username },
                    //{"Password", System.Text.Encoding.UTF8.GetString(postgresConnectionStringBuilder.PasswordAsByteArray) },
                    { "Password", postgresConnectionStringBuilder.Password },
                    { "Database", postgresConnectionStringBuilder.Database },
                    { "ConnectionTimeout", postgresConnectionStringBuilder.Timeout.ToString() },
                    { "CommandTimeout", postgresConnectionStringBuilder.CommandTimeout.ToString() },
                    { "DatabaseSchema", schema },
                    { "DataProvider", sqlProvider.ToString() }
                };
            }
            else if (sqlProvider == Settings.SQLProvider.Oracle)
            {
                var oracleConnectionStringBuilder = new Oracle.ManagedDataAccess.Client.OracleConnectionStringBuilder(connectionString);
                adapterSettings = new Dictionary <string, object>()
                {
                    { "Server", "" },
                    { "Port", "" },
                    { "Database", "" },
                    { "UserID", oracleConnectionStringBuilder.UserID },
                    { "Password", oracleConnectionStringBuilder.Password },
                    { "DataProvider", sqlProvider.ToString() },
                    { "DatabaseSchema", schema }
                };

                //(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST={server address})(PORT=1521))(CONNECT_DATA=(SERVICE_NAME={service name})))
                System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"\((?:[\w|\=|\.]+)\)");
                var matches = regex.Matches(oracleConnectionStringBuilder.DataSource);
                foreach (var m in matches)
                {
                    string   capture = m.ToString();
                    string[] split   = capture.Substring(1, capture.Length - 2).Split(new[] { '=' });
                    if (string.Equals("HOST", split[0], StringComparison.OrdinalIgnoreCase))
                    {
                        adapterSettings["Server"] = split[1];
                    }
                    else if (string.Equals("PORT", split[0], StringComparison.OrdinalIgnoreCase))
                    {
                        adapterSettings["Port"] = split[1];
                    }
                    else if (string.Equals("SERVICE_NAME", split[0], StringComparison.OrdinalIgnoreCase))
                    {
                        adapterSettings["Database"] = split[1];
                    }
                }
            }
            else
            {
                throw new NotImplementedException("Support for parsing configuration string into adapter settings not completed yet.");
            }

            var adapter = new QueryComposer.Adapters.PCORI.PCORIModelAdapter(new RequestMetadata
            {
                CreatedOn   = DateTime.UtcNow,
                MSRequestID = "Unit Test Request"
            });

            adapter.Initialize(adapterSettings, Guid.NewGuid().ToString("D"));
            return(adapter);
        }