public void TestSectorizationModel() { SectMap map1 = new SectMap() { { "001", 1 }, { "002", 2 }, { "003", 3 }, }; SectMap map2 = new SectMap() { { "011", 11 }, { "012", 12 }, { "013", 13 }, { "014", 15 }, }; SectorizationPersistence.Set("map1", map1); SectorizationPersistence.Set("map2", map2); SectorizationPersistence.Set("map3", map2); SectorizationPersistence.Get("map3", (date, map) => { }); SectorizationPersistence.Sanitize(new List <string>() { "map1", "map3" }); }
public void MergeSectorization(SectMap map) { foreach (var item in map) { sectorization[item.Key] = item.Value; } SectorizationPersistence.Set(Cfg.Id, sectorization); LastChange = DateTime.Now; }
public DependencyControl(string id) { Cfg = null; Manager = null; Activity = false; Id = id; SectorizationPersistence.Get(id, (date, data) => { LastChange = date; sectorization = data; }); }
protected bool ConfigureService() { Logger.Info <SactaProxy>("Configurando Servicio"); cfgManager.Get((cfg => { // Se utiliza 'siempre' version 0 para CD30 y version 1 para ULISES. cfg.ProtocolVersion = Properties.Settings.Default.ScvType; History.Configure(cfg.General.HistoryMaxDays, cfg.General.HistoryMaxItems); Managers.Clear(); cfg.Psi.Sectorization.Positions = ""; cfg.Psi.Sectorization.Sectors = ""; cfg.Psi.Sectorization.Virtuals = ""; var manager = new PsiManager(cfg.ProtocolVersion, cfg.Psi, () => History); manager.EventActivity += OnPsiEventActivity; manager.EventSectRequest += OnPsiEventSectorizationAsk; Managers.Add(new DependencyControl(cfg.Psi.Id) { IsMain = true, Cfg = cfg.Psi, Manager = manager }); cfg.Dependencies.ForEach(dep => { var dependency = new ScvManager(cfg.ProtocolVersion, dep, () => History); dependency.EventActivity += OnScvEventActivity; dependency.EventSectorization += OnScvEventSectorization; /** Construyendo la configuracion de Sectorizacion general */ var sectorsMap = dep.Sectorization.SectorsMap.Split(',') .Where(i => Configuration.MapOfSectorsEntryValid(i)) .ToDictionary(k => int.Parse(k.Split(':')[0]), v => int.Parse(v.Split(':')[1])); var positionsMap = dep.Sectorization.PositionsMap.Split(',') .Where(i => Configuration.MapOfSectorsEntryValid(i)) .ToDictionary(k => int.Parse(k.Split(':')[0]), v => int.Parse(v.Split(':')[1])); var virtuals = Configuration.ListString2String( dep.Sectorization.VirtualsList() .Select(v => sectorsMap.Keys.Contains(v) ? sectorsMap[v].ToString() : v.ToString()) .ToList()); var reals = String.Join(",", dep.Sectorization.SectorsList() .Select(r => sectorsMap.Keys.Contains(r) ? sectorsMap[r].ToString() : r.ToString()) .ToList()); //.Aggregate((i, j) => i + "," + j.ToString()); var positions = String.Join(",", dep.Sectorization.PositionsList() .Select(p => positionsMap.Keys.Contains(p) ? positionsMap[p].ToString() : p.ToString()) .ToList()); //.Aggregate((i, j) => i + "," + j.ToString()); cfg.Psi.Sectorization.Positions = Configuration.AgreggateString(cfg.Psi.Sectorization.Positions, positions); cfg.Psi.Sectorization.Virtuals = Configuration.AgreggateString(cfg.Psi.Sectorization.Virtuals, virtuals); cfg.Psi.Sectorization.Sectors = Configuration.AgreggateString(cfg.Psi.Sectorization.Sectors, reals); Managers.Add(new DependencyControl(dep.Id) { IsMain = false, Cfg = dep, Manager = dependency, SectorsMap = sectorsMap, PositionsMap = positionsMap }); }); /** Test de la configuracion que maneja la PSI, que debe coincidir con la configurada en BD */ SectorizationHelper.CompareWithDb(cfg.Psi.Sectorization.Positions, cfg.Psi.Sectorization.Sectors, cfg.Psi.Sectorization.Virtuals, (error) => { // Marcar el Warning... PS.SignalWarning <SactaProxy>($"Incoherencia de Configuración con Base de Datos: {error}", History); }); /** */ var ids = cfg.Dependencies.Select(d => d.Id).ToList(); ids.Add(cfg.Psi.Id); SectorizationPersistence.Sanitize(ids); Cfg = cfg; cfgManager.Write(Cfg); Logger.Info <SactaProxy>("Servicio Configurado..."); })); return(true); }