コード例 #1
0
        private Dictionary <string, IDataFactory> GetFactories()
        {
            Dictionary <string, IDataFactory> returnList = new Dictionary <string, IDataFactory>();
            XmlNodeList Factories = this.ConfigXML.SelectNodes("//Factories/Factory");

            foreach (XmlNode factory in Factories)
            {
                switch (factory.Attributes["Type"].Value.ToLower())
                {
                case "sql":
                    SQLDataFactory sqlf = new SQLDataFactory();
                    sqlf.Name             = factory.Attributes["Name"].Value;
                    sqlf.RefreshValues    = Convert.ToBoolean(factory.Attributes["Refresh"].Value);
                    sqlf.RefreshRate      = Convert.ToInt32(factory.Attributes["RefreshRate"].Value);
                    sqlf.ConnectionString = factory["ConnectionString"].InnerText;
                    sqlf.FillQuery        = factory["FillQuery"].InnerText;
                    returnList.Add(sqlf.Name, sqlf);
                    break;

                case "json":
                    JSONDataFactory jsonf = new JSONDataFactory();
                    jsonf.Name          = factory.Attributes["Name"].Value;
                    jsonf.RefreshValues = Convert.ToBoolean(factory.Attributes["Refresh"].Value);
                    jsonf.RefreshRate   = Convert.ToInt32(factory.Attributes["RefreshRate"].Value);
                    jsonf.LoadPath      = factory["LoadPath"].InnerText;
                    returnList.Add(jsonf.Name, jsonf);
                    break;
                }
            }

            return(returnList);
        }
コード例 #2
0
        private void SetupFactory(IDataFactory factory)
        {
            Log returnLog = new Log()
            {
                Type = LogType.Message, Source = factory.Name
            };

            try
            {
                switch (factory.Type)
                {
                case DataFactoryType.SQL:
                    SQLDataFactory sqlFac = (SQLDataFactory)factory;
                    if (sqlFac.ConnectionString.ToLower() == "{parent}")
                    {
                        sqlFac.ConnectionString = this._config.SourceConnectionString;
                    }
                    factory.Load(ref returnLog);


                    _dm.DataFactories.TryAdd(factory.Name, factory);

                    if (factory.RefreshValues)
                    {
                        Timer facTimer = new Timer(factory.RefreshRate * 1000);
                        facTimer.Elapsed  += (sender, e) => RefreshFactory(sender, e, factory);
                        facTimer.AutoReset = true;
                        facTimer.Enabled   = false;
                        facTimer.Enabled   = true;
                    }
                    break;

                case DataFactoryType.JSON:
                    JSONDataFactory jsonFac = (JSONDataFactory)factory;

                    factory.Load(ref returnLog);


                    _dm.DataFactories.TryAdd(factory.Name, factory);

                    if (factory.RefreshValues)
                    {
                        Timer facTimer = new Timer(factory.RefreshRate * 1000);
                        facTimer.Elapsed  += (sender, e) => RefreshFactory(sender, e, factory);
                        facTimer.AutoReset = true;
                        facTimer.Enabled   = false;
                        facTimer.Enabled   = true;
                    }
                    break;
                }
                returnLog.EndTime = DateTime.Now;
                returnLog.Message = "Factory added successfully";
            }
            catch (Exception ex)
            {
                returnLog.Successful = false;
                returnLog.EndTime    = DateTime.Now;
                returnLog.Message    = "Factory add failed - " + ex.Message;
            }
            Parallel.ForEach(observers, observer =>
            {
                observer.OnNext(returnLog);
            });
        }