//--------------------------------------------------------------------------------- public void FillInventaireNonRecursif(object obj, CInventaire inventaire) { CObjetDonnee objetDonnee = obj as CObjetDonnee; if (objetDonnee != null) { CStructureTable structure = CStructureTable.GetStructure(objetDonnee.GetType()); if ((m_mode & EModeInventaireObjetDonneeLies.TousLesFils) != EModeInventaireObjetDonneeLies.Aucuns) { foreach (CInfoRelation relation in structure.RelationsFilles) { if (relation.Composition || (m_mode & EModeInventaireObjetDonneeLies.FilsCompositions) != EModeInventaireObjetDonneeLies.FilsCompositions) { CListeObjetsDonnees lst = objetDonnee.GetDependancesListe(relation.TableFille, relation.ChampsFille); foreach (CObjetDonnee fille in lst) { inventaire.AddObject(fille); } } } } if ((m_mode & EModeInventaireObjetDonneeLies.Parents) == EModeInventaireObjetDonneeLies.Parents) { foreach (CInfoRelation relation in structure.RelationsParentes) { CObjetDonnee parent = objetDonnee.GetParent(relation.ChampsFille, CContexteDonnee.GetTypeForTable(relation.TableParente)); if (parent != null) { inventaire.AddObject(parent); } } } foreach (IFournisseurInventaireObjetDonneeLies fournisseur in m_listeFournisseursSupplementaires) { fournisseur.FillInventaireNonRecursif(objetDonnee, inventaire, m_mode); } } else { if (obj is IUtilisateurObjetsDonnee) { CResultAErreur result = ((IUtilisateurObjetsDonnee)obj).GetObjetsUtilises(m_contexte); if (result) { foreach (CObjetDonnee objet in (CObjetDonnee[])result.Data) { inventaire.AddObject(objet); } } } } }
//---------------------------------------------------------------------------- public List <CReferenceObjetDependant> GetDependances(CEntitiesManager manager, CObjetDonnee objet) { List <CReferenceObjetDependant> lst = new List <CReferenceObjetDependant>(); if (objet == null) { return(lst); } CStructureTable structure = CStructureTable.GetStructure(objet.GetType()); foreach (CInfoRelation relation in structure.RelationsParentes) { Type tpParent = CContexteDonnee.GetTypeForTable(relation.TableParente); if (manager.ConfigurationRecherche.IsIgnore(tpParent)) { return(lst); } CObjetDonnee parent = objet.GetParent(relation.ChampsFille, tpParent); bool bHasUniversalId = tpParent.GetCustomAttribute <NoIdUniverselAttribute>(true) == null; string strNomProp = relation.NomConvivial; if (strNomProp.Length == 0) { strNomProp = DynamicClassAttribute.GetNomConvivial(tpParent); } if (parent != null) { if (bHasUniversalId) { lst.Add(new CReferenceObjetDependant(strNomProp, tpParent, parent.DbKey)); } else { lst.Add(new CReferenceObjetDependant(strNomProp, tpParent, parent.GetValeursCles())); } } } return(lst); }