//------------------------------------------------------- public COptionRechercheType GetOption(Type tp) { COptionRechercheType option = null; m_dicTypesAOption.TryGetValue(tp, out option); return(option); }
//------------------------------------------------------- public void AddOption(COptionRechercheType option) { if (option != null && option.Type != null) { m_dicTypesAOption[option.Type] = option; m_setTypesIgnores.Remove(option.Type); } }
//----------------------------------------------------------------------------------- public List <CReferenceObjetDependant> GetAllDependances(IEnumerable <CObjetDonnee> lstObjets, OnFournisseurTermine funcOnEachFournisseur) { HashSet <CReferenceObjetDependant> setDependances = new HashSet <CReferenceObjetDependant>(); HashSet <CReferenceObjetDonnee> setExplores = new HashSet <CReferenceObjetDonnee>(); HashSet <CReferenceObjetDonnee> objetsToExplore = new HashSet <CReferenceObjetDonnee>(); foreach (CObjetDonnee objet in lstObjets) { objetsToExplore.Add(new CReferenceObjetDonnee(objet)); } while (objetsToExplore.Count > 0) { HashSet <CReferenceObjetDonnee> newToDo = new HashSet <CReferenceObjetDonnee>(); foreach (CReferenceObjetDonnee refToDo in objetsToExplore) { if (!setExplores.Contains(refToDo.GetCloneReferenceObjetDonnee())) { setExplores.Add(refToDo.GetCloneReferenceObjetDonnee()); CObjetDonnee objetToExplore = refToDo.GetObjet(lstObjets.ElementAt(0).ContexteDonnee); m_indicateurProgression.SetInfo(I.T("Exploring @1|20016", objetToExplore.DescriptionElement)); foreach (Type tpFournisseur in m_listeFournisseurs) { IFournisseurDependancesObjetDonnee fournisseur = Activator.CreateInstance(tpFournisseur) as IFournisseurDependancesObjetDonnee; HashSet <CReferenceObjetDependant> setDeFournisseur = new HashSet <CReferenceObjetDependant>(); foreach (CReferenceObjetDependant reference in fournisseur.GetDependances(this, objetToExplore)) { CReferenceObjetDonnee rf = reference.GetCloneReferenceObjetDonnee(); if (!setExplores.Contains(rf)) { COptionRechercheType option = ConfigurationRecherche.GetOption(rf.TypeObjet); if (option != null && option.RecursiveSearch) { newToDo.Add(rf); } } if (!setDependances.Contains(reference)) { setDependances.Add(reference); setDeFournisseur.Add(reference); } } if (funcOnEachFournisseur != null) { funcOnEachFournisseur(setDeFournisseur); } } } } objetsToExplore = newToDo; } List <CReferenceObjetDependant> lst = new List <CReferenceObjetDependant>(); foreach (CReferenceObjetDependant reference in setDependances) { lst.Add(reference); } return(lst); }