////////////////////////////////////////////////////////////////////////
        public CFiltresDynamiquesForTables CalculeFiltresForTables()
        {
            CFiltresDynamiquesForTables filtres = new CFiltresDynamiquesForTables();

            //Crée un filtre pour chaque les tables fullsnchro
            foreach (string strNomTable in CContexteDonnee.MappeurTableToClass.GetListeTables())
            {
                Type tp = CContexteDonnee.GetTypeForTable(strNomTable);
                if (tp != null && tp.GetCustomAttributes(typeof(FullTableSyncAttribute), true).Length > 0)
                {
                    CFiltreSynchronisation filtreTableFull = new CFiltreSynchronisation(strNomTable);
                    filtreTableFull.TouteLaTable = true;
                    filtreTableFull.IsAutoAdd    = true;
                    filtreTableFull.CreateFiltreForAllParents();
                    filtreTableFull.CreateFiltreForAllCompositions();
                    filtreTableFull.FiltreDynamique = CFiltreSynchronisation.GetFiltreDynamiqueSynchro(tp);
                    filtres.AddFiltreSynchronisation(filtreTableFull);
                }
            }



            foreach (CFiltreSynchronisation filtre in m_listefiltresSynchronisation)
            {
                filtre.CalculeFiltresForTables();
                filtres.AddFiltreSynchronisation(filtre);
            }
            return(filtres);
        }
        ////////////////////////////////////////////////////////////////////////
        public CFiltreDynamique GetFiltreDynamiqueForTable(string strNomTable, ref bool bShouldSynchroniseTable)
        {
            ArrayList lst = (ArrayList)m_tableTableToFiltreSynchronisation[strNomTable];
            Type      tp  = CContexteDonnee.GetTypeForTable(strNomTable);

            if (tp != null && tp.GetCustomAttributes(typeof(FullTableSyncAttribute), true).Length > 0)
            {
                bShouldSynchroniseTable = true;
                return(null);
            }
            if (lst == null || lst.Count == 0)
            {
                bShouldSynchroniseTable = false;
                return(null);
            }
            bShouldSynchroniseTable = true;
            CFiltreDynamique filtreDynamique = CFiltreSynchronisation.GetFiltreDynamiqueSynchro(CContexteDonnee.GetTypeForTable(strNomTable));

            CComposantFiltreDynamiqueOu composantOu = new CComposantFiltreDynamiqueOu();

            foreach (CFiltreSynchronisation filtreSynchro in lst)
            {
                if (filtreSynchro.TouteLaTable || filtreSynchro.FiltreDynamique == null)
                {
                    return(null);
                }
                CFiltreDynamique filtreLocal = filtreSynchro.GetFiltreToElementPrincipal();
                if (filtreLocal != null && filtreLocal.ComposantPrincipal != null)
                {
                    composantOu.AddComposantFils(filtreLocal.ComposantPrincipal);
                }
                if (filtreLocal == null)
                {
                    return(null);
                }
            }
            if (composantOu.GetNbComposantsFils() == 0)
            {
                return(null);
            }
            if (composantOu.GetNbComposantsFils() == 1)
            {
                filtreDynamique.ComposantPrincipal = composantOu.ComposantsFils[0];
            }
            else
            {
                filtreDynamique.ComposantPrincipal = composantOu;
            }
            return(filtreDynamique);
        }