コード例 #1
0
ファイル: CFormNavigationGED.cs プロジェクト: ykebaili/Timos
        //----------------------------------------------------------------------
        public CResultAErreur SetParametres(Dictionary <string, object> dicParametres)
        {
            CResultAErreur result = CResultAErreur.True;

            object obj = null;

            if (dicParametres.TryGetValue(m_cParametreElementId, out obj))
            {
                if (obj is int)
                {
                    int nId = (int)obj;
                    if (dicParametres.TryGetValue(m_cParametreElementType, out obj))
                    {
                        string strType = (string)obj;
                        Type   tp      = CActivatorSurChaine.GetType(strType);
                        if (tp != null)
                        {
                            m_elementForGED = (CObjetDonneeAIdNumerique)Activator.CreateInstance(
                                tp,
                                new object[] { CSc2iWin32DataClient.ContexteCourant });
                            if (!m_elementForGED.ReadIfExists(nId))
                            {
                                m_elementForGED = null;
                                result.EmpileErreur(I.T("Element for EDM Navigation Form not found|10100"));
                                return(result);
                            }
                        }
                    }
                }
            }

            return(result);
        }
コード例 #2
0
 //----------------------------------------------------
 public static bool ReadIfExists(this CDbKey key, CObjetDonnee objet)
 {
     if (key.InternalUniversalIdANeJamaisUtiliserSaufDansCDbKeyAddOn.Length > 0)
     {
         if (objet.ReadIfExistsUniversalId(key.InternalUniversalIdANeJamaisUtiliserSaufDansCDbKeyAddOn))
         {
             return(true);
         }
         return(false);
     }
     if (key.InternalIdNumeriqueANeJamaisUtiliserSaufDansCDbKeyAddOn != null)
     {
         IObjetDonneeAIdNumerique objetId = objet as IObjetDonneeAIdNumerique;
         if (objetId != null && objetId.ReadIfExists(key.InternalIdNumeriqueANeJamaisUtiliserSaufDansCDbKeyAddOn.Value))
         {
             return(true);
         }
     }
     return(false);
 }
コード例 #3
0
        public override sc2i.common.CResultAErreur InitFromContexte(CContexteFormNavigable ctx)
        {
            CResultAErreur result = base.InitFromContexte(ctx);

            if (!result)
            {
                return(result);
            }
            if (ctx["TYPE_OBJET"] != null)
            {
                m_objetForGED = (CObjetDonneeAIdNumerique)Activator.CreateInstance(
                    (Type)ctx["TYPE_OBJET"],
                    new object[] { CSc2iWin32DataClient.ContexteCourant });
                if (!m_objetForGED.ReadIfExists((int)ctx["ID_OBJET"]))
                {
                    m_objetForGED = null;
                }
            }
            return(result);
        }
コード例 #4
0
        public override sc2i.common.CResultAErreur InitFromContexte(CContexteFormNavigable ctx)
        {
            CResultAErreur result = base.InitFromContexte(ctx);

            if (!result)
            {
                return(result);
            }
            if (ctx["TYPE_OBJET"] != null)
            {
                m_objetForSuivi = (CObjetDonneeAIdNumerique)Activator.CreateInstance(
                    (Type)ctx["TYPE_OBJET"],
                    new object[] { CSc2iWin32DataClient.ContexteCourant });
                if (!m_objetForSuivi.ReadIfExists((int)ctx["ID_OBJET"]))
                {
                    m_objetForSuivi = null;
                }
            }
            m_chkOnlyPrincipaux.Checked = (bool)ctx["PRINCIPAUX"];
            return(result);
        }
コード例 #5
0
ファイル: CFormNavigationGED.cs プロジェクト: ykebaili/Timos
        public CResultAErreur InitFromContexte(CContexteFormNavigable contexte)
        {
            CResultAErreur result = CResultAErreur.True;

            m_contexte = contexte;

            if (contexte["TYPE_OBJET"] != null)
            {
                m_elementForGED = (CObjetDonneeAIdNumerique)Activator.CreateInstance(
                    (Type)contexte["TYPE_OBJET"],
                    new object[] { CSc2iWin32DataClient.ContexteCourant });
                if (!m_elementForGED.ReadIfExists((int)contexte["ID_OBJET"]))
                {
                    m_elementForGED = null;
                }
            }
            if (AfterInitFromContexte != null)
            {
                AfterInitFromContexte(this, contexte);
            }

            return(result);
        }
コード例 #6
0
        /// ////////////////////////////////////////////////////////
        private static void SerializeObjetAIdAuto(
            int nVersion,
            Type typeObjet,
            ref IObjetDonneeAIdNumerique valeur,
            C2iSerializer serializer,
            CContexteDonnee contexte)
        {
            //TESTDBKEYTODO : REmplacer l'id par un DbKey
            CDbKey dbKey = null;

            if (valeur is CObjetDonnee && ((CObjetDonnee)valeur).Row.RowState != DataRowState.Deleted &&
                ((CObjetDonnee)valeur).Row.RowState != DataRowState.Detached)
            {
                dbKey = valeur.DbKey;
            }
            if (nVersion < 14)
            {
                serializer.ReadDbKeyFromOldId(ref dbKey, typeObjet);
            }
            else
            {
                serializer.TraiteDbKey(ref dbKey);
            }

            if (nVersion >= 8 && dbKey != null)
            {
                serializer.TraiteType(ref typeObjet);
            }
            if (dbKey != null && serializer.Mode == ModeSerialisation.Lecture)
            {
                valeur = (IObjetDonneeAIdNumerique)Activator.CreateInstance(typeObjet, new object[] { contexte });
                if (!valeur.ReadIfExists(dbKey))
                {
                    valeur = null;
                }
            }
        }
コード例 #7
0
        /// ////////////////////////////////////////////////////////
        protected override CResultAErreur MyExecute(CContexteExecutionAction contexte)
        {
            CResultAErreur result = CResultAErreur.True;

            //Calcule la nouvelle valeur
            CContexteEvaluationExpression contexteEval = new CContexteEvaluationExpression(Process);

            contexteEval.AttacheObjet(typeof(CContexteDonnee), contexte.ContexteDonnee);
            result = ExpressionValeur.Eval(contexteEval);
            if (!result)
            {
                result.EmpileErreur(I.T("Error during @1 formula evaluation|216", ExpressionValeur.ToString()));
                return(result);
            }
            object nouvelleValeur = result.Data;



            CVariableDynamique variable = VariableAModifier;

            if (nouvelleValeur is CResultAErreur && variable == null)
            {
                return(( CResultAErreur )nouvelleValeur);
            }

            if (variable != null)
            {
                /*result.EmpileErreur("Variable "+m_nIdVariableAModifier.ToString()+" inconnue");
                 * return result;
                 * }*/
                if (variable is CVariableProcessTypeComplexe &&
                    typeof(IObjetDonneeAIdNumerique).IsAssignableFrom(variable.TypeDonnee.TypeDotNetNatif))
                {
                    ArrayList lstElements = new ArrayList();
                    try
                    {
                        ArrayList lst = new ArrayList();
                        if (typeof(IObjetDonneeAIdNumerique).IsAssignableFrom(result.Data.GetType()) ||
                            result.Data is int)
                        {
                            lst.Add(result.Data);
                        }
                        else if (result.Data is IList)
                        {
                            foreach (object item in (IList)result.Data)
                            {
                                lst.Add(item);
                            }
                        }
                        else
                        {
                            result.EmpileErreur(I.T("Incompatible value type|228"));
                            return(result);
                        }

                        Type tp = variable.TypeDonnee.TypeDotNetNatif;
                        foreach (object obj in lst)
                        {
                            if (obj is  int)
                            {
                                IObjetDonneeAIdNumerique objet = (IObjetDonneeAIdNumerique)Activator.CreateInstance(tp, new object[] { contexte.ContexteDonnee });
                                if (objet.ReadIfExists((int)obj))
                                {
                                    lstElements.Add(objet);
                                }
                            }
                            else if (typeof(IObjetDonneeAIdNumerique).IsAssignableFrom(obj.GetType()))
                            {
                                lstElements.Add(obj);
                            }
                        }
                    }
                    catch
                    {
                    }
                    if (variable.TypeDonnee.IsArrayOfTypeNatif)
                    {
                        contexte.Branche.Process.SetValeurChamp(variable, lstElements);
                    }
                    else
                    {
                        if (lstElements.Count > 0)
                        {
                            contexte.Branche.Process.SetValeurChamp(variable, lstElements[0]);
                        }
                        else
                        {
                            contexte.Branche.Process.SetValeurChamp(variable, null);
                        }
                    }
                }
                else
                {
                    contexte.Branche.Process.SetValeurChamp(variable, result.Data);
                }
            }

            return(result);
        }