Пример #1
0
        public string ApplyUpdates(Delta delta)
        {
            string updateResult = "Apply Updates Report:\r\n";

            System.Globalization.CultureInfo culture = Thread.CurrentThread.CurrentCulture;
            Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

            if ((delta != null) && (delta.NumberOfOperations != 0))
            {
                _networkModelServiceProxy = new NetworkModelServiceProxy(ConfigurationManager.AppSettings["NMS"]);
                updateResult = _networkModelServiceProxy.ApplyDelta(delta).ToString();
                _networkModelServiceProxy = null;
            }

            Thread.CurrentThread.CurrentCulture = culture;
            return(updateResult);
        }
Пример #2
0
        public async Task <bool> ModelUpdate(AffectedEntities model)
        {
            ServiceEventSource.Current.ServiceMessage(_context, "CE ModelUpdate!");
            var proxy   = new NetworkModelServiceProxy(ConfigurationReader.ReadValue(_context, "Settings", "NMS") ?? "net.tcp://localhost:22330/NetworkModelServiceSF");
            var storage = new CEStorageProxy(ConfigurationReader.ReadValue(_context, "Settings", "CES") ?? "fabric:/ServiceFabricApp/CEStorageService");
            var ceModel = await storage.GetModel();

            if (ceModel == null)
            {
                ceModel = new Dictionary <DMSType, Container>();
            }
            Console.WriteLine("New update request!");
            model.Insert = model.Insert.Where(x => GetDMSType(x) == DMSType.ASYNCHRONOUSMACHINE).ToList();
            model.Update = model.Update.Where(x => GetDMSType(x) == DMSType.ASYNCHRONOUSMACHINE).ToList();
            model.Delete = model.Delete.Where(x => GetDMSType(x) == DMSType.ASYNCHRONOUSMACHINE).ToList();
            if (model.Insert.Count > 0)
            {
                var dataInsert = await proxy.GetValues(model.Insert);

                foreach (var item in dataInsert)
                {
                    var dmsType = GetDMSType(item.GID);
                    if (!ceModel.ContainsKey(dmsType))
                    {
                        ceModel.Add(dmsType, new Container());
                    }
                    ceModel[dmsType].AddEntity(item);
                }
            }

            if (model.Update.Count > 0)
            {
                var dataUpdate = await proxy.GetValues(model.Update);

                foreach (var item in dataUpdate)
                {
                    var dmsType = GetDMSType(item.GID);
                    if (!ceModel.ContainsKey(dmsType))
                    {
                        ceModel.Add(dmsType, new Container());
                    }
                    ceModel[dmsType].RemoveEntity(item.GID);
                    ceModel[dmsType].AddEntity(item);
                }
            }

            if (model.Delete.Count > 0)
            {
                var dataDelete = await proxy.GetValues(model.Delete);

                foreach (var item in dataDelete)
                {
                    var dmsType = GetDMSType(item.GID);
                    if (!ceModel.ContainsKey(dmsType))
                    {
                        ceModel.Add(dmsType, new Container());
                    }
                    ceModel[dmsType].RemoveEntity(item.GID);
                }
            }

            await storage.SetTransactionalModel(ceModel);

            EnList();
            return(true);
        }
Пример #3
0
        public async Task <bool> ModelUpdate(AffectedEntities model)
        {
            ServiceEventSource.Current.ServiceMessage(_context, "NDS - ModelUpdate");
            var nms = new NetworkModelServiceProxy(ConfigurationReader.ReadValue(_context, "Settings", "NMS") ?? "net.tcp://localhost:22330/NetworkModelServiceSF");
            ScadaStorageProxy storage = new ScadaStorageProxy(ConfigurationReader.ReadValue(_context, "Settings", "Storage"));
            var cimModel = await storage.GetCimModel();

            if (cimModel == null)
            {
                cimModel = new Dictionary <DMSType, Container>();
            }

            model.Insert = model.Insert.Where(x => this.GetDMSType(x) == DMSType.ANALOG || this.GetDMSType(x) == DMSType.DISCRETE ||
                                              this.GetDMSType(x) == DMSType.BREAKER || this.GetDMSType(x) == DMSType.DISCONNECTOR).ToList();
            model.Update = model.Update.Where(x => this.GetDMSType(x) == DMSType.ANALOG || this.GetDMSType(x) == DMSType.DISCRETE ||
                                              this.GetDMSType(x) == DMSType.BREAKER || this.GetDMSType(x) == DMSType.DISCONNECTOR).ToList();
            model.Delete = model.Delete.Where(x => this.GetDMSType(x) == DMSType.ANALOG || this.GetDMSType(x) == DMSType.DISCRETE ||
                                              this.GetDMSType(x) == DMSType.BREAKER || this.GetDMSType(x) == DMSType.DISCONNECTOR).ToList();

            if (model.Insert.Count > 0)
            {
                var dataInsert = await nms.GetValues(model.Insert);

                foreach (var item in dataInsert)
                {
                    var dmsType = GetDMSType(item.GID);
                    if (!cimModel.ContainsKey(dmsType))
                    {
                        cimModel.Add(dmsType, new Container());
                    }
                    cimModel[dmsType].AddEntity(item);
                }
            }
            if (model.Update.Count > 0)
            {
                var dataUpdate = await nms.GetValues(model.Update);

                foreach (var item in dataUpdate)
                {
                    var dmsType = GetDMSType(item.GID);
                    if (!cimModel.ContainsKey(dmsType))
                    {
                        cimModel.Add(dmsType, new Container());
                    }
                    cimModel[dmsType].RemoveEntity(item.GID);
                    cimModel[dmsType].AddEntity(item);
                }
            }
            if (model.Delete.Count > 0)
            {
                var dataDelete = await nms.GetValues(model.Delete);

                foreach (var item in dataDelete)
                {
                    var dmsType = GetDMSType(item.GID);
                    if (!cimModel.ContainsKey(dmsType))
                    {
                        cimModel.Add(dmsType, new Container());
                    }
                    cimModel[dmsType].RemoveEntity(item.GID);
                }
            }

            await storage.SetCimModel(cimModel);

            EnList();
            return(true);
        }