public IDictionary <OperationCyclique, IList <Site> > initialize(SessionManager sessionMngr) { IEnumerable <Ligne> listApiLigne = getAllApiLine(); IProtocoleRepository protocoleRepo = new ProtocoleRepository(); ISiteRepository siteRepo = new SiteRepository(); mapLineApiProtocol = new Dictionary <Ligne, IApiProtocol>(); //mapSiteOperationCyclique = new Dictionary<Site, IList<OperationCyclique>>(); mapOperationCycliqueSites = new Dictionary <OperationCyclique, IList <Site> >(new comparerOperationCyclique()); foreach (var apiLine in listApiLigne) { var proto = protocoleRepo.FindById(apiLine.Protocole.Id); //1- obtention du apiprotocol par ligne //swich case en fonction du protocol -> créer le bon api protocol IApiProtocol pProtocol = null; switch (proto.Nom.ToLower()) { case "xilog": pProtocol = new ApiProtocolXilog("http://decode.primayer.com/api/xilog/"); // 190415 EC en dur break;; case "easeegiot": var connexion = new ApiConnexionMQTTMngr(apiLine.apiUrl, apiLine.apiPort, apiLine.apiUsername, apiLine.apiPassword, this); pProtocol = new ApiProtocolEaseEGIot(connexion); connexion.Subscribe(siteRepo.FindByIdLine(apiLine.Id)); break;; case "meteoidex": pProtocol = new ApiProtocolMeteoIDEX("https://api.idex.fr/engine54/52/PortailJSON?flowName=Flux113_REFER_ListeDju&flowType=EAII&actionJSON=launch"); // 190509 EC en dur break;; } if (pProtocol != null) { mapLineApiProtocol.Add(apiLine, pProtocol); } }// rof each line // 2- obtention de l'opération cyclique par site -- MAJ otention des sites par opération cyclique var listOC = getAllOperationCyclique(); foreach (var cyclicOperation in listOC) { // vérifie que l'opération cyclique est sur un site api if (listApiLigne.Where(x => x.Id == cyclicOperation.Site.Ligne.Id).FirstOrDefault() != null) { if (mapOperationCycliqueSites.ContainsKey(cyclicOperation) == false) { mapOperationCycliqueSites.Add(cyclicOperation, new List <Site>()); } mapOperationCycliqueSites[cyclicOperation].Add(cyclicOperation.Site); } } // retourne le dictionnaire OC : list<site> return(mapOperationCycliqueSites); }