Пример #1
0
        //---------------------------------------------------------------------------------------
        private IVariableDynamique AssureVariableElementCible(CFiltreDynamique filtre, Type typeElement)
        {
            IVariableDynamique variableASupprimer = null;

            foreach (IVariableDynamique variable in filtre.ListeVariables)
            {
                if (variable.Nom == c_champElementSource)
                {
                    if (variable.TypeDonnee.TypeDotNetNatif != typeElement)
                    {
                        variableASupprimer = variable;
                    }
                    else
                    {
                        return(variable);
                    }
                }
            }
            if (variableASupprimer != null)
            {
                filtre.RemoveVariable(variableASupprimer);
            }
            CVariableDynamiqueSysteme newVariable = new CVariableDynamiqueSysteme(filtre);

            newVariable.Nom = c_champElementSource;
            newVariable.SetTypeDonnee(new sc2i.expression.CTypeResultatExpression(typeElement, false));
            filtre.AddVariablePropreAuFiltre(newVariable);
            return(newVariable);
        }
Пример #2
0
        /// /////////////////////////////////////////////////////////////
        protected void AssureVariableDossierInFiltre(CFiltreDynamique filtre)
        {
            if (filtre == null)
            {
                return;
            }
            bool bVariableExiste = false;

            foreach (IVariableDynamique variable in filtre.ListeVariables)
            {
                if (variable.Nom == c_nomChampDossier)
                {
                    bVariableExiste = true;
                    break;
                }
            }
            if (!bVariableExiste)
            {
                CVariableDynamiqueSysteme variable = new CVariableDynamiqueSysteme(filtre);
                variable.Nom = c_nomChampDossier;
                variable.SetTypeDonnee(new CTypeResultatExpression(typeof(CDossierSuivi), false));
                filtre.AddVariable(variable);
            }
            filtre.TypeElements = this.TypeSuivi;
        }
Пример #3
0
 /// ////////////////////////////////////////////////////////////////
 public static IVariableDynamique AssureVariableElementCible(CFiltreDynamique filtre, CObjetPourSousProprietes objetPourSousProprietes)
 {
     if (objetPourSousProprietes.ElementAVariableInstance as IElementAVariablesDynamiquesAvecContexteDonnee == null)
     {
         foreach (IVariableDynamique variable in filtre.ListeVariables)
         {
             if (variable.Nom == c_champElementSource)
             {
                 return(variable);
             }
         }
         CVariableDynamiqueSysteme newVariable = new CVariableDynamiqueSysteme(filtre);
         newVariable.Nom = c_champElementSource;
         newVariable.SetTypeDonnee(new sc2i.expression.CTypeResultatExpression(objetPourSousProprietes.TypeAnalyse, false));
         filtre.AddVariable(newVariable);
         return(newVariable);
     }
     else
     {
         filtre.ElementAVariablesExterne = null;
         while (filtre.ListeVariables.Length > 0)
         {
             filtre.RemoveVariable(filtre.ListeVariables[0]);
         }
         filtre.ElementAVariablesExterne = objetPourSousProprietes.ElementAVariableInstance as IElementAVariablesDynamiquesAvecContexteDonnee;
         return(null);
     }
 }
Пример #4
0
        //---------------------------------------------------------------------------
        private void AssureVariableSourceGlobale()
        {
            CVariableDynamiqueSysteme varSource = null;

            foreach (IVariableDynamique variable in m_listeVariables)
            {
                if (variable.IdVariable == c_strCleVariableSourceGlobale)
                {
                    varSource = variable as CVariableDynamiqueSysteme;
                    break;
                }
            }
            if (m_typeSourceGlobale == null)
            {
                if (varSource != null)
                {
                    m_listeVariables.Remove(varSource);
                }
            }
            else
            {
                if (varSource == null)
                {
                    varSource            = new CVariableDynamiqueSysteme(this);
                    varSource.IdVariable = c_strCleVariableSourceGlobale;
                    varSource.Nom        = c_strNomVariableSourceElement;
                    m_listeVariables.Add(varSource);
                }
                varSource.SetTypeDonnee(new CTypeResultatExpression(m_typeSourceGlobale, false));
            }
        }
