/// ///////////////////////////////////////////////
 public override bool InsertComposantFils(CComposantFiltreDynamique composant, int nIndex)
 {
     if (nIndex >= m_listeComposantsFils.Count)
     {
         return(AddComposantFils(composant));
     }
     m_listeComposantsFils.Insert(nIndex, composant);
     return(true);
 }
        /// ///////////////////////////////////////////////////
        public override CResultAErreur GetComposantFiltreData(CFiltreDynamique filtre, CFiltreData filtreData)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                if (m_listeComposantsFils.Count < 1)
                {
                    return(result);
                }
                result = ((CComposantFiltreDynamique)m_listeComposantsFils[0]).GetComposantFiltreData(filtre, filtreData);
                if (!result)
                {
                    result.EmpileErreur(I.T("Error in element @1|136", ((CComposantFiltreDynamique)m_listeComposantsFils[0]).Description));
                    result.Data = null;
                    return(result);
                }
                CComposantFiltre composantAvant = (CComposantFiltre)result.Data;
                for (int nComposant = 1; nComposant < m_listeComposantsFils.Count; nComposant++)
                {
                    CComposantFiltreDynamique composantDynamique = (CComposantFiltreDynamique)m_listeComposantsFils[nComposant];
                    result = composantDynamique.GetComposantFiltreData(filtre, filtreData);
                    if (!result)
                    {
                        result.EmpileErreur(I.T("Error in element @1|136", ((CComposantFiltreDynamique)m_listeComposantsFils[nComposant]).Description));
                        result.Data = null;
                        return(result);
                    }
                    if (result.Data != null)
                    {
                        if (composantAvant != null)
                        {
                            CComposantFiltreOperateur parenthesesNew = new CComposantFiltreOperateur(CComposantFiltreOperateur.c_IdOperateurParentheses);
                            CComposantFiltreOperateur parenthesesOld = new CComposantFiltreOperateur(CComposantFiltreOperateur.c_IdOperateurParentheses);
                            parenthesesNew.Parametres.Add(result.Data);
                            parenthesesOld.Parametres.Add(composantAvant);
                            CComposantFiltreOperateur operateur = new CComposantFiltreOperateur(GetIdComposantFiltreOperateur());
                            operateur.Parametres.Add(parenthesesOld);
                            operateur.Parametres.Add(parenthesesNew);
                            composantAvant = operateur;
                        }
                        else
                        {
                            composantAvant = (CComposantFiltre)result.Data;
                        }
                    }
                }
                result.Data = composantAvant;
                return(result);
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
                return(result);
            }
        }
 /// ///////////////////////////////////////////////
 public override int RemoveComposantFils(CComposantFiltreDynamique composant)
 {
     try
     {
         int nIndex = m_listeComposantsFils.IndexOf(composant);
         m_listeComposantsFils.RemoveAt(nIndex);
         return(nIndex);
     }
     catch
     {
         return(m_listeComposantsFils.Count);
     }
 }
示例#4
0
 /// //////////////////////////////////////////////////
 public override int RemoveComposantFils(CComposantFiltreDynamique composant)
 {
     return(0);
 }
示例#5
0
 /// //////////////////////////////////////////////////
 public override bool InsertComposantFils(CComposantFiltreDynamique composant, int nIndex)
 {
     return(false);
 }
