Example #1
0
        //----------------------------------------------------------------------------------
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }
            if (!(obj is C2iStructureExport))
            {
                return(false);
            }
            CStringSerializer ser = new CStringSerializer(ModeSerialisation.Ecriture);

            if (Serialize(ser))
            {
                string strThis = ser.String;
                ser = new CStringSerializer(ModeSerialisation.Ecriture);
                if (((C2iStructureExport)obj).Serialize(ser))
                {
                    if (strThis.Equals(ser.String))
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
Example #2
0
        //-------------------------------------------------------------------
        public CResultAErreur InitFromContexte(CContexteFormNavigable ctx)
        {
            CResultAErreur result = CResultAErreur.True;

            m_contexte = ctx;

            /*m_listeObjets = (CListeObjetsDonnees)CStockeurObjetPersistant.AlloueFromPersistantData(
             *      (byte[])ctx["ListeObjets"], CSc2iWin32DataClient.ContexteCourant );*/
            CStringSerializer serializer = new CStringSerializer((string)ctx["ListeObjets"], ModeSerialisation.Lecture);
            I2iSerializable   obj        = null;

            if (serializer.TraiteObject(ref obj, CSc2iWin32DataClient.ContexteCourant))
            {
                m_listeObjets = (CListeObjetsDonnees)obj;
            }
            else
            {
                m_listeObjets = null;
            }
            if (AfterInitFromContexte != null)
            {
                AfterInitFromContexte(this, ctx);
            }
            return(result);
        }
Example #3
0
        //-------------------------------------------------------------------
        public virtual CResultAErreur InitFromContexte(CContexteFormNavigable ctx)
        {
            CResultAErreur result = CResultAErreur.True;

            m_contexte = ctx;
            if (ctx["CONTEXTE_UTILISATION"] != null)
            {
                ContexteUtilisation = ctx["CONTEXTE_UTILISATION"].ToString();
            }

            /*m_listeObjets = (CListeObjetsDonnees)CStockeurObjetPersistant.AlloueFromPersistantData(
             *      (byte[])ctx["ListeObjets"], CSc2iWin32DataClient.ContexteCourant );*/
            CStringSerializer serializer = new CStringSerializer((string)ctx["ListeObjets"], ModeSerialisation.Lecture);
            I2iSerializable   obj        = null;

            result = serializer.TraiteObject(ref obj, CSc2iWin32DataClient.ContexteCourant);
            if (!result)
            {
                System.Console.WriteLine(I.T("Erreur de chargement de la liste|30005") + result.Erreur.ToString());
                m_listeObjets = null;
            }
            else
            {
                m_listeObjets = (CListeObjetsDonnees)obj;
            }
            m_filtreDeBaseAvantClasseDerivee = ctx["FILTRE_DE_BASE"] as CFiltreData;
            m_bFiltreDeBaseStock             = true;
            m_panelListe.InitFromContexte(ctx);
            if (AfterInitFromContexte != null)
            {
                AfterInitFromContexte(this, ctx);
            }

            return(result);
        }
Example #4
0
        public static CParametreTriGantt GetParametreTriGantt(IElementDeGantt eltGantt)
        {
            if (eltGantt == null)
            {
                return(null);
            }
            string strCle = "Gantt sort";

            strCle += "-" + eltGantt.GanttBarId;
            string strSer = new CTimosAppRegistre().GetValue("preferences\\Gantt", strCle, "");

            if (strSer != "")
            {
                CStringSerializer  serializer = new CStringSerializer(strSer, ModeSerialisation.Lecture);
                CParametreTriGantt tri        = null;
                try
                {
                    if (serializer.TraiteObject <CParametreTriGantt>(ref tri))
                    {
                        return(tri);
                    }
                }
                catch { }
            }
            return(null);
        }
Example #5
0
        public CContexteFormNavigable GetContexte()
        {
            CContexteFormNavigable contexte = new CContexteFormNavigable(GetType());

            if (contexte == null)
            {
                return(null);
            }
            if (m_objetsAccedes != null)
            {
                ArrayList lst = new ArrayList(  );
                foreach (CObjetDonneeAIdNumerique objet in m_objetsAccedes)
                {
                    lst.Add(new CReferenceObjetDonnee(objet));
                }
                CStringSerializer serializer = new CStringSerializer(ModeSerialisation.Ecriture);
                serializer.TraiteArrayListOf2iSerializable(lst);
                contexte["OBJETS"] = serializer.String;
            }
            contexte["DATE"] = m_controlAgenda.DateEnCours;
            if (AfterGetContexte != null)
            {
                AfterGetContexte(this, contexte);
            }
            return(contexte);
        }
Example #6
0
        public CResultAErreur InitFromContexte(CContexteFormNavigable contexte)
        {
            CResultAErreur result = CResultAErreur.True;

            if (!result)
            {
                return(result);
            }
            if (contexte["OBJETS"] != null)
            {
                ArrayList         lst        = new ArrayList();
                CStringSerializer serializer = new CStringSerializer((string)contexte["OBJETS"], ModeSerialisation.Lecture);
                ArrayList         lstObjets  = new ArrayList();
                if (serializer.TraiteArrayListOf2iSerializable(lst))
                {
                    foreach (CReferenceObjetDonnee reference in lst)
                    {
                        lstObjets.Add(reference.GetObjet(CSc2iWin32DataClient.ContexteCourant));
                    }
                    m_objetsAccedes = (CObjetDonneeAIdNumerique[])lstObjets.ToArray(typeof(CObjetDonneeAIdNumerique));
                }
            }
            m_controlAgenda.DateEnCours = (DateTime)contexte["DATE"];
            if (AfterInitFromContexte != null)
            {
                AfterInitFromContexte(this, contexte);
            }
            return(result);
        }
        //-----------------------------------------------------------------
        public static CDefinitionProprieteDynamique GetDefinitionProprieteDynamique(string strPropriete, ref string strSuite)
        {
            I2iSerializable objDef = null;

            if (strPropriete.Length > 2 &&
                strPropriete.Substring(0, 2) == "~#")
            {
                string strStart = strPropriete.Substring(2);
                strSuite = "";
                int nPos = strStart.IndexOf("~@#@");
                if (nPos >= 0)
                {
                    strSuite = strStart.Substring(nPos + 4);
                    if (strSuite.Length > 1 && strSuite.Substring(0, 1) == ".")
                    {
                        strSuite = strSuite.Substring(1);
                    }
                    strStart = strStart.Substring(0, nPos);
                }

                CStringSerializer serializer = new CStringSerializer(strPropriete.Substring(2), ModeSerialisation.Lecture);
                objDef = (I2iSerializable)m_tableSerializeToDefinition[strPropriete];
                if (objDef == null)
                {
                    if (!serializer.TraiteObject(ref objDef))
                    {
                        objDef = null;
                    }
                    else
                    {
                        m_tableSerializeToDefinition[strPropriete] = objDef;
                    }
                }
            }
            else
            {
                //Il s'agit d'un nom de champ
                string[] strDatas = strPropriete.Split('.');
                string   strProp  = "";
                foreach (string strData in strDatas)
                {
                    strProp += CDefinitionProprieteDynamique.c_strCaractereStartCleType +
                               CDefinitionProprieteDynamiqueDotNet.c_strCleTypeDefinition +
                               CDefinitionProprieteDynamique.c_strCaractereEndCleType +
                               strData + ".";
                }
                if (strProp.Length > 1)
                {
                    strProp = strProp.Substring(0, strProp.Length - 1);
                }
                CDefinitionProprieteDynamiqueDotNet prop = new CDefinitionProprieteDynamiqueDotNet(strPropriete,
                                                                                                   strProp, new CTypeResultatExpression(typeof(string), false), false, false, "");
                strSuite = "";
                return(prop);
            }
            return(objDef as CDefinitionProprieteDynamique);
        }
Example #8
0
        public void SaveMemoUser(ref System.Collections.Generic.List <CMemoObjets.CReferenceObjetDonneeAvecLibelle> lst)
        {
            CStringSerializer ser = new CStringSerializer(ModeSerialisation.Ecriture);

            if (ser.TraiteListe <CMemoObjets.CReferenceObjetDonneeAvecLibelle>(lst))
            {
                SetValue("Preferences", "UserMemo", ser.String);
            }
        }
Example #9
0
        public static void SaveParametreNotifications(CParametresNotification parametre)
        {
            CStringSerializer ser = new CStringSerializer(ModeSerialisation.Ecriture);

            if (parametre.Serialize(ser))
            {
                new CTimosAppRegistre().SetValue("Preferences", "Notifications setup", ser.String);
            }
        }
Example #10
0
        private void Save()
        {
            CStringSerializer ser = new CStringSerializer(ModeSerialisation.Ecriture);

            if (ser.TraiteListe <CReferenceObjetDonneeAvecLibelle>(m_listeObjets))
            {
                C2iRegistre.SetValueInRegistreApplication("Preferences", "UserMemo", ser.String);
            }
        }
Example #11
0
        public static void SaveParametreVisuModulesParametrage(CParametreVisuModuleParametrage parametre)
        {
            CStringSerializer ser = new CStringSerializer(ModeSerialisation.Ecriture);

            if (parametre.Serialize(ser))
            {
                new CTimosAppRegistre().SetValue("Preferences", "module view", ser.String);
            }
        }
Example #12
0
        //----------------------------------------------------------------------------------
        public override int GetHashCode()
        {
            CStringSerializer ser = new CStringSerializer(ModeSerialisation.Ecriture);

            if (Serialize(ser))
            {
                return(ser.String.GetHashCode());
            }
            return(m_table.GetHashCode());
        }
Example #13
0
        public static void FillParametreNotifications(CParametresNotification parametre)
        {
            string strVal = new CTimosAppRegistre().GetValue("Preferences", "Notifications setup", "");

            if (strVal == "")
            {
                return;
            }
            CStringSerializer ser = new CStringSerializer(strVal, ModeSerialisation.Lecture);

            parametre.Serialize(ser);
        }
Example #14
0
        /// ///////////////////////////////////////////////////////
        private void SaveIntoRegistre()
        {
            if (m_postIt == null || m_postIt.IsNew())
            {
                return;
            }
            CStringSerializer serializer = new CStringSerializer(ModeSerialisation.Ecriture);

            if (Serialize(serializer))
            {
                new CTimosAppRegistre().SetDataPostit(m_postIt.Id, serializer.String);
            }
        }
Example #15
0
        ///////////////////////////////////////////////////
        public static string GetPseudoCode(C2iExpression exp)
        {
            if (exp == null)
            {
                return("");
            }
            CStringSerializer ser = new CStringSerializer(ModeSerialisation.Ecriture);

            exp.GetPseudoCode(ser);
            string strRetour = new CStringSerializerCompresseur().Compress(ser.String);

            return(strRetour);
        }
Example #16
0
        public bool ReadMemoUser(ref System.Collections.Generic.List <global::timos.Controles.MemoObjets.CMemoObjets.CReferenceObjetDonneeAvecLibelle> lst)
        {
            lst = new System.Collections.Generic.List <CMemoObjets.CReferenceObjetDonneeAvecLibelle>();
            string strValue = GetValue("Preferences", "UserMemo", "");

            if (strValue.Trim() == "")
            {
                return(false);
            }
            CStringSerializer ser = new CStringSerializer(strValue, ModeSerialisation.Lecture);

            return(ser.TraiteListe <CMemoObjets.CReferenceObjetDonneeAvecLibelle>(lst));
        }
        /// <summary>
        /// Surchages de CInfoStructureDynamique
        /// </summary>
        /// <param name="tp"></param>
        /// <param name="nDepth"></param>
        /// <returns></returns>
        //-----------------------------------------------------------------
        public static CInfoStructureDynamique GetStructure(Type tp, int nDepth)
        {
            if (nDepth < 0)
            {
                return(null);
            }
            CFournisseurPropDynStd fournisseur = new CFournisseurPropDynStd(false);
            ArrayList lst = new ArrayList();

            foreach (CDefinitionProprieteDynamique def in  fournisseur.GetDefinitionsChamps(tp, 0, null))
            {
                if (!def.TypeDonnee.IsArrayOfTypeNatif)
                {
                    CInfoChampDynamique     info     = null;
                    CInfoStructureDynamique infoFils = GetStructure(def.TypeDonnee.TypeDotNetNatif, nDepth - 1);
                    if (infoFils != null && infoFils.Champs.Count == 0)
                    {
                        infoFils = null;
                    }
                    //Champs simples, interpretés par CInterpreteurTextePropriete
                    if (def.GetType() == typeof(CDefinitionProprieteDynamique))
                    {
                        info = new CInfoChampDynamique(
                            def.Nom,
                            def.TypeDonnee.TypeDotNetNatif,
                            def.NomPropriete,
                            def.Rubrique,
                            infoFils);
                    }
                    else
                    {
                        CStringSerializer serializer = new CStringSerializer(ModeSerialisation.Ecriture);
                        I2iSerializable   obj        = (I2iSerializable)def;
                        serializer.TraiteObject(ref obj);
                        info = new CInfoChampDynamique(
                            def.Nom,
                            def.TypeDonnee.TypeDotNetNatif,
                            "~#" + serializer.String + "~@#@",
                            def.Rubrique,
                            infoFils);
                    }
                    lst.Add(info);
                }
            }
            CInfoStructureDynamique infoStructure = new CInfoStructureDynamique();

            infoStructure.NomConvivial = DynamicClassAttribute.GetNomConvivial(tp);
            infoStructure.Champs       = lst;
            return(infoStructure);
        }
Example #18
0
        public void Read()
        {
            string strValue = C2iRegistre.GetValueInRegistreApplication("Preferences", "UserMemo", "");

            if (strValue.Trim() != "")
            {
                List <CReferenceObjetDonneeAvecLibelle> lst = new List <CReferenceObjetDonneeAvecLibelle>();
                CStringSerializer ser = new CStringSerializer(strValue, ModeSerialisation.Lecture);
                if (ser.TraiteListe <CReferenceObjetDonneeAvecLibelle>(lst))
                {
                    m_listeObjets = lst;
                }
            }
        }
Example #19
0
 //------------------------------------------------
 private void SaveStateInRegistre()
 {
     if (m_strPreserveStateKey != null && m_strPreserveStateKey.Length > 0)
     {
         CStringSerializer serializer = new CStringSerializer(ModeSerialisation.Ecriture);
         CResultAErreur    result     = SerializeState(serializer);
         string            strVal     = serializer.String;
         if (!result)
         {
             strVal = "";
         }
         C2iRegistre.SetValueInRegistreApplication(c_strCleRegistre, m_strPreserveStateKey, strVal);
     }
 }
        public static CResultAErreur SauvegarderDansRegistre(CContexteSauvegardeProfilDesigner ctx)
        {
            CResultAErreur               result     = CResultAErreur.True;
            CStringSerializer            serializer = new CStringSerializer(ModeSerialisation.Ecriture);
            CProfilEditeurObjetGraphique prof       = ctx.Profil;

            result = prof.Serialize(serializer);
            if (result)
            {
                new CTimosAppRegistre().SetDataProfilDesigner(ctx.Cle, serializer.String);
            }

            return(result);
        }
Example #21
0
        //-------------------------------------------------------------------
        public CContexteFormNavigable GetContexte()
        {
            CContexteFormNavigable ctx = new CContexteFormNavigable(GetType());
            //ctx["ListeObjets"] = CStockeurObjetPersistant.GetPersistantData(m_listeObjets);
            CStringSerializer serializer = new CStringSerializer(ModeSerialisation.Ecriture);
            I2iSerializable   obj        = m_listeObjets;

            serializer.TraiteObject(ref obj);
            ctx["ListeObjets"] = serializer.String;
            if (AfterGetContexte != null)
            {
                AfterGetContexte(this, ctx);
            }
            return(ctx);
        }
Example #22
0
        /// //////////////////////////////////////////////////////////
        public CResultAErreur ExportData(string strChaineSerializationListeObjetDonnee, C2iStructureExport structure, IElementAVariablesDynamiquesAvecContexteDonnee elementAVariablesDynamiquesPourFiltre, IIndicateurProgression indicateur)
        {
            System.Threading.Thread.CurrentThread.Priority = System.Threading.ThreadPriority.BelowNormal;
            //Déserialise la liste d'objets
            CStringSerializer serializer = new CStringSerializer(strChaineSerializationListeObjetDonnee, ModeSerialisation.Lecture);
            C2iSponsor        sponsor    = new C2iSponsor();

            sponsor.Register(indicateur);
            CResultAErreur result = CResultAErreur.True;

            try
            {
                using (CContexteDonnee contexte = new CContexteDonnee(IdSession, true, false))
                {
                    I2iSerializable objet = null;
                    contexte.GestionParTablesCompletes = true;
                    result = serializer.TraiteObject(ref objet, contexte);
                    if (!result)
                    {
                        return(result);
                    }
                    if (objet == null || !(objet is CListeObjetsDonnees))
                    {
                        result.EmpileErreur(I.T("Error during the deserialization of source list|101"));
                        return(result);
                    }
                    CListeObjetsDonnees listeSource = (CListeObjetsDonnees)objet;
                    listeSource.RemplissageProgressif = false;
                    structure.TraiterSurServeur       = false;
                    DataSet ds = new DataSet();
                    result = structure.Export(IdSession, listeSource, ref ds, elementAVariablesDynamiquesPourFiltre, indicateur);
                    if (result)
                    {
                        result.Data = ds;
                    }
                    return(result);
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            finally
            {
                sponsor.Unregister(indicateur);
            }
            return(result);
        }
Example #23
0
        public static CParametreVisuModuleParametrage GetParametreVisuModulesParametrage()
        {
            string strVal = new CTimosAppRegistre().GetValue("Preferences", "module view", "");

            if (strVal == "")
            {
                return(null);
            }
            CParametreVisuModuleParametrage parametre = new CParametreVisuModuleParametrage();
            CStringSerializer ser = new CStringSerializer(strVal, ModeSerialisation.Lecture);

            if (parametre.Serialize(ser))
            {
                return(parametre);
            }
            return(null);
        }
Example #24
0
        /// ///////////////////////////////////////////////////////
        private void ReadFromRegistre()
        {
            if (m_postIt == null || m_postIt.IsNew())
            {
                return;
            }
            string strData = new CTimosAppRegistre().GetDataPostit(m_postIt.Id);

            try
            {
                CStringSerializer serializer = new CStringSerializer(strData, ModeSerialisation.Lecture);
                Serialize(serializer);
            }
            catch
            {
            }
        }
Example #25
0
        //-------------------------------------------------------------------
        public virtual CContexteFormNavigable GetContexte()
        {
            CContexteFormNavigable ctx = new CContexteFormNavigable(GetType());
            //ctx["ListeObjets"] = CStockeurObjetPersistant.GetPersistantData(m_listeObjets);
            CStringSerializer serializer = new CStringSerializer(ModeSerialisation.Ecriture);
            I2iSerializable   obj        = m_listeObjets;

            serializer.TraiteObject(ref obj);
            ctx["ListeObjets"]          = serializer.String;
            ctx["CONTEXTE_UTILISATION"] = ContexteUtilisation;
            m_panelListe.FillContexte(ctx);
            ctx["FILTRE_DE_BASE"] = m_filtreDeBaseAvantClasseDerivee;
            if (AfterGetContexte != null)
            {
                AfterGetContexte(this, ctx);
            }
            return(ctx);
        }
Example #26
0
        //----------------------------------------------------------------------------------
        public CResultAErreur Export(int nIdSession,
                                     IEnumerable list,
                                     ref DataSet ds,
                                     IElementAVariablesDynamiquesAvecContexteDonnee elementAVariablesPourFiltre,
                                     IIndicateurProgression indicateur)
        {
            if (list is CListeObjetsDonnees && m_bTraitementSurServeur)
            {
                CResultAErreur    result           = CResultAErreur.True;
                CStringSerializer serializer       = new CStringSerializer(ModeSerialisation.Ecriture);
                I2iSerializable   listeToSerialize = (I2iSerializable)list;
                result = serializer.TraiteObject(ref listeToSerialize);
                if (!result)
                {
                    return(result);
                }
                I2iExporteurSurServeur exporteur = ( I2iExporteurSurServeur )C2iFactory.GetNewObjetForSession("C2iExporteurSurServeur", typeof(I2iExporteurSurServeur), nIdSession);

                try
                {
                    result = exporteur.ExportData(serializer.String, this, elementAVariablesPourFiltre, indicateur);
                    if (result)
                    {
                        ds = (DataSet)result.Data;
                    }
                }
                catch (Exception e)
                {
                    result.EmpileErreur(new CErreurException(e));
                    result.EmpileErreur(I.T("Error during the export on the server|101"));
                }
                return(result);
            }
            if (IsStructureComplexe)
            {
                return(ExportComplexe(nIdSession, list, ref ds, elementAVariablesPourFiltre, indicateur));
            }
            else
            {
                return(ExportSimple(nIdSession, list, ref ds, indicateur));
            }
        }
        public static CResultAErreur InitialiserProfil(CContexteSauvegardeProfilDesigner ctx)
        {
            CResultAErreur result  = CResultAErreur.True;
            string         strData = new CTimosAppRegistre().GetDataProfilDesigner(ctx.Cle);

            if (strData != "")
            {
                try
                {
                    CProfilEditeurObjetGraphique prof       = ctx.Profil;
                    CStringSerializer            serializer = new CStringSerializer(strData, ModeSerialisation.Lecture);
                    result = prof.Serialize(serializer);
                    ctx.Designer.Profil = prof;
                }
                catch
                {
                }
            }
            return(result);
        }
Example #28
0
        public static void SetParametreTriGantt(IElementDeGantt eltGantt, CParametreTriGantt parametre)
        {
            if (eltGantt == null)
            {
                return;
            }
            string strCle = "Gantt sort";

            strCle += "-" + eltGantt.GanttBarId;
            string strSer = "";

            if (parametre != null)
            {
                CStringSerializer serializer = new CStringSerializer(ModeSerialisation.Ecriture);
                if (serializer.TraiteObject <CParametreTriGantt>(ref parametre))
                {
                    strSer = serializer.String;
                }
            }
            new CTimosAppRegistre().SetValue("preferences\\Gantt", strCle, strSer);
        }
Example #29
0
        /// ///////////////////////////////////////////////////////////////
        public CResultAErreur CreateValise(CObjetDonneeAIdNumeriqueAuto objet, DataSet ds)
        {
            int            nIdSession = objet.ContexteDonnee.IdSession;
            CResultAErreur result     = CResultAErreur.True;

            using (CContexteDonnee contextePourChargementComplet = new CContexteDonnee(nIdSession, true, false))
            {
                result = contextePourChargementComplet.SetVersionDeTravail(objet.ContexteDonnee.IdVersionDeTravail, true);
                if (!result)
                {
                    return(result);
                }
                CObjetDonneeAIdNumeriqueAuto source = (CObjetDonneeAIdNumeriqueAuto)Activator.CreateInstance(objet.GetType(), new object[] { contextePourChargementComplet });
                if (!source.ReadIfExists(objet.Id))
                {
                    result.EmpileErreur(I.T("Impossible to read the object @1 again|173", objet.Id.ToString()));
                    return(result);
                }
                ReadObjetEtDependances(source);

                //Toutes les données sont lues, il n'y a plus qu'à les copier dans le dataset valise
                foreach (DataTable tableSource in contextePourChargementComplet.Tables)
                {
                    ds.Merge(tableSource);
                    //Crée les colonnes byte[] en place des CDonneeBinaireInRow
                    DataTable newTable = ds.Tables[tableSource.TableName];
                    if (tableSource.PrimaryKey.Length != 0)
                    {
                        foreach (DataColumn col in tableSource.Columns)
                        {
                            if (col.DataType == typeof(CDonneeBinaireInRow))
                            {
                                newTable.Columns.Remove(col.ColumnName);
                                DataColumn newCol = new DataColumn(col.ColumnName, typeof(string));
                                newCol.AllowDBNull = true;
                                newTable.Columns.Add(col.ColumnName);
                                foreach (DataRow rowSource in tableSource.Rows)
                                {
                                    ArrayList keys = new ArrayList();
                                    foreach (DataColumn primKey in tableSource.PrimaryKey)
                                    {
                                        keys.Add(rowSource[primKey]);
                                    }
                                    DataRow rowDest = newTable.Rows.Find(keys.ToArray());
                                    if (rowDest != null)
                                    {
                                        CDonneeBinaireInRow donnee    = new CDonneeBinaireInRow(objet.ContexteDonnee.IdSession, rowSource, col.ColumnName);
                                        byte[]            dataBinaire = donnee.Donnees;
                                        CStringSerializer serializer  = new CStringSerializer(ModeSerialisation.Ecriture);
                                        serializer.TraiteByteArray(ref dataBinaire);
                                        rowDest[col.ColumnName] = serializer.String;
                                    }
                                }
                            }
                        }
                    }
                }


                foreach (DataRelation relation in contextePourChargementComplet.Relations)
                {
                    DataColumn colParente, colFille;
                    colParente = ds.Tables[relation.ParentTable.TableName].Columns[relation.ParentColumns[0].ColumnName];
                    colFille   = ds.Tables[relation.ChildTable.TableName].Columns[relation.ChildColumns[0].ColumnName];
                    DataRelation rel = ds.Relations.Add(
                        relation.RelationName,
                        colParente,
                        colFille,
                        true);
                    rel.ChildKeyConstraint.UpdateRule = Rule.Cascade;
                }
            }
            return(result);
        }
Example #30
0
        /// ///////////////////////////// ///////////////////////////// //////////////////////////
        /// <summary>

        /// </summary>
        /// <param name="rowSource"></param>
        /// <param name="objetDest"></param>
        /// <param name="interfaceMapping"></param>
        /// <returns></returns>
        private CResultAErreur ImporteObjet(DataRow rowSource, CObjetDonneeAIdNumeriqueAuto objetDest, IInterfaceImportObjetDonnee interfaceMapping)
        {
            CResultAErreur result = CResultAErreur.True;

            rowSource[objetDest.GetChampId()] = objetDest.Id;
            rowSource[c_colIsMappe]           = true;

            //Mappe les parents de l'objet dest
            foreach (DataRelation relation in rowSource.Table.ParentRelations)
            {
                DataRow rowParente = rowSource.GetParentRow(relation);
                if (rowParente != null && !(bool)rowParente[c_colIsMappe])
                {
                    CObjetDonneeAIdNumeriqueAuto objetParent = null;
                    CListeObjetsDonnees          liste       = new CListeObjetsDonnees(objetDest.ContexteDonnee, CContexteDonnee.GetTypeForTable(relation.ParentTable.TableName));
                    result = interfaceMapping.MapObjet(rowParente, liste, ref objetParent);
                    if (!result)
                    {
                        return(result);
                    }
                    if (objetParent != null)
                    {
                        rowParente[objetParent.GetChampsId()[0]] = objetParent.Id;
                    }
                    else
                    {
                        rowSource[relation.ChildColumns[0]] = DBNull.Value;
                    }
                    rowParente[c_colIsMappe] = true;

                    objetDest.SetParent(relation.ChildColumns[0].ColumnName, objetParent);
                }
            }
            objetDest.AssureData();
            DataTable tableDest   = objetDest.Table;
            DataTable tableSource = rowSource.Table;


            //Copie les données
            objetDest.ContexteDonnee.CopyRow(rowSource, objetDest.Row.Row,
                                             objetDest.GetChampId(), CSc2iDataConst.c_champIdSynchro, CContexteDonnee.c_colLocalKey,
                                             CContexteDonnee.c_colIsToRead, CContexteDonnee.c_colIsFromDb);

            //Convertit les données binaires
            foreach (DataColumn colDest in tableDest.Columns)
            {
                if (colDest.DataType == typeof(CDonneeBinaireInRow))
                {
                    DataColumn colSource = tableSource.Columns[colDest.ColumnName];
                    if (colSource != null && colSource.DataType == typeof(string))
                    {
                        object donneesSource = rowSource[colDest.ColumnName];
                        if (donneesSource != DBNull.Value)
                        {
                            CStringSerializer serializer = new CStringSerializer((string)donneesSource, ModeSerialisation.Lecture);
                            byte[]            data       = null;
                            serializer.TraiteByteArray(ref data);
                            CDonneeBinaireInRow donneeBinaire = new CDonneeBinaireInRow(objetDest.ContexteDonnee.IdSession,
                                                                                        objetDest.Row.Row, colDest.ColumnName);
                            if (data.Length == 0)
                            {
                                donneeBinaire.Donnees = null;
                            }
                            else
                            {
                                donneeBinaire.Donnees = data;
                            }
                        }
                    }
                }
            }

            //Mappe les fils
            foreach (DataRelation relation in rowSource.Table.ChildRelations)
            {
                DataRow[] rowsFilles = rowSource.GetChildRows(relation);
                CObjetDonneeAIdNumeriqueAuto[] objetsFilles = new CObjetDonneeAIdNumeriqueAuto[rowsFilles.Length];
                int nIndex = 0;
                CListeObjetsDonnees listeFilles = objetDest.GetDependancesListe(relation.ChildTable.TableName, relation.ChildColumns[0].ColumnName);
                if (listeFilles.Count != 0)
                {
                    string strExclus = "";
                    foreach (DataRow rowFille in rowsFilles)
                    {
                        CObjetDonneeAIdNumeriqueAuto objetFils = null;
                        result = interfaceMapping.MapObjet(rowFille, listeFilles, ref objetFils);
                        if (!result)
                        {
                            return(result);
                        }
                        objetsFilles[nIndex] = objetFils;
                        if (objetFils != null)
                        {
                            if (strExclus.Length != 0)
                            {
                                strExclus += ",";
                            }
                            strExclus         += objetFils.Id.ToString();
                            listeFilles.Filtre = new CFiltreData(objetFils.GetChampId() + " not in (" + strExclus + ")");
                        }
                        nIndex++;
                    }
                }

                nIndex = 0;
                foreach (DataRow rowFille in rowSource.GetChildRows(relation))
                {
                    CObjetDonneeAIdNumeriqueAuto objetFille = objetsFilles[nIndex];
                    if (objetFille == null)
                    {
                        objetFille = (CObjetDonneeAIdNumeriqueAuto)Activator.CreateInstance(
                            CContexteDonnee.GetTypeForTable(relation.ChildTable.TableName),
                            new object[] { objetDest.ContexteDonnee });
                        objetFille.CreateNewInCurrentContexte();
                    }
                    result = ImporteObjet(rowFille, objetFille, interfaceMapping);
                    if (!result)
                    {
                        return(result);
                    }
                    rowFille[c_colIsMappe] = true;
                    nIndex++;
                }
            }
            return(result);
        }