コード例 #1
0
        public static object GetValeur(
            DataRow row,
            string strChampString,
            string strChampBlob,
            string strChampType,
            CContexteDonnee ctx)
        {
            Type t = CActivatorSurChaine.GetType((string)row[strChampType]);

            if (t == typeof(IDifferencesBlob))
            {
                CDonneeBinaireInRow    blob       = GetBlob(row, strChampBlob, ctx);
                MemoryStream           stream     = new MemoryStream(blob.Donnees);
                BinaryReader           reader     = new BinaryReader(stream);
                CSerializerReadBinaire serializer = new CSerializerReadBinaire(reader);
                I2iSerializable        objet      = null;
                CResultAErreur         result     = serializer.TraiteObject(ref objet);

                reader.Close();
                stream.Close();

                if (result)
                {
                    return(objet);
                }
                System.Console.WriteLine(I.T("Error while deserializing blob diffs|30000"));
                return(null);
            }
            else if (t == typeof(byte[]))
            {
                CDonneeBinaireInRow blob = GetBlob(row, strChampBlob, ctx);
                if (blob != null)
                {
                    return(blob.Donnees);
                }
                else
                {
                    return(null);
                }
            }
            else if (typeof(CObjetDonneeAIdNumerique).IsAssignableFrom(t))
            {
                int nId = Int32.Parse((string)row[strChampString]);
                CObjetDonneeAIdNumerique obj = (CObjetDonneeAIdNumerique)Activator.CreateInstance(t, new object[] { ctx });
                if (obj.ReadIfExists(nId))
                {
                    return(obj);
                }
                return(null);
            }
            else if (t != null && row[strChampString] != DBNull.Value)
            {
                return(CUtilTexte.FromUniversalString((string)row[strChampString], t));
            }
            return(null);
        }
コード例 #2
0
        public void Init(CControlListeOperationsSurCAVO.CValeurCAVOO valeurCAVOO)
        {
            m_origine         = valeurCAVOO.Origine;
            m_strLigneCible   = valeurCAVOO.CAVOO.ValChampCibleString;
            m_strLigneOrigine = valeurCAVOO.CAVOO.ValChampSourceString;
            byte[] byteOfTb = null;

            if (valeurCAVOO.CAVOO.ValChampCibleBlob.Donnees != null &&
                valeurCAVOO.CAVOO.ValChampCibleBlob.Donnees.Length > 0)
            {
                byteOfTb = valeurCAVOO.CAVOO.ValChampCibleBlob.Donnees;
            }
            else
            {
                byteOfTb = valeurCAVOO.CAVOO.ValChampSourceBlob.Donnees;
            }

            m_dt = CUtilADataTable.UnserializeDataTable(byteOfTb);

            string strLigneConcernee = m_origine == EOrigineVersion.Cible ? m_strLigneCible: m_strLigneOrigine;
            bool   bNull             = strLigneConcernee == "@NULL";

            if (bNull)
            {
                m_dgv.DataSource       = null;
                m_dgv.ContextMenuStrip = null;
                return;
            }
            string[] datas = null;
            if (!bNull)
            {
                datas = strLigneConcernee.Split('|');
            }

            DataRow dr = m_dt.NewRow();

            int nCpt = 0;

            foreach (DataColumn dc in m_dt.Columns)
            {
                if (nCpt >= datas.Length)
                {
                    break;
                }
                if (dc.ColumnName == "ID")
                {
                    dr[dc] = 0;
                    continue;
                }
                if (!bNull)
                {
                    if (datas[nCpt] == "@NULL")
                    {
                        dr[dc] = DBNull.Value;
                    }
                    else
                    {
                        if (dc.DataType == typeof(DateTime))
                        {
                            dr[dc] = (DateTime)CUtilTexte.FromUniversalString((string)datas[nCpt], typeof(DateTime));
                        }
                        else if (dc.DataType == typeof(int))
                        {
                            dr[dc] = (int)CUtilTexte.FromUniversalString((string)datas[nCpt], typeof(int));
                        }
                        else if (dc.DataType == typeof(bool))
                        {
                            dr[dc] = (bool)CUtilTexte.FromUniversalString((string)datas[nCpt], typeof(bool));
                        }
                        else if (dc.DataType == typeof(double))
                        {
                            dr[dc] = (double)CUtilTexte.FromUniversalString((string)datas[nCpt], typeof(double));
                        }
                        else
                        {
                            dr[dc] = datas[nCpt];
                        }
                    }
                }
                else
                {
                    dc.AllowDBNull = true;
                    dr[dc]         = DBNull.Value;
                }
                nCpt++;
            }
            m_dt.Rows.Add(dr);
            m_dgv.DataSource         = m_dt;
            m_dgv.Columns[0].Visible = false;


            m_dgv.CellFormatting += new DataGridViewCellFormattingEventHandler(m_dgv_CellFormatting);

            m_dgv.ColumnWidthChanged  += new DataGridViewColumnEventHandler(m_dgv_ColumnWidthChanged);
            m_dgv.AutoSizeColumnsMode  = DataGridViewAutoSizeColumnsMode.Fill;
            m_dgv.AllowUserToAddRows   = false;
            m_dgv.ColumnHeadersVisible = false;
            m_dgv.RowHeadersVisible    = true;
            m_dgv.RowHeadersWidth      = 10;
            m_dgv.ReadOnly             = true;

            ActualiserTextMenu();
            //m_dgv.ColumnHeadersVisible = false;

            //if (diffTable.CreationTable)
            //{
            //}
            //else if (diffTable.ChangementStructureTable)
            //{
            //}
            //else if (diffTable.ChangementClePrimaire)
            //{
            //}
            //else
            //{
            //    //Récupération de la ligne concernée

            //}
        }
コード例 #3
0
        //-----------------------------------------------------------
        public static CResultAErreur RunProcess(int nIdProcess, Dictionary <string, string> valeursParametres)
        {
            AssureTimerNettoyage();
            CResultAErreur result = GetSession();

            if (!result)
            {
                return(result);
            }
            CDonneeSessionProcess donneeSession = result.Data as CDonneeSessionProcess;

            result = CResultAErreur.True;
            try
            {
                CSessionClient session = donneeSession.SessionClient;
                using (CContexteDonnee contexte = new CContexteDonnee(session.IdSession, true, false))
                {
                    CProcessInDb processInDb = new CProcessInDb(contexte);
                    if (!processInDb.ReadIfExists(nIdProcess))
                    {
                        result.EmpileErreur(I.T("The process @1 doesn't exist|30008", nIdProcess.ToString()));
                        result.Data = (int)EErreurs.ProcessDoesntExists;
                        return(result);
                    }
                    CProcess process = processInDb.Process;
                    foreach (KeyValuePair <string, string> parametre in valeursParametres)
                    {
                        string strParametre = parametre.Key;
                        string strValeur    = parametre.Value;
                        bool   bTrouvee     = false;
                        foreach (IVariableDynamique variable in process.ListeVariables)
                        {
                            if (strParametre.ToUpper() == variable.Nom.ToUpper())
                            {
                                if (!variable.TypeDonnee.TypeDotNetNatif.IsValueType && variable.TypeDonnee.TypeDotNetNatif != typeof(string))
                                {
                                    result.EmpileErreur(I.T("Variable @1 cannot be set by TimosProcess. Only simple values can be used|30009", variable.Nom));
                                    result.Data = (int)EErreurs.InvalidVariableValueOnlySimpleValuesAreAccepted;
                                    return(result);
                                }
                                try
                                {
                                    object valeur = CUtilTexte.FromUniversalString(strValeur, variable.TypeDonnee.TypeDotNetNatif);
                                }
                                catch
                                {
                                }
                                process.SetValeurChamp(variable.IdVariable, strValeur);
                                bTrouvee = true;
                                break;
                            }
                        }
                        if (!bTrouvee)
                        {
                            result = ShowHelp(process);
                            result.EmpileErreur(I.T("Unknown variable @1|30010", strParametre));
                            result.Data = (int)EErreurs.UnknownVariable;
                            return(result);
                        }
                    }
                    result = CProcessEnExecutionInDb.StartProcess(process, new CInfoDeclencheurProcess(TypeEvenement.Manuel), session.IdSession, null, null);
                    if (!result)
                    {
                        result.Data = (int)EErreurs.ErrorWhileRunningProcess;
                        return(result);
                    }
                    if (result.Data != null)
                    {
                        try
                        {
                            result.Data = Convert.ToInt32(result.Data);
                        }
                        catch
                        {
                        }
                        return(result);
                    }
                    else
                    {
                        result.Data = 0;
                    }
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
                result.Data = (int)EErreurs.ErrorWhileRunningProcess;
                return(result);
            }
            finally
            {
                lock (typeof(CLanceurProcessCommandLine))
                {
                    donneeSession.EndUsing();
                }
            }
            return(result);
        }