public void AddProprietesAccedees(
            CArbreDefinitionsDynamiques arbre,
            Type typeSource,
            string strPropriete)
        {
            //TESTDBKEYOK
            CDbKey key = CDbKey.CreateFromStringValue(strPropriete);

            /*int nIdChamp = -1;
             *          try
             *          {
             *                  nIdChamp = Int32.Parse ( strPropriete );
             *          }
             *          catch
             *          {
             *          }*/
            CChampCalcule champCalcule = new CChampCalcule(CContexteDonneeSysteme.GetInstance());
            C2iExpression formule      = null;

            if (champCalcule.ReadIfExists(key))
            {
                formule = champCalcule.Formule;
                formule.GetArbreProprietesAccedees(arbre);
                CDefinitionProprieteDynamiqueChampCalcule.DetailleSousArbres(arbre, CContexteDonneeSysteme.GetInstance());
            }
        }
Esempio n. 2
0
 public override void FillArbreProprietesAccedees(CArbreDefinitionsDynamiques arbre)
 {
     base.FillArbreProprietesAccedees(arbre);
     if (m_expression != null)
     {
         m_expression.GetArbreProprietesAccedees(arbre);
     }
 }
        /// ////////////////////////////////////////
        ///Si l'arbre est basé sur un champ calculé, détaille les
        ///champs utilisés dans la formule
        public static void DetailleSousArbres(
            CArbreDefinitionsDynamiques arbre,
            CContexteDonnee contexteDonnee,
            Dictionary <CDefinitionProprieteDynamique, int> dicCountProfondeurParChamp)
        {
            //TESTDBKEYOK
            if (dicCountProfondeurParChamp == null)
            {
                dicCountProfondeurParChamp = new Dictionary <CDefinitionProprieteDynamique, int>();
            }
            ArrayList lstSousArbres = new ArrayList(arbre.SousArbres);

            foreach (CArbreDefinitionsDynamiques sousArbre in lstSousArbres)
            {
                if (sousArbre.DefinitionPropriete is CDefinitionProprieteDynamiqueChampCalcule)
                {
                    int nProfondeur = 0;
                    dicCountProfondeurParChamp.TryGetValue(sousArbre.DefinitionPropriete, out nProfondeur);
                    if (nProfondeur < 10)//En cas d'appel récursif, limite à 10 appels
                    {
                        CChampCalcule champCalc = new CChampCalcule(contexteDonnee);
                        if (champCalc.ReadIfExists(((CDefinitionProprieteDynamiqueChampCalcule)sousArbre.DefinitionPropriete).DbKeyChamp))
                        {
                            C2iExpression formule = champCalc.Formule;
                            if (formule != null)
                            {
                                CArbreDefinitionsDynamiques arbreDeFormule = new CArbreDefinitionsDynamiques(null);
                                formule.GetArbreProprietesAccedees(arbreDeFormule);
                                nProfondeur++;
                                dicCountProfondeurParChamp[sousArbre.DefinitionPropriete] = nProfondeur;
                                DetailleSousArbres(arbreDeFormule, contexteDonnee, dicCountProfondeurParChamp);
                                nProfondeur--;
                                dicCountProfondeurParChamp[sousArbre.DefinitionPropriete]--;
                                arbre.RemoveSousArbre(sousArbre);
                                foreach (CArbreDefinitionsDynamiques arbreTmp in arbreDeFormule.SousArbres)
                                {
                                    arbre.AddSousArbre(arbreTmp);
                                }
                            }
                        }
                    }
                }
                else
                {
                    DetailleSousArbres(sousArbre, contexteDonnee, dicCountProfondeurParChamp);
                }
            }
        }
Esempio n. 4
0
        public void AddProprietesAccedees(
            CArbreDefinitionsDynamiques arbre,
            Type typeSource,
            string strPropriete)
        {
            CContexteAnalyse2iExpression   ctx       = new CContexteAnalyse2iExpression(new CFournisseurPropDynStd(), typeSource);
            CAnalyseurSyntaxiqueExpression analyseur = new CAnalyseurSyntaxiqueExpression(ctx);
            CResultAErreur result  = analyseur.AnalyseChaine(strPropriete);
            C2iExpression  formule = null;

            if (result)
            {
                formule = result.Data as C2iExpression;
                formule.GetArbreProprietesAccedees(arbre);
                CDefinitionProprieteDynamiqueChampCalcule.DetailleSousArbres(arbre, CContexteDonneeSysteme.GetInstance());
            }
        }
Esempio n. 5
0
        private void m_lnkTest_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            C2iExpression formule = m_txtFormule.Formule;

            if (formule == null)
            {
                return;
            }
            CArbreDefinitionsDynamiques arbre = new CArbreDefinitionsDynamiques(null);

            formule.GetArbreProprietesAccedees(arbre);

            string strChaine = "";

            foreach (CArbreDefinitionsDynamiques sa in arbre.SousArbres)
            {
                AddToChaine(sa, 1, ref strChaine);
            }
            Clipboard.SetDataObject(strChaine);
            MessageBox.Show(strChaine);
            int n = arbre.SousArbres.Length;
        }