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 string[] BuildSQLQueries(Guid requestTypeId, string argsXml, bool isMetadataRequest, Lpp.Dns.DataMart.Model.Settings.SQLProvider provider)
        {
            var templateName = requestTypeQueryTemplate[requestTypeId];

            if (provider == Lpp.Dns.DataMart.Model.Settings.SQLProvider.SQLServer && SQLOverrides.Contains(templateName))
            {
                templateName = templateName.Replace(".txt", ".SQLtxt");
            }

            using (StreamReader r = new StreamReader(this.GetType().Assembly.GetManifestResourceStream(templateName)))
            {
                string template = RemoveComments(r.ReadToEnd());

                XmlSerializer serializer = new XmlSerializer(typeof(SummaryRequestModel));
                using (XmlTextReader reader = new XmlTextReader(new MemoryStream(Encoding.UTF8.GetBytes(argsXml))))
                {
                    SummaryRequestModel deserializedModel = (SummaryRequestModel)serializer.Deserialize(reader);
                    //var q = isMetadataRequest ? template : MergeSQL(requestTypeId, template, requestTypeQueryTemplate[requestTypeId], deserializedModel);
                    var q = isMetadataRequest ? template :
                            IsMFU(requestTypeId) ? MergeSQLForMFU(requestTypeId, template, requestTypeQueryTemplate[requestTypeId], deserializedModel) :
                            MergeSQLNonMFU(requestTypeId, template, requestTypeQueryTemplate[requestTypeId], deserializedModel);
                    return(q.Split(queryDelimiters, StringSplitOptions.None));
                }
            }
        }
Beispiel #3
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);
        }