public void MsgPublishRecieved(string siteCodeMnemonique, string jsonMessage) { ISiteRepository siteRepo = new SiteRepository(); Site siteApi = siteRepo.FindByCodeMnemonique(siteCodeMnemonique); IApiProtocol apiProtocol = null; mapLineApiProtocol.TryGetValue(siteApi.Ligne, out apiProtocol); if (apiProtocol != null) { var recievedParamValues = apiProtocol.readNewDataSiteJson(siteApi, jsonMessage); // ajout des données en base InsertPCComApiValues(recievedParamValues, siteApi); } this.UpdateSitePosition(siteCodeMnemonique, jsonMessage); }
public string GetSiteData(IList <Site> listSites) { IParamRepository paramRepo = new ParamRepository(); string ReadingFeedback = null; foreach (var site in listSites) { IApiProtocol proto = null; mapLineApiProtocol.TryGetValue(site.Ligne, out proto);//getProtocolForSite(site.Id); if (proto != null) { Thread th = Thread.CurrentThread; if (String.IsNullOrEmpty(th.Name)) { th.Name = "PCCOMApi_getSiteData_ " + site.Id; } // Insertion de traces dans la table log_application //DiagBoxApp.Instance.GetLogger("EventLogTable").Trace( // message: string.Format("Launching new thread to retrieve data from PCComApi in the thread {0}", th.Name), // categories: "DiagBox;Applications;PCCOMAPI;PCCOMAPI;SpoolerPCComApi"); // get data from last acquisition to now, if not date acquisition get from 7 days. get from 7 days max lock (proto) { var paramsValues = proto.readDataSite((site.DateAcquisition.HasValue && site.DateAcquisition.Value > DateTime.Now.AddDays(G_DAYS_BACKUP)) ? site.DateAcquisition.Value : DateTime.Now.AddDays(G_DAYS_BACKUP), DateTime.Now, site); // insertion en base dans his_valeur en HQL et 1000lignes max par requêtes bool ReadingOk = InsertPCComApiValues(paramsValues, site); if (!ReadingOk) { ReadingFeedback = "Failed"; } } } } return(ReadingFeedback); }
public void UpdateSitePosition(string siteCodeMnemonique, string jsonMessage) { ISiteRepository siteRepo = new SiteRepository(); Site siteApi = siteRepo.FindByCodeMnemonique(siteCodeMnemonique); IApiProtocol apiProtocol = null; mapLineApiProtocol.TryGetValue(siteApi.Ligne, out apiProtocol); if (apiProtocol != null) { apiProtocol.GetSitePosition(siteApi, jsonMessage); try { siteRepo.Update(siteApi); } catch { Console.WriteLine("UpdateSitePosition problème lors de l'update du site"); } } }
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); }