private CObjetPourSousProprietes GetObjetPourAnalyse(CRepresentationExpressionGraphique rep)
        {
            while (rep.Prev != null)
            {
                rep = rep.Prev;
            }
            IEnumerable <CRepresentationExpressionGraphique> users = ExpressionGraphique.GetUtilisateurs(rep.Id);

            if (users.Count() == 1)
            {
                CRepresentationExpressionGraphique repParente = users.ElementAt(0);
                C2iExpressionObjet expObjet = repParente.Formule as C2iExpressionObjet;
                if (expObjet != null && repParente.GetExterne(1) == rep)
                {
                    return(expObjet.Parametres2i[0].GetObjetPourSousProprietes());
                }
                C2iExpressionMethodeAnalysable formule = repParente.Formule as C2iExpressionMethodeAnalysable;
                if (formule != null)
                {
                    return(formule.GetObjetAnalyseParametresFromObjetAnalyseSource(GetObjetPourAnalyse(repParente)));
                }
                else
                {
                    GetObjetPourAnalyse(repParente);
                }
            }
            return(m_objetAnalyse);
        }
 //-------------------------------------------------
 private void AddNewByDragDrop(C2iExpression formule)
 {
     if (formule != null)
     {
         if (formule is C2iExpressionObjetNeedTypeParent)
         {
             C2iExpression formuleObj = new C2iExpressionObjet();
             formuleObj.Parametres.Add(new C2iExpressionNull());
             formuleObj.Parametres.Add(formule);
             formule = formuleObj;
         }
         CRepresentationExpressionGraphique obj  = new CRepresentationExpressionGraphique(formule);
         CDonneeDragDropObjetGraphique      data = new CDonneeDragDropObjetGraphique(Name, obj);
         DoDragDrop(data, DragDropEffects.Copy);
         m_bGererMouseUp = false;
     }
 }
Ejemplo n.º 3
0
        private void RecalcObjetsAnalyse( )
        {
            C2iExpressionObjet expObjet = m_expressionEditee.Formule as C2iExpressionObjet;

            foreach (Control ctrl in m_panelControls.Controls)
            {
                CEditeurParametreFormule editeur = ctrl as CEditeurParametreFormule;
                if (editeur != null)
                {
                    editeur.ChangeObjetAnalyse(m_objetAnalyse);
                }
                if (expObjet != null && expObjet.Parametres.Count >= 2)
                {
                    C2iExpression exp1 = expObjet.Parametres2i[0];
                    C2iExpressionObjetNeedTypeParent exp2 = expObjet.Parametres2i[1] as C2iExpressionObjetNeedTypeParent;
                    if (exp2 != null && exp1 != null)
                    {
                        editeur.ChangeObjetAnalyse(exp1.GetObjetPourSousProprietes());
                    }
                }
            }
        }
        /// //////////////////////////////////////////////////
        public override CResultAErreur GetComposantExpression(CFiltreDynamique filtre)
        {
            CResultAErreur result = CResultAErreur.True;
            //Vérifie que l'expression condition est OK
            CContexteEvaluationExpression contexteEvaluation = new CContexteEvaluationExpression(filtre);

            result = ConditionApplication.Eval(contexteEvaluation);
            if (!result)
            {
                result.EmpileErreur(I.T("Error while evaluation of @1|143", ConditionApplication.GetString()));
                return(result);
            }

            if ((result.Data is bool && !((bool)result.Data)) || result.Data.ToString() == "0")
            {
                result.Data = null;
                return(result);
            }
            result = ExpressionValeur.Eval(contexteEvaluation);
            object valeur = result.Data;


            C2iExpression expChamp = new C2iExpressionChamp(Champ);

            C2iExpression expOp     = null;
            C2iExpression expRacine = null;

            switch (IdOperateur)
            {
            case CComposantFiltreOperateur.c_IdOperateurEgal:
                expOp     = new C2iExpressionEgal();
                expRacine = expOp;
                break;

            case CComposantFiltreOperateur.c_IdOperateurContains:
                expOp     = new C2iExpressionContient();
                expRacine = expOp;
                break;

            case CComposantFiltreOperateur.c_IdOperateurDifferent:
                expOp     = new C2iExpressionDifferent();
                expRacine = expOp;
                break;

            case CComposantFiltreOperateur.c_IdOperateurIn:
                expOp     = new C2iExpressionDans();
                expRacine = expOp;
                break;

            case CComposantFiltreOperateur.c_IdOperateurInf:
                expOp     = new C2iExpressionInferieur();
                expRacine = expOp;
                break;

            case CComposantFiltreOperateur.c_IdOperateurInfEgal:
                expOp     = new C2iExpressionInferieurOuEgal();
                expRacine = expOp;
                break;

            case CComposantFiltreOperateur.c_IdOperateurLike:
                expOp = new C2iExpressionMatchRegex();
                if (valeur != null)
                {
                    valeur = GetRegExFromLike(valeur.ToString());
                }
                expRacine = expOp;
                break;

            case CComposantFiltreOperateur.c_IdOperateurNotIn:
                expRacine = new C2iExpressionNon();
                expOp     = new C2iExpressionDans();
                expRacine.Parametres.Add(expOp);
                break;

            case CComposantFiltreOperateur.c_IdOperateurNotLike:
                expRacine = new C2iExpressionNon();
                expOp     = new C2iExpressionMatchRegex();
                if (valeur != null)
                {
                    valeur = GetRegExFromLike(valeur.ToString());
                }
                expRacine.Parametres.Add(expOp);
                break;

            case CComposantFiltreOperateur.c_IdOperateurSup:
                expOp     = new C2iExpressionSuperieur();
                expRacine = expOp;
                break;

            case CComposantFiltreOperateur.c_IdOperateurSuperieurOuEgal:
                expOp     = new C2iExpressionSuperieurOuEgal();
                expRacine = expOp;
                break;

            case CComposantFiltreOperateur.c_IdOperateurWithout:
                expRacine = new C2iExpressionNon();
                expOp     = new C2iExpressionContient();
                expRacine.Parametres.Add(expOp);
                break;

            default:
                result.EmpileErreur(I.T("Can not use this operator in filter|20011"));
                return(result);
            }

            if (valeur is IList || valeur is Array)
            {
                C2iExpressionListe lst = new C2iExpressionListe();
                foreach (object val in (IEnumerable)valeur)
                {
                    lst.Parametres.Add(new C2iExpressionConstante(val));
                }
                valeur = lst;
            }
            else
            {
                valeur = new C2iExpressionConstante(valeur);
            }

            if (expChamp.TypeDonnee.IsArrayOfTypeNatif)
            {
                //Recherche dans des données filles (tableau)
                C2iExpressionSelectFirst expSelFirst = new C2iExpressionSelectFirst();
                expSelFirst.Parametres.Add(expRacine);
                C2iExpressionObjet expObjet = new C2iExpressionObjet();
                expObjet.Parametres.Add(expChamp);
                expObjet.Parametres.Add(expSelFirst);
                expChamp = new C2iExpressionThis();
                C2iExpression expNull = new C2iExpressionNull();
                expNull.Parametres.Add(expObjet);
                C2iExpression expNon = new C2iExpressionNon();
                expNon.Parametres.Add(expNull);
                expRacine = expNon;
            }

            expOp.Parametres.Add(expChamp);
            expOp.Parametres.Add(valeur);
            result.Data = expRacine;
            string strExp = expRacine.GetString();

            return(result);
        }