Example #1
0
        //-------------------------------------------------------
        public static CResultAErreurType <CMacro> FromVersion(CVersionDonnees version)
        {
            CResultAErreurType <CMacro> result = new CResultAErreurType <CMacro>();

            using (CContexteDonnee contexte = new CContexteDonnee(version.ContexteDonnee.IdSession, true, false))
            {
                contexte.SetVersionDeTravail(version.Id, false);
                CMacro macro = new CMacro();
                macro.m_contexteDonnee = version.ContexteDonnee;
                macro.Libelle          = version.Libelle;

                CVariableDynamiqueSysteme variable = new CVariableDynamiqueSysteme();
                variable.SetTypeDonnee(new CTypeResultatExpression(typeof(string), false));
                variable.Nom        = "CurrentElement";
                variable.IdVariable = m_strIdVariableCurrentElement;
                macro.AddVariable(variable);

                Dictionary <int, CMacroObjet> dicMacrosObjets = new Dictionary <int, CMacroObjet>();
                Dictionary <CObjetDonneeAIdNumerique, CMacroObjet> dicObjetToMacros = new Dictionary <CObjetDonneeAIdNumerique, CMacroObjet>();
                foreach (CVersionDonneesObjet vo in version.VersionsObjets)
                {
                    if (!typeof(CRelationElementAChamp_ChampCustom).IsAssignableFrom(vo.TypeElement) && vo.TypeElement.GetCustomAttributes(typeof(NoMacroAttribute), true).Length == 0)
                    {
                        CMacroObjet mo = new CMacroObjet(macro);
                        mo.TypeObjet     = vo.TypeElement;
                        mo.IdObjet       = vo.IdElement;
                        mo.TypeOperation = vo.TypeOperation;
                        macro.AddObjet(mo);

                        dicMacrosObjets[vo.Id] = mo;
                        CObjetDonneeAIdNumerique objet = Activator.CreateInstance(vo.TypeElement, new object[] { contexte }) as CObjetDonneeAIdNumerique;
                        if (objet.ReadIfExists(vo.IdElement))
                        {
                            dicObjetToMacros[objet] = mo;
                        }
                        mo.CreateVariable(objet);
                    }
                }
                foreach (CVersionDonneesObjet vo in version.VersionsObjets)
                {
                    if (!typeof(CRelationElementAChamp_ChampCustom).IsAssignableFrom(vo.TypeElement) && vo.TypeElement.GetCustomAttributes(typeof(NoMacroAttribute), true).Length == 0)
                    {
                        CMacroObjet    mo    = dicMacrosObjets[vo.Id];
                        CResultAErreur resMo = CResultAErreur.True;
                        resMo = mo.FillFromVersion(vo, contexte, dicObjetToMacros);
                        if (!resMo)
                        {
                            result.EmpileErreur(resMo.Erreur);
                        }
                    }
                }
                result.DataType = macro;
                return(result);
            }
        }
Example #2
0
        //----------------------------------
        private bool FillMacroValeurWithValue(CMacroObjetValeur mv, object data, Dictionary <CObjetDonneeAIdNumerique, CMacroObjet> dicObjetToMacroObjet)
        {
            C2iExpression            formule          = null;
            string                   strIdVariableRef = "";
            CObjetDonneeAIdNumerique obj = data as CObjetDonneeAIdNumerique;

            if (obj != null)
            {
                CMacroObjet mr = null;
                if (dicObjetToMacroObjet.TryGetValue(obj, out mr))
                {
                    strIdVariableRef = mr.IdVariableAssociee;
                }
                else
                {
                    CMacroObjet macroObjet = new CMacroObjet(Macro);
                    macroObjet.TypeObjet        = obj.GetType();
                    macroObjet.TypeOperation    = new CTypeOperationSurObjet(CTypeOperationSurObjet.TypeOperation.Aucune);
                    macroObjet.DesignationObjet = obj.DescriptionElement;
                    macroObjet.IdObjet          = obj.Id;
                    Macro.AddObjet(macroObjet);
                    dicObjetToMacroObjet[obj] = macroObjet;
                    macroObjet.CreateVariable(obj);
                    strIdVariableRef = macroObjet.IdVariableAssociee;
                }
            }
            if (strIdVariableRef == "")
            {
                formule = GetFormuleValeur(data);
            }
            if (formule == null && strIdVariableRef == "")
            {
                return(false);
            }
            if (strIdVariableRef != "")
            {
                CVariableDynamique variable = Macro.GetVariable(strIdVariableRef);
                formule = new C2iExpressionChamp(new CDefinitionProprieteDynamiqueVariableDynamique(variable));
            }
            mv.FormuleValeur = formule;
            return(true);
        }
Example #3
0
        //-------------------------------------------------------
        public static CResultAErreurType <CMacro> FromVersion(CVersionDonnees version)
        {
            CResultAErreurType <CMacro> result = new CResultAErreurType <CMacro>();

            using (CContexteDonnee contexte = new CContexteDonnee(version.ContexteDonnee.IdSession, true, false))
            {
                contexte.SetVersionDeTravail(version.Id, false);
                CMacro macro = new CMacro();
                macro.m_contexteDonnee = version.ContexteDonnee;

                Dictionary <int, CMacroObjet> dicMacrosObjets = new Dictionary <int, CMacroObjet>();
                Dictionary <CObjetDonneeAIdNumerique, CMacroObjet> dicObjetToMacros = new Dictionary <CObjetDonneeAIdNumerique, CMacroObjet>();
                foreach (CVersionDonneesObjet vo in version.VersionsObjets)
                {
                    CMacroObjet mo = new CMacroObjet(macro);
                    mo.TypeObjet     = vo.TypeElement;
                    mo.IdObjet       = vo.IdElement;
                    mo.TypeOperation = vo.TypeOperation;
                    macro.AddObjet(mo);

                    dicMacrosObjets[vo.Id] = mo;
                    CObjetDonneeAIdNumerique objet = Activator.CreateInstance(vo.TypeElement, new object[] { contexte }) as CObjetDonneeAIdNumerique;
                    if (objet.ReadIfExists(vo.IdElement))
                    {
                        dicObjetToMacros[objet] = mo;
                    }
                    mo.CreateVariable(objet);
                }
                foreach (CVersionDonneesObjet vo in version.VersionsObjets)
                {
                    CMacroObjet    mo    = dicMacrosObjets[vo.Id];
                    CResultAErreur resMo = CResultAErreur.True;
                    resMo = mo.FillFromVersion(vo, contexte, dicObjetToMacros);
                    if (!resMo)
                    {
                        result.EmpileErreur(resMo.Erreur);
                    }
                }
                result.DataType = macro;
                return(result);
            }
        }
Example #4
0
 public CMacroObjetValeur(CMacroObjet macroObjet)
 {
     m_macroObjet = macroObjet;
 }
Example #5
0
 //-------------------------------------------------------
 public void RemoveObjet(CMacroObjet macroObjet)
 {
     m_listeObjets.Remove(macroObjet);
 }
Example #6
0
 //-------------------------------------------------------
 public void AddObjet(CMacroObjet macroObjet)
 {
     m_listeObjets.Add(macroObjet);
 }