Пример #5
0
 private void CreateVariable(Type typeDonnee)
 {
     m_variable            = new CVariableDynamiqueSysteme(this);
     m_variable.IdVariable = "0";
     m_variable.Nom        = c_nomVariable;
     m_variable.SetTypeDonnee(new CTypeResultatExpression(typeDonnee, false));
     AddVariable(m_variable);
 }
Пример #6
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);
            }
        }
Пример #7
0
 //-------------------------------------------------
 private void AssureVariablesSysteme()
 {
     if (m_typeSource != null)
     {
         CVariableDynamiqueSysteme varSource = VariableObjetSource;
         if (varSource == null)
         {
             varSource            = new CVariableDynamiqueSysteme(this);
             varSource.IdVariable = c_strIdVariableObjetSource;
             varSource.Nom        = "Source";
             m_listeVariables.Add(varSource);
         }
         varSource.SetTypeDonnee(new CTypeResultatExpression(m_typeSource, false));
     }
 }
Пример #8
0
        //-------------------------------------------------
        /// <summary>
        /// Crée un élément à variable, contenant une seule variable du type demandé,
        /// avec le nom demandé.
        /// </summary>
        /// <param name="tp"></param>
        /// <param name="strNomVariable"></param>
        /// <returns></returns>
        public static CElementAVariablesDynamiques GetElementAUneVariableType(Type tp, string strNomVariable)
        {
            CElementAVariablesDynamiques elt = new CElementAVariablesDynamiques();

            CVariableDynamiqueSysteme newVariable = new CVariableDynamiqueSysteme(elt);

            newVariable.Nom = strNomVariable;
            //TESTDBKEYOK (SC)
            //Id doit être égal à 0 pour compatiblité
            newVariable.IdVariable = "0";
            newVariable.SetTypeDonnee(new CTypeResultatExpression(tp, false));
            elt.AddVariable(newVariable);

            return(elt);
        }
Пример #9
0
        private IVariableDynamique AssureVariableProcessDansStructure()
        {
            if (m_structureExport == null)
            {
                return(null);
            }
            foreach (IVariableDynamique variable in m_structureExport.ListeVariables)
            {
                if (variable.Nom == c_champProcess)
                {
                    m_structureExport.SetValeurChamp(variable, Process);
                    return(variable);
                }
            }
            CVariableDynamiqueSysteme newVariable = new CVariableDynamiqueSysteme(m_structureExport);

            newVariable.Nom = c_champProcess;
            newVariable.SetTypeDonnee(new sc2i.expression.CTypeResultatExpression(typeof(CProcess), false));
            m_structureExport.AddVariable(newVariable);
            m_structureExport.SetValeurChamp(newVariable.IdVariable, Process);
            return(newVariable);
        }
Пример #10
0
        /// <summary>
        /// récupère un objet pour formule liée à la cellule
        ///
        /// </summary>
        /// <param name="paramVisu"></param>
        /// <param name="row">Ligne contenant les données (peut être nul en design)</param>
        /// <param name="nCol">Numéro de colonne où se trouve la donnée (peut être null en design)</param>
        /// <returns></returns>
        public CElementAVariablesDynamiques GetObjetPourFormuleCellule
        (
            CParametreVisuDonneePrecalculee paramVisu,
            DataRow row,
            int?nCol)
        {
            CElementAVariablesDynamiques eltAVariables = new CElementAVariablesDynamiques();
            CTypeDonneeCumulee           typeDonnee    = paramVisu.GetTypeDonneeCumulee(CContexteDonneeSysteme.GetInstance());

            if (typeDonnee == null)
            {
                return(null);
            }
            CParametreDonneeCumulee parametreDonnee = typeDonnee.Parametre;

            //Ajoute les clés
            CChampFinalDeTableauCroise[] champsFinaux = paramVisu.TableauCroise.ChampsFinaux;
            int nIdVariable = 0;

            foreach (CChampFinalDeTableauCroise champFinal in champsFinaux)
            {
                CChampFinalDeTableauCroiseCle champCle = champFinal as CChampFinalDeTableauCroiseCle;
                if (champCle != null)
                {
                    CCleDonneeCumulee cle = parametreDonnee.GetChampCle(champCle.NomChamp);
                    if (cle != null)
                    {
                        CVariableDynamiqueSysteme variable = new CVariableDynamiqueSysteme(eltAVariables);
                        variable.Nom        = champCle.NomChamp;
                        variable.IdVariable = nIdVariable.ToString();
                        nIdVariable++;
                        if (cle.TypeLie != null)
                        {
                            variable.SetTypeDonnee(new CTypeResultatExpression(cle.TypeLie, false));
                        }
                        else
                        {
                            variable.SetTypeDonnee(new CTypeResultatExpression(typeof(int), false));
                        }
                        eltAVariables.AddVariable(variable);
                        if (row != null && row.Table.Columns.Contains(champCle.NomChamp))
                        {
                            object val = row[champCle.NomChamp];;
                            if (cle.TypeLie != null)
                            {
                                try
                                {
                                    if (val != DBNull.Value)
                                    {
                                        val = paramVisu.GetFromCache(cle.TypeLie, Int32.Parse((val.ToString())));
                                    }
                                }
                                catch { }
                            }
                            else
                            if (val != DBNull.Value)
                            {
                                val = val.ToString();
                            }
                            //TESTDBKEYOK (SC)
                            eltAVariables.SetValeurChamp(variable.IdVariable, val);
                        }
                    }
                }
            }
            //Ajoute la valeur de colonne pivot (s'il y a lieu )
            CChampFinalDeTableauCroiseDonnee champAvecPivot = ChampFinal as CChampFinalDeTableauCroiseDonnee;

            if (champAvecPivot != null && champAvecPivot.Pivot != null)
            {
                CCleDonneeCumulee cle = parametreDonnee.GetChampCle(champAvecPivot.Pivot.NomChamp);
                if (cle != null)
                {
                    CVariableDynamiqueSysteme variable = new CVariableDynamiqueSysteme(eltAVariables);
                    variable.Nom        = champAvecPivot.Pivot.NomChamp;
                    variable.IdVariable = nIdVariable.ToString();
                    nIdVariable++;
                    if (cle.TypeLie != null)
                    {
                        variable.SetTypeDonnee(new CTypeResultatExpression(cle.TypeLie, false));
                    }
                    else
                    {
                        variable.SetTypeDonnee(new CTypeResultatExpression(typeof(string), false));
                    }
                    eltAVariables.AddVariable(variable);
                    if (row != null && nCol != null)
                    {
                        DataColumn col = row.Table.Columns[nCol.Value];
                        CChampFinalDetableauCroiseDonneeAvecValeur cv = col.ExtendedProperties[CTableauCroise.c_ExtendedPropertyToColumnKey] as CChampFinalDetableauCroiseDonneeAvecValeur;
                        if (cv != null)
                        {
                            object val = cv.ValeurPivot;
                            if (cle.TypeLie != null)
                            {
                                try
                                {
                                    if (val != null)
                                    {
                                        val = paramVisu.GetFromCache(cle.TypeLie, Int32.Parse(val.ToString()));
                                    }
                                }
                                catch
                                {
                                }
                            }
                            else
                            if (val != null)
                            {
                                val = val.ToString();
                            }
                            eltAVariables.SetValeurChamp(variable.IdVariable, val);
                        }
                    }
                }
            }

            //Ajoute la valeur de la colonne
            CVariableDynamiqueSysteme variableValue = new CVariableDynamiqueSysteme(eltAVariables);

            variableValue.Nom        = c_nomVariableValue;
            variableValue.IdVariable = nIdVariable.ToString();
            nIdVariable++;
            variableValue.SetTypeDonnee(new CTypeResultatExpression(typeof(double), false));
            eltAVariables.AddVariable(variableValue);
            try
            {
                eltAVariables.SetValeurChamp(variableValue.IdVariable, Convert.ToDouble(row[nCol.Value]));
            }
            catch
            {
            }

            //Ajoute les variables de filtre
            foreach (CFiltreDonneePrecalculee filtreDonnee in paramVisu.FiltresUtilisateur)
            {
                foreach (IVariableDynamique variable in filtreDonnee.Filtre.ListeVariables)
                {
                    CVariableDeFiltreDeportee v = new CVariableDeFiltreDeportee(eltAVariables);
                    v.Nom = variable.Nom;
                    v.SetTypeDonnee(variable.TypeDonnee);
                    v.ChampAssocieAuFiltre = filtreDonnee.ChampAssocie;
                    eltAVariables.AddVariable(v);
                    eltAVariables.SetValeurChamp(v.IdVariable, filtreDonnee.Filtre.GetValeurChamp(variable.IdVariable));
                }
            }
            return(eltAVariables);
        }