示例#6
0
 /// //////////////////////////////////////////////////
 public override bool AddComposantFils(CComposantFiltreDynamique composant)
 {
     return(false);
 }
        ////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// Retourne un filtre dynamique pour la table associée en
        /// prenant en compte les filtres des parents
        /// </summary>
        /// <returns></returns>
        public CFiltreDynamique GetFiltreToElementPrincipal()
        {
            if (TouteLaTable)
            {
                return(null);
            }
            CFiltreDynamique filtreDynamiqueParent = null;

            if (FiltreParent != null)
            {
                filtreDynamiqueParent = FiltreParent.GetFiltreToElementPrincipal();
            }

            Type            typeElements = CContexteDonnee.GetTypeForTable(NomTable);
            CStructureTable structure    = CStructureTable.GetStructure(typeElements);

            CFiltreDynamique filtreFinal = (CFiltreDynamique)FiltreDynamique.Clone();

            CDefinitionProprieteDynamique defToParent = null;

            //Trouve la propriété qui amène sur le parent
            if (RelationToParent != null)
            {
                if (RelationToParent.TableFille == NomTable)
                {
                    if (filtreDynamiqueParent != null && filtreDynamiqueParent.ComposantPrincipal != null)
                    {
                        Type   tp = CContexteDonnee.GetTypeForTable(RelationToParent.TableParente);
                        string strNomConvivial = DynamicClassAttribute.GetNomConvivial(tp);
                        //Nous somme dans une relation fille
                        foreach (CInfoRelation relationParente in structure.RelationsParentes)
                        {
                            if (relationParente.RelationKey == RelationToParent.RelationKey)
                            {
                                defToParent = new CDefinitionProprieteDynamiqueDotNet(
                                    strNomConvivial,
                                    relationParente.Propriete,
                                    new CTypeResultatExpression(CContexteDonnee.GetTypeForTable(relationParente.TableParente), false),
                                    true,
                                    true,
                                    "");
                                break;
                            }
                        }
                        if (defToParent == null)
                        {
                            defToParent = new CDefinitionProprieteDynamique(
                                strNomConvivial,
                                RelationToParent.RelationKey,
                                new CTypeResultatExpression(tp, false),
                                true,
                                true,
                                "");
                        }
                    }
                }
                else
                {
                    //Nous sommes dans une relation parente
                    foreach (CInfoRelation relationFille in structure.RelationsFilles)
                    {
                        if (relationFille.RelationKey == RelationToParent.RelationKey)
                        {
                            defToParent = new CDefinitionProprieteDynamiqueDotNet(
                                relationFille.NomConvivial,
                                relationFille.Propriete,
                                new CTypeResultatExpression(CContexteDonnee.GetTypeForTable(relationFille.TableFille), true),
                                true,
                                true,
                                "");
                            break;
                        }
                    }
                    if (defToParent == null)
                    {
                        Type tp = CContexteDonnee.GetTypeForTable(RelationToParent.TableFille);
                        defToParent = new CDefinitionProprieteDynamique(
                            DynamicClassAttribute.GetNomConvivial(tp) + "(" + RelationToParent.NomConvivial + ")",
                            RelationToParent.RelationKey,
                            new CTypeResultatExpression(tp, false),
                            true, true);
                    }

                    if (filtreDynamiqueParent == null)
                    {
                        filtreDynamiqueParent = new CFiltreDynamiqueParentTablePleine(NomTable, RelationToParent);
                    }
                }
            }
            if (filtreDynamiqueParent != null && filtreDynamiqueParent.ComposantPrincipal != null)
            {
                filtreDynamiqueParent.ComposantPrincipal.InsereDefinitionToObjetFinal(defToParent);

                if (FiltreDynamique == null || FiltreDynamique.ComposantPrincipal == null)
                {
                    return(filtreDynamiqueParent);
                }

                CComposantFiltreDynamique composantEt = null;
                if (!(filtreDynamiqueParent.ComposantPrincipal is CComposantFiltreDynamiqueEt))
                {
                    composantEt = new CComposantFiltreDynamiqueEt();
                    composantEt.AddComposantFils(filtreDynamiqueParent.ComposantPrincipal);
                }
                else
                {
                    composantEt = (CComposantFiltreDynamiqueEt)filtreDynamiqueParent.ComposantPrincipal;
                }
                composantEt.AddComposantFils(filtreFinal.ComposantPrincipal);
                filtreFinal.ComposantPrincipal = composantEt;
            }

            if (filtreFinal.ComposantPrincipal == null)
            {
                return(null);
            }
            return(filtreFinal);
        }
示例#8
0
        /// /////////////////////////////////////////////
        public CResultAErreur Serialize(C2iSerializer serializer)
        {
            int            nVersion = GetNumVersion();
            CResultAErreur result   = serializer.TraiteVersion(ref nVersion);

            if (!result)
            {
                return(result);
            }
            try
            {
                serializer.AttacheObjet(typeof(IElementAVariablesDynamiquesBase), this);
                serializer.TraiteType(ref m_typeElementsFiltres);

                result = serializer.TraiteArrayListOf2iSerializable(m_listeVariables);

                I2iSerializable obj = m_composantFiltre;
                result            = serializer.TraiteObject(ref obj);
                m_composantFiltre = (CComposantFiltreDynamique)obj;

                serializer.TraiteInt(ref m_nNextIdVariable);

                obj    = m_formulaireEdition;
                result = serializer.TraiteObject(ref obj);
                if (!result)
                {
                    return(result);
                }
                m_formulaireEdition = (C2iWnd)obj;

                if (nVersion >= 1)
                {
                    //Serialize les valeurs des variables
                    foreach (CVariableDynamique variable in m_listeVariables)
                    {
                        if (variable.IsChoixUtilisateur())
                        {
                            object valeur = m_tableValeursChamps[variable.IdVariable];
                            if (valeur != null && variable.TypeDonnee.IsArrayOfTypeNatif)
                            {
                                IList lst = (IList)valeur;
                                result = serializer.TraiteListeObjetsSimples(ref lst);
                                valeur = lst;
                            }
                            else
                            {
                                result = serializer.TraiteObjetSimple(ref valeur);
                            }
                            if (!result)
                            {
                                return(result);
                            }
                            if (serializer.Mode == ModeSerialisation.Lecture)
                            {
                                SetValeurChamp(variable, valeur);
                            }
                        }
                    }
                }
                if (nVersion >= 2 && nVersion < 4)
                {
                    bool bTmp = false;
                    serializer.TraiteBool(ref bTmp);
                    if (bTmp)
                    {
                        FormuleIntegrerParentsHierarchiques = new C2iExpressionConstante(true);
                    }
                    else
                    {
                        FormuleIntegrerParentsHierarchiques = new C2iExpressionConstante(false);
                    }

                    serializer.TraiteBool(ref bTmp);
                    if (bTmp)
                    {
                        FormuleNeConserverQueLesRacines = new C2iExpressionConstante(true);
                    }
                    else
                    {
                        FormuleNeConserverQueLesRacines = new C2iExpressionConstante(false);
                    }
                }
                if (nVersion >= 3 && nVersion < 4)
                {
                    bool bTmp = false;
                    serializer.TraiteBool(ref bTmp);
                    if (bTmp)
                    {
                        FormuleIntegrerFilsHierarchiques = new C2iExpressionConstante(true);
                    }
                    else
                    {
                        FormuleIntegrerFilsHierarchiques = new C2iExpressionConstante(false);
                    }
                }

                if (nVersion >= 4)
                {
                    serializer.TraiteObject <C2iExpression>(ref m_formuleIntegrerParentsHierarchiques);
                    serializer.TraiteObject <C2iExpression>(ref m_formuleNeConserverQueLesRacines);
                    serializer.TraiteObject <C2iExpression>(ref m_formuleIntegrerFilsHierarchiques);
                }



                serializer.DetacheObjet(typeof(IElementAVariablesDynamiquesBase), this);
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
                result.EmpileErreur(I.T("Error while reading dynamic filter|172"));
            }
            return(result);
        }
 /// //////////////////////////////////////////////////
 //Retourne la position du fils enlevé
 public abstract int RemoveComposantFils(CComposantFiltreDynamique composant);
 /// //////////////////////////////////////////////////
 public abstract bool InsertComposantFils(CComposantFiltreDynamique composant, int nIndex);
 /// //////////////////////////////////////////////////
 public abstract bool AddComposantFils(CComposantFiltreDynamique composant);
 /// ///////////////////////////////////////////////
 public override bool AddComposantFils(CComposantFiltreDynamique composant)
 {
     m_listeComposantsFils.Add(composant);
     return(true);
 }