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; } }
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); }