//---------------------------------------------------- public void UpdateSupportants() { CLienReseau lienTimos = ObjetTimosAssocie; CListeObjetsDonnees supportants = LiaisonsSupportants; Dictionary <CSpvLiai, bool> dicSupportantsExistants = new Dictionary <CSpvLiai, bool>(); foreach (CSpvLiai_Liaic liaiC in supportants) { dicSupportantsExistants[liaiC.LiaisonSupportant] = true; } foreach (CLienReseau lienSupportant in lienTimos.LiensSupportants.ToArrayList()) { if (CanSupervise(lienSupportant)) { CSpvLiai liaiSupportant = CSpvLiai.GetSpvLiaiFromLienReseau(lienSupportant) as CSpvLiai; if (liaiSupportant == null) { liaiSupportant = CSpvLiai.GetSpvLiaiFromLienReseauAvecCreation(lienSupportant); foreach (CSpvLiai_Liaic liaiC in supportants) { dicSupportantsExistants[liaiC.LiaisonSupportant] = true; } } //Recalcule le dico, car ça a pu bouger if (liaiSupportant != null) { if (!dicSupportantsExistants.ContainsKey(liaiSupportant)) { CSpvLiai_Liaic liaic = new CSpvLiai_Liaic(ContexteDonnee); liaic.CreateNewInCurrentContexte(new object[] { Id, liaiSupportant.Id }); } else { dicSupportantsExistants[liaiSupportant] = false; } } } } //Supprime les supportants inutiles foreach (CSpvLiai_Liaic supportant in LiaisonsSupportants) { bool bDelete; if (dicSupportantsExistants.TryGetValue(supportant.LiaisonSupportant, out bDelete)) { if (bDelete) { supportant.Delete(true); } } } }
//---------------------------------------------------- public void UpdateSupportés() { CLienReseau lienTimos = ObjetTimosAssocie; CListeObjetsDonnees supportés = LiaisonsSupportées; Dictionary <CSpvLiai, bool> dicSupportésExistants = new Dictionary <CSpvLiai, bool>(); foreach (CSpvLiai_Liaic liaiC in supportés) { dicSupportésExistants[liaiC.LiaisonSupportee] = true; } foreach (CLienReseau lienSupporté in lienTimos.LiensSupportes.ToArrayList()) { if (CanSupervise(lienSupporté)) { CSpvLiai liaiSupportée = CSpvLiai.GetSpvLiaiFromLienReseau(lienSupporté) as CSpvLiai; if (liaiSupportée == null) { liaiSupportée = CSpvLiai.GetSpvLiaiFromLienReseauAvecCreation(lienSupporté); foreach (CSpvLiai_Liaic liaiC in supportés) { dicSupportésExistants[liaiC.LiaisonSupportee] = true; } } if (liaiSupportée != null) { if (!dicSupportésExistants.ContainsKey(liaiSupportée)) { CSpvLiai_Liaic liaic = new CSpvLiai_Liaic(ContexteDonnee); liaic.CreateNewInCurrentContexte(new object[] { liaiSupportée.Id, Id }); } else { dicSupportésExistants[liaiSupportée] = false; } } } } //Supprime les supportés inutiles foreach (CSpvLiai_Liaic supporté in LiaisonsSupportées) { bool bDelete; if (dicSupportésExistants.TryGetValue(supporté.LiaisonSupportee, out bDelete)) { if (bDelete) { supporté.Delete(true); } } } }