Пример #1
0
        /// ////////////////////////////////////////////////////////
        internal static CResultAErreur SerializeValeurVariable(
            ref object valeur,
            CVariableDynamique variable,
            C2iSerializer serializer,
            CContexteDonnee contexteDonnee,
            bool bAvecCompatibiliteSurVersionQuiTravaillaitDirectementDansCProcess)
        {
            int            nVersion = GetNumVersion();
            CResultAErreur result   = CResultAErreur.True;

            if (!bAvecCompatibiliteSurVersionQuiTravaillaitDirectementDansCProcess)
            {
                result = serializer.TraiteVersion(ref nVersion);
            }
            if (!result)
            {
                return(result);
            }
            if (variable is CVariableDynamiqueSaisie ||
                variable is CVariableDynamiqueSelectionObjetDonnee)
            {
                result = serializer.TraiteObjetSimple(ref valeur);
            }
            if (variable is CVariableProcessTypeComplexe)
            {
                Type tp = variable.TypeDonnee.TypeDotNetNatif;
                if (tp == typeof(int) || tp == typeof(double) || tp == typeof(string) ||
                    tp == typeof(DateTime) || tp == typeof(bool))
                {
                    if (nVersion >= 5)
                    {
                        serializer.TraiteObjetSimple(ref valeur);
                    }
                }
                else if (typeof(IObjetDonneeAIdNumeriqueAuto).IsAssignableFrom(tp))
                #region ObjetAIdNumerique AUTO

                {
                    if (!variable.TypeDonnee.IsArrayOfTypeNatif)
                    {
                        IObjetDonneeAIdNumeriqueAuto objet = (IObjetDonneeAIdNumeriqueAuto)valeur;
                        SerializeObjetAIdAuto(nVersion, objet == null ? tp : objet.GetType(), ref objet, serializer, contexteDonnee);
                        valeur = objet;
                    }
                    else
                    {
                        int nNb = 0;
                        if (valeur != null)
                        {
                            nNb = ((IList)valeur).Count;
                        }
                        serializer.TraiteInt(ref nNb);
                        switch (serializer.Mode)
                        {
                        case ModeSerialisation.Ecriture:
                            if (valeur != null)
                            {
                                foreach (IObjetDonneeAIdNumeriqueAuto objet in (IList)valeur)
                                {
                                    IObjetDonneeAIdNumeriqueAuto objetForRef = objet;
                                    SerializeObjetAIdAuto(nVersion, objetForRef == null ? tp : objetForRef.GetType(), ref objetForRef, serializer, contexteDonnee);
                                }
                            }
                            break;

                        case ModeSerialisation.Lecture:
                            ArrayList lst = new ArrayList();
                            for (int nElt = 0; nElt < nNb; nElt++)
                            {
                                IObjetDonneeAIdNumeriqueAuto element = null;
                                SerializeObjetAIdAuto(nVersion, tp, ref element, serializer, contexteDonnee);
                                if (element != null)
                                {
                                    lst.Add(element);
                                }
                            }
                            valeur = (IObjetDonneeAIdNumeriqueAuto[])lst.ToArray(typeof(IObjetDonneeAIdNumeriqueAuto));
                            break;
                        }
                    }
                }
                #endregion
            }
            return(result);
        }
Пример #2
0
        static int s_nIdNegatif = -1; // Utile pour les carac template vides

        public CCaracteristique(DataSet ds, IObjetDonneeAIdNumeriqueAuto objetEdite, Type typeObjetEdite, string strParentElementType, int nParentElementId, int nOrdre, int nIdGroupe, bool isTemplate)
        {
            m_objetEdite = objetEdite; // Cela peut être une caractéristique, mais pas frocément
            DataTable dt = ds.Tables[c_nomTable];

            if (dt == null)
            {
                return;
            }

            DataRow row = dt.NewRow();

            string strId          = "";
            string strLibelle     = "Nouvel élément";
            int    nTimosId       = s_nIdNegatif--;
            string strTypeElement = "";

            if (typeObjetEdite != null)
            {
                strTypeElement = typeObjetEdite.ToString();
            }
            int nIdMetaType = -1;

            if (objetEdite != null)
            {
                if (!isTemplate)
                {
                    nTimosId = objetEdite.Id;
                }
                strTypeElement = objetEdite.GetType().ToString();
                int nLastPoint = strTypeElement.LastIndexOf(".");
                strId = strTypeElement.Substring(nLastPoint + 1, strTypeElement.Length - nLastPoint - 1) + nTimosId;

                strLibelle = objetEdite.DescriptionElement;

                if (objetEdite is CCaracteristiqueEntite)
                {
                    CCaracteristiqueEntite carac = objetEdite as CCaracteristiqueEntite;
                    strLibelle = carac.Libelle;
                    if (strLibelle == "")
                    {
                        strLibelle = carac.TypeCaracteristique.Libelle;
                    }
                    if (carac.TypeCaracteristique != null)
                    {
                        nIdMetaType = carac.TypeCaracteristique.Id;
                    }
                }
                else if (objetEdite is CDossierSuivi)
                {
                    CDossierSuivi workbook = objetEdite as CDossierSuivi;
                    strLibelle = workbook.Libelle;
                    if (workbook.TypeDossier != null)
                    {
                        nIdMetaType = workbook.TypeDossier.Id;
                    }
                }
                else if (objetEdite is CSite)
                {
                    CSite site = objetEdite as CSite;
                    strLibelle = site.Libelle;
                    if (site.TypeSite != null)
                    {
                        nIdMetaType = site.TypeSite.Id;
                    }
                }
            }

            row[c_champId]                = strId;
            row[c_champTimosId]           = nTimosId;
            row[c_champElementType]       = strTypeElement;
            row[c_champTitre]             = strLibelle;
            row[c_champOrdreAffichage]    = nOrdre;
            row[c_champIdGroupeChamps]    = nIdGroupe;
            row[c_champIsTemplate]        = isTemplate;
            row[c_champIdMetaType]        = nIdMetaType;
            row[c_champParentElementType] = strParentElementType;
            row[c_champParentElementId]   = nParentElementId;

            m_row = row;
            dt.Rows.Add(row);
        }