AdoAdapters.AdoOutputAdapter.Initialize C# (CSharp) Method

Initialize() public method

Initializes this AdoOutputAdapter.
public Initialize ( ) : void
return void
        public override void Initialize()
        {
            base.Initialize();

            Dictionary<string, string> settings = Settings;
            Type measurementType = typeof(IMeasurement);
            IEnumerable<string> measurementProperties = GetAllProperties(measurementType).Select(property => property.Name);
            StringComparison ignoreCase = StringComparison.CurrentCultureIgnoreCase;
            string setting;

            // Parse database field names from the connection string.
            foreach (string key in settings.Keys)
            {
                if (key.EndsWith("FieldName", ignoreCase))
                {
                    int fieldNameIndex = key.LastIndexOf("FieldName", ignoreCase);
                    string subKey = key.Substring(0, fieldNameIndex);
                    string propertyName = measurementProperties.FirstOrDefault(name => name.Equals(subKey, ignoreCase));
                    string fieldName = settings[key];

                    if (propertyName != null)
                    {
                        m_fieldNames[fieldName] = propertyName;
                        m_fieldList.Add(fieldName);
                    }
                    else
                    {
                        OnProcessException(MessageLevel.Warning, new ArgumentException($"Measurement property not found: {subKey}"));
                    }
                }
            }

            // If the user hasn't entered any field names, enter the default field names.
            if (m_fieldNames.Count == 0)
            {
                m_fieldNames.Add("TAG", "TagName");
                m_fieldNames.Add("TIME", "Timestamp");
                m_fieldNames.Add("VALUE", "Value");
            }

            // Get table name or default to PICOMP.
            if (!settings.TryGetValue("tableName", out m_dbTableName))
                m_dbTableName = "PICOMP";

            // Get database connection string or default to empty.
            if (!settings.TryGetValue("dbConnectionString", out m_dbConnectionString))
                m_dbConnectionString = string.Empty;

            m_isJetEngine = m_dbConnectionString.Contains("Microsoft.Jet.OLEDB");

            // Get data provider string or default to a generic ODBC connection.
            if (!settings.TryGetValue("dataProviderString", out m_dataProviderString))
                m_dataProviderString = "AssemblyName={System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089}; ConnectionType=System.Data.Odbc.OdbcConnection; AdapterType=System.Data.Odbc.OdbcDataAdapter";

            // Get timestamp format or default to "dd-MMM-yyyy HH:mm:ss.fff".
            if (!settings.TryGetValue("timestampFormat", out m_timestampFormat))
                m_timestampFormat = "dd-MMM-yyyy HH:mm:ss.fff";
            else
            {
                // Null timestamp format means output as ticks.
                if (m_timestampFormat.Equals("null", ignoreCase))
                    m_timestampFormat = null;
            }

            // Get bulk insert limit
            if (settings.TryGetValue("bulkInsertLimit", out setting))
                m_bulkInsertLimit = int.Parse(setting);
            else
                m_bulkInsertLimit = 1024;

            // Create a new database connection object.
            Dictionary<string, string> dataProviderSettings = m_dataProviderString.ParseKeyValuePairs();
            Assembly assm = Assembly.Load(dataProviderSettings["AssemblyName"]);
            Type connectionType = assm.GetType(dataProviderSettings["ConnectionType"]);
            m_connection = (IDbConnection)Activator.CreateInstance(connectionType);
            m_connection.ConnectionString = m_dbConnectionString;
            m_isOracle = m_connection.GetType().Name == "OracleConnection";
        }