//------------------------------------------------
        public CResultAErreur ImportTable(
            DataTable table,
            CContexteImportDonnee contexteImport,
            IIndicateurProgression indicateur)
        {
            CResultAErreur result = CResultAErreur.True;

            Dictionary <DataRow, DataRow> m_dicSourceToDest = new Dictionary <DataRow, DataRow>();

            contexteImport.TableSource = table;
            int nNbDoTo = table.Rows.Count;

            if (contexteImport.StartLine != null)
            {
                nNbDoTo -= contexteImport.StartLine.Value;
            }
            if (contexteImport.EndLine != null)
            {
                nNbDoTo -= (table.Rows.Count - contexteImport.EndLine.Value) - 1;
            }
            int nNbDone = 0;

            if (indicateur != null)
            {
                indicateur.SetBornesSegment(0, nNbDoTo);
            }
            int nStart = contexteImport.StartLine == null ? 0 : contexteImport.StartLine.Value;
            int nEnd   = contexteImport.EndLine == null ? table.Rows.Count - 1 : Math.Min(contexteImport.EndLine.Value, table.Rows.Count - 1);

            for (int nRowIndex = nStart; nRowIndex <= nEnd; nRowIndex++)
            {
                DataRow row = table.Rows[nRowIndex];
                if (indicateur != null)
                {
                    indicateur.SetInfo(I.T("Import line @1|20106", nRowIndex.ToString()));
                }
                contexteImport.StartImportRow(row, nRowIndex);
                result = ImportRow(row, contexteImport, null, false);
                nNbDone++;
                if (indicateur != null)
                {
                    indicateur.SetValue(nNbDone);
                }
                if (!result)
                {
                    contexteImport.AddLog(new CLigneLogImport(
                                              ETypeLigneLogImport.Error,
                                              row,
                                              null,
                                              contexteImport,
                                              I.T("Error on line import|20102")));
                    if (!contexteImport.BestEffort)
                    {
                        return(result);
                    }
                    result = CResultAErreur.True;
                }
            }
            return(result);
        }
Exemplo n.º 2
0
        /// /////////////////////////////////////////////////////////////
        public static CResultAErreur StartProcessMultiples(CProcess process,
                                                           CInfoDeclencheurProcess infoDeclencheur,
                                                           CReferenceObjetDonnee[] refsCible,
                                                           int nIdSession,
                                                           int?nIdVersion,
                                                           IIndicateurProgression indicateur)
        {
            process.InfoDeclencheur = infoDeclencheur;
            ///TODO
            ///Problème VersionObjet
            IProcessEnExecutionInDbServeur processServeur = (IProcessEnExecutionInDbServeur)CContexteDonnee.GetTableLoader(c_nomTable, null, nIdSession);

            using (C2iSponsor sponsor = new C2iSponsor())
            {
                sponsor.Register(processServeur);
                CAppelleurFonctionAsynchrone appelleur = new CAppelleurFonctionAsynchrone();
                CResultAErreur defaultResult           = CResultAErreur.True;
                defaultResult.EmpileErreur(I.T("Asynchronous call error @1|20032", "StartProcessMultiples"));
                return(appelleur.StartFonctionAndWaitAvecCallback(
                           typeof(IProcessEnExecutionInDbServeur),
                           processServeur,
                           "StartProcessMultiples",
                           "",
                           defaultResult,
                           new CValise2iSerializable(process),
                           refsCible,
                           nIdVersion,
                           indicateur) as CResultAErreur);
            }
        }
Exemplo n.º 3
0
        private void SnmpUpdateThread(object sender, DoWorkEventArgs args)
        {
            if (m_bIsSnmpUpdating)
            {
                return;
            }
            IIndicateurProgression indicateur = sender as IIndicateurProgression;

            m_bIsSnmpUpdating = true;
            try
            {
                if (indicateur != null)
                {
                    indicateur.SetBornesSegment(0, 100);
                    indicateur.SetValue(0);
                    indicateur.Masquer(false);
                }
                CSchemaReseau            schema = m_stackCheminsReseau.Peek();
                CListeCouplesEntiteChamp liste  = schema.GetListeValeursSnmpAffichees();
                liste.UpdateValeurs(schema.ContexteDonnee, indicateur);
                if (indicateur != null)
                {
                    indicateur.Masquer(true);
                }
            }
            catch { }
            finally
            {
                m_bIsSnmpUpdating = false;
            }
        }
Exemplo n.º 4
0
        //-------------------------------------------------------------------
        public CResultAErreur ExecuteTache(int nIdIntervention, IIndicateurProgression indicateur)
        {
            CResultAErreur result = CResultAErreur.True;

            using (CContexteDonnee contexte = new CContexteDonnee(IdSession, true, false))
            {
                CTachePlanifiee tache = new CTachePlanifiee(contexte);
                if (!tache.ReadIfExists(nIdIntervention))
                {
                    result.EmpileErreur(I.T("The Planned Task '@1' does not exist|338", nIdIntervention.ToString()));
                    return(result);
                }
                int nNbErreurs = 0;
                C2iEventLog.WriteInfo(I.T("Starting planned task @1|339", tache.Libelle), NiveauBavardage.PetiteCausette);

                int    nNbFait   = 0;
                string strErreur = "";
                foreach (CRelationTachePlanifieeProcess rel in tache.RelationsProcess)
                {
                    if (indicateur != null)
                    {
                        indicateur.SetInfo(I.T("Action @1|340", rel.Process.Libelle));
                    }
                    CInfoDeclencheurProcess infoDeclencheur = new CInfoDeclencheurProcess(TypeEvenement.Date);
                    result = CProcessEnExecutionInDb.StartProcess(rel.Process.Process, infoDeclencheur, IdSession, null, null);
                    if (!result)
                    {
                        result.EmpileErreur(I.T("Action @1|341", rel.Process.Libelle));
                        strErreur += Environment.NewLine;
                        strErreur += result.Erreur.ToString() + Environment.NewLine + "-------------------------------------" + Environment.NewLine;
                        nNbErreurs++;
                        result = CResultAErreur.True;
                    }
                    nNbFait++;
                    if (indicateur != null)
                    {
                        indicateur.SetValue(nNbFait);
                    }
                }

                foreach (CRelationTachePlanifieeTypeDonneeCumulee relData in tache.RelationsTypesDonneesCumulees)
                {
                    result = relData.TypeDonneeCumulee.StockResultat(indicateur);
                    if (!result)
                    {
                        result.EmpileErreur(I.T("Cumulated data @1|342", relData.TypeDonneeCumulee.Libelle));
                        strErreur += result.Erreur.ToString() + "\r\n-------------------------------------\r\n";
                        nNbErreurs++;
                        result = CResultAErreur.True;
                    }
                }



                C2iEventLog.WriteInfo(I.T("End of planned task @1, @2 error(s)|343", tache.Libelle, nNbErreurs.ToString()), NiveauBavardage.PetiteCausette);
                return(result);
            }
        }
Exemplo n.º 5
0
        //----------------------------------------------------------------------
        public CResultAErreur EnregistreDeclenchementEvenementSurClient(
            CObjetDonneeAIdNumerique objet,
            CInfoDeclencheurProcess infoDeclencheur,
            IIndicateurProgression indicateur)
        {
            CResultAErreur result = CResultAErreur.True;

            result.EmpileErreur(I.T("Not available for event handlers|50000"));
            return(result);
        }
Exemplo n.º 6
0
 /// ///////////////////////////////////////////////
 public static void EndIndicateur(IIndicateurProgression indicateur)
 {
     if (indicateur is System.Windows.Forms.Form)
     {
         ((System.Windows.Forms.Form)indicateur).Invoke((MethodInvoker) delegate
         {
             ((System.Windows.Forms.Form)indicateur).Hide();
         });
     }
 }
Exemplo n.º 7
0
 //-------------------------------------------------------------------
 public CResultAErreur RunEvent(
     CObjetDonneeAIdNumerique obj,
     CInfoDeclencheurProcess infoDeclencheur,
     IIndicateurProgression indicateur)
 {
     return(RunEvent(true,
                     obj,
                     infoDeclencheur,
                     indicateur));
 }
        //-------------------------------------------------------------------------------------------
        public CResultAErreurType <CSessionImport> DoImportSurServeur(
            int nIdSession,
            DataTable tableSource,
            COptionExecutionSmartImport options,
            IIndicateurProgression indicateur)
        {
            ISmartImporterAgent st = C2iFactory.GetNewObjetForSession("CSmartImporterAgent", typeof(ISmartImporterAgent), nIdSession) as ISmartImporterAgent;
            CResultAErreurType <CSessionImport> result = st.DoSmartImport(tableSource, this, options, indicateur);

            return(result);
        }
Exemplo n.º 9
0
        /// /////////////////////////////////////////////////////////////
        public CResultAErreur RepriseProcess(int nIdAction, IIndicateurProgression indicateur)
        {
            ///TODO
            ///Problème VersionObjet
            IProcessEnExecutionInDbServeur processServeur = (IProcessEnExecutionInDbServeur)CContexteDonnee.GetTableLoader(c_nomTable, null, ContexteDonnee.IdSession);

            using (C2iSponsor sponsor = new C2iSponsor())
            {
                sponsor.Register(processServeur);
                return(processServeur.RepriseProcess(Id, nIdAction, indicateur));
            }
        }
Exemplo n.º 10
0
        /// ///////////////////////////////////////////////////////////
        public static CResultAErreur InitClientTimos(
            C2iMultitiersClientRegistre registre,
            bool bAvecSynchronisation,
            IIndicateurProgression indicateurProgression)

        {
            return(InitClientTimos(
                       registre.GetFactoryURL(),
                       registre.GetRemotingTCPChannel(),
                       registre.GetBindTCPChannelBindTo(),
                       indicateurProgression));
        }
Exemplo n.º 11
0
        public static CConteneurIndicateurProgression GetConteneur(IIndicateurProgression indicateur)
        {
            CConteneurIndicateurProgression conteneurIndic = (indicateur as CConteneurIndicateurProgression);

            if (conteneurIndic != null)
            {
                return(conteneurIndic);
            }
            CConteneurIndicateurProgression conteneur = ( CConteneurIndicateurProgression )Activator.CreateInstance(m_typeConteneurParDefaut, true);

            conteneur.Indicateur = indicateur;
            return(conteneur);
        }
Exemplo n.º 12
0
        private bool CreateJeuDeTest()
        {
            CServicePopupProgressionTimos serviceIndicateur = new CServicePopupProgressionTimos();
            IIndicateurProgression        indicateur        = serviceIndicateur.GetNewIndicateurAndPopup();

            DataSet ds = m_panelMultiStructure.GetJeuEssai(indicateur);

            if (ds != null)
            {
                try
                {
                    Rapport.CompleteDataSetDonnees(ds, m_panelMultiStructure.MultiStructure);
                }
                catch (Exception e)
                {
                    serviceIndicateur.EndIndicateur(indicateur);
                    CFormAlerte.Afficher(e.ToString(), EFormAlerteType.Erreur);
                    return(false);
                }
            }


            serviceIndicateur.EndIndicateur(indicateur);

            if (ds == null)
            {
                return(false);
            }


            /*CMultiStructureExport structure = m_panelMultiStructure.MultiStructure;
             * if ( structure.Formulaire != null && structure.Formulaire.Childs.Length > 0 )
             * {
             *      if ( !CFormFormulairePopup.EditeElement ( structure.Formulaire, structure, "Données de l'état" ) )
             *              return false;
             * }
             * CServicePopupProgressionCafel serviceIndicateur = new CServicePopupProgressionCafel();
             * IIndicateurProgression indicateur = serviceIndicateur.GetNewIndicateurAndPopup();
             * CResultAErreur result = Rapport.GetDataFromMultiStructure( structure, null, false, indicateur );
             * serviceIndicateur.EndIndicateur(indicateur);
             * if ( !result )
             * {
             *      CFormAlerte.Afficher(  result.Erreur );
             *      return false;
             * }*/
            m_datasetTest = ds;
            return(true);
        }
 /// //////////////////////////////////////////
 public void AttacheIndicateur(IIndicateurProgression indicateur)
 {
     try
     {
         lock ( m_listeIndicateursProgression )
         {
             indicateur.SetBornesSegment(m_gestionnaireProgression.MinValue, m_gestionnaireProgression.MaxValue);
             indicateur.SetInfo(m_strInfoProgression);
             indicateur.CanCancel = m_bCanCancel;
             m_listeIndicateursProgression.Add(indicateur);
         }
     }
     catch
     {
     }
 }
Exemplo n.º 14
0
 public CContexteExecutionAction(
     CProcessEnExecutionInDb processEnExecution,
     CBrancheProcess branche,
     object objetCible,
     CContexteDonnee contexteDonnee,
     IIndicateurProgression indicateur)
 {
     m_processEnExecution = processEnExecution;
     m_contexteDonnee     = contexteDonnee;
     m_branche            = branche;
     m_objetCible         = objetCible;
     PushElementInfoProgress(m_objetCible);
     m_indicateurProgression           = indicateur;
     m_timerRefreshIndicateur.Elapsed += new ElapsedEventHandler(m_timerRefreshIndicateur_Elapsed);
     m_timerRefreshIndicateur.Interval = c_nDelayRefreshIndicateur;
 }
Exemplo n.º 15
0
        /// /////////////////////////////////////////
        public CResultAErreur GetDonnees(
            IElementAVariablesDynamiquesAvecContexteDonnee elementAVariables,
            CListeObjetsDonnees listeDonnees,
            IIndicateurProgression indicateur)
        {
            CResultAErreur      result = CResultAErreur.True;
            CListeObjetsDonnees liste  = listeDonnees;

            if ((liste == null || liste.TypeObjets != Structure.TypeSource) && Structure.TypeSource != null)
            {
                liste = new CListeObjetsDonnees(elementAVariables.ContexteDonnee, m_structure.TypeSource);
                if (m_filtre != null)
                {
                    m_filtre.ElementAVariablesExterne = elementAVariables;
                    result = m_filtre.GetFiltreData();
                    if (!result)
                    {
                        return(result);
                    }
                    liste.Filtre = (CFiltreData)result.Data;
                }
            }
            if (Structure.TypeSource == null)
            {
                liste = null;
            }

            DataSet ds         = new DataSet();
            int     nIdSession = -1;

            if (elementAVariables != null && elementAVariables.ContexteDonnee != null)
            {
                nIdSession = elementAVariables.ContexteDonnee.IdSession;
            }
            else
            {
                nIdSession = CSessionClient.GetSessionUnique().IdSession;
            }
            result = m_structure.Export(nIdSession, liste, ref ds, elementAVariables, indicateur);
            if (!result)
            {
                return(result);
            }
            result.Data = ds;
            return(result);
        }
Exemplo n.º 16
0
        //-------------------------------------------------------------------
        public CResultAErreur RunEvent(
            bool bAutoManagerHandlerTermine,
            CObjetDonneeAIdNumerique obj,
            CInfoDeclencheurProcess infoDeclencheur,
            IIndicateurProgression indicateur)
        {
            CResultAErreur          result  = CResultAErreur.True;
            CProcessEnExecutionInDb process = ProcessSource;

            if (ProcessSource != null)
            {
                result = process.RepriseProcess(IdActionDeProcessToExecute, indicateur);
            }
            else if (EtapeWorkflowATerminer != null)
            {
                using (CContexteDonnee contexte = new CContexteDonnee(ContexteDonnee.IdSession, true, false))
                {
                    CEtapeWorkflow etape = EtapeWorkflowATerminer.GetObjetInContexte(contexte) as CEtapeWorkflow;
                    if (etape != null)
                    {
                        result = etape.EndEtapeAndSaveIfOk();
                    }
                    if (!result)
                    {
                        //L'étape ne s'est pas terminée ? tant pis alors, c'est pas grave, elle se terminera par ailleurs
                        result = CResultAErreur.True;
                        return(result);
                    }
                }
            }
            //gestion du handler faite ailleurs
            if (!bAutoManagerHandlerTermine)
            {
                if (!result)
                {
                    result.EmpileErreur(I.T("@1 handler error|271", Libelle));
                }
                return(result);
            }
            EndHandler(result);
            return(result);
        }
Exemplo n.º 17
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));
            }
        }
Exemplo n.º 18
0
        //--------------------------------------------------------------
        private void m_btnImporter_Click(object sender, EventArgs e)
        {
            CConfigMappagesSmartImport config = null;
            DataTable      table  = null;
            CResultAErreur result = PrepareImport(ref config, ref table);

            if (!result || table == null)
            {
                CFormAlerte.Afficher(result.Erreur);
                return;
            }
            if (!CFormOptionsImport.EditeOptions(m_optionsExecution))
            {
                return;
            }

            IIndicateurProgression indicateur = null;

            indicateur = CFormProgression.GetNewIndicateurAndPopup(I.T("Importing data|20245"));
            CResultAErreurType <CSessionImport> resSession;

            resSession = config.DoImportSurServeur(CSc2iWin32DataClient.ContexteCourant.IdSession,
                                                   table,
                                                   m_optionsExecution,
                                                   indicateur);
            CFormProgression.EndIndicateur(indicateur);
            if (m_optionsExecution.NomFichierSauvegarde != null &&
                m_optionsExecution.NomFichierSauvegarde.Length > 0)
            {
                result = CSerializerObjetInFile.SaveToFile(resSession.DataType, "IMPORT_SESSION", m_optionsExecution.NomFichierSauvegarde);
                if (!result)
                {
                    CFormAlerte.Afficher(result.Erreur);
                }
            }
            SetSessionEnCours(resSession.DataType);
            CFormEditionSessionImport.EditeSession(m_sessionImport);
        }
Exemplo n.º 19
0
        //--------------------------------------------------------------------------------------------------------------------
        public override CResultAErreur ExecuterOperation(IDatabaseConnexion connection, IIndicateurProgression indicateur)
        {
            CResultAErreur   result   = CResultAErreur.True;
            IDataBaseCreator createur = connection.GetDataBaseCreator();
            string           strNomTableInContexte = CContexteDonnee.GetNomTableForType(m_type);
            string           strNomTableInDb       = CContexteDonnee.GetNomTableInDbForNomTable(strNomTableInContexte);

            createur.CreationOuUpdateTableFromType(m_type);
            string strChampIdObjet = m_strChampIdObjet;

            if (m_strChampIdObjet.StartsWith("#SQL#"))
            {
                strChampIdObjet = m_strChampIdObjet.Substring("#SQL#".Length);
            }
            CObjetServeur.ClearCacheSchemas();
            if (createur.ChampExists(strNomTableInDb, strChampIdObjet) &&
                createur.ChampExists(strNomTableInDb, m_strChampDbKey))
            {
                using (CContexteDonnee ctx = new CContexteDonnee(connection.IdSession, true, false))
                {
                    C2iRequeteAvancee requete = new C2iRequeteAvancee();
                    requete.TableInterrogee = strNomTableInDb;
                    CStructureTable structure = CStructureTable.GetStructure(m_type);

                    /*
                     * requete.ListeChamps.Add ( new C2iChampDeRequete (
                     *  "ID",
                     *  new CSourceDeChampDeRequete(structure.ChampsId[0].NomChamp),
                     *  typeof(int),
                     *  OperationsAgregation.None,
                     *  true ));*/
                    requete.ListeChamps.Add(new C2iChampDeRequete(
                                                "IDOBJET",
                                                new CSourceDeChampDeRequete(m_strChampIdObjet),
                                                typeof(int),
                                                OperationsAgregation.None,
                                                true));
                    if (m_typeObjetFixe == null)
                    {
                        requete.ListeChamps.Add(new C2iChampDeRequete(
                                                    "TYPEOBJET",
                                                    new CSourceDeChampDeRequete(m_strChampTypeObjet),
                                                    typeof(string),
                                                    OperationsAgregation.None,
                                                    true));
                    }
                    result = requete.ExecuteRequete(connection.IdSession);
                    if (!result)
                    {
                        return(result);
                    }
                    DataTable table = result.Data as DataTable;
                    Dictionary <int, int?> dicIdToIdObjet = new Dictionary <int, int?>();
                    string strFieldIdObjetInTable         = m_strChampIdObjet.Replace("#SQL#", "");
                    foreach (DataRow row in table.Rows)
                    {
                        object val    = row["IDOBJET"];
                        int?   nValId = val == DBNull.Value?null:(int?)val;
                        if (nValId != null && nValId >= 0)
                        {
                            CDbKey key = null;
                            Type   tp  = m_typeObjetFixe;
                            if (tp == null)//Type non fixe
                            {
                                string strType = (string)row["TYPEOBJET"];
                                tp = CActivatorSurChaine.GetType(strType);
                            }
                            if (tp != null)
                            {
                                CObjetDonneeAIdNumerique objPointe = (CObjetDonneeAIdNumerique)Activator.CreateInstance(tp, ctx);
                                if (objPointe.ReadIfExists(nValId.Value))
                                {
                                    key = objPointe.DbKey;
                                }
                            }
                            if (key != null)
                            {
                                string strRequete = "Update " + strNomTableInDb + " set " +
                                                    m_strChampDbKey + "=" + connection.GetStringForRequete(key.StringValue) + " where " +
                                                    strFieldIdObjetInTable + "=" + nValId.Value;
                                if (m_typeObjetFixe == null)
                                {
                                    strRequete += " and " + m_strChampTypeObjet + "='" +
                                                  row["TYPEOBJET"].ToString() + "'";
                                }
                                connection.RunStatement(strRequete);
                            }
                        }
                    }
                }
                //Supprime le champ
                createur.DeleteChamp(strNomTableInDb, strChampIdObjet);
            }
            return(result);
        }
Exemplo n.º 20
0
 public abstract CResultAErreur ExecuterOperation(IDatabaseConnexion connection, IIndicateurProgression indicateur);
Exemplo n.º 21
0
        //--------------------------------------------------------------------------------------------------------------------
        public override CResultAErreur ExecuterOperation(IDatabaseConnexion connection, IIndicateurProgression indicateur)
        {
            CResultAErreur result = CResultAErreur.True;

            if (!typeof(IObjetDonneeAIdNumerique).IsAssignableFrom(m_type) || !CObjetDonnee.TypeManageIdUniversel(m_type))
            {
                result.EmpileErreur(m_type.ToString() + " can not have Universal Id");
            }

            string strNomTable = CContexteDonnee.GetNomTableForType(m_type);

            CStructureTable structure  = CStructureTable.GetStructure(m_type);
            string          strChampId = structure.ChampsId[0].NomChamp;

            C2iRequeteAvancee requete = new C2iRequeteAvancee();

            requete.FiltreAAppliquer = new CFiltreData(CObjetDonnee.c_champIdUniversel + "=@1", "");
            requete.TableInterrogee  = CContexteDonnee.GetNomTableForType(m_type);
            requete.ListeChamps.Add(new C2iChampDeRequete(strChampId, new CSourceDeChampDeRequete(strChampId),
                                                          typeof(int),
                                                          OperationsAgregation.None, true));
            Console.WriteLine("Update Universal id on " + strNomTable);
            result = requete.ExecuteRequete(connection.IdSession);
            if (!result)
            {
                return(result);
            }
            string    strNomTableInDb = CContexteDonnee.GetNomTableInDbForNomTable(strNomTable);
            DataTable table           = result.Data as DataTable;
            int       nNb             = 0;
            bool      bWasInTrans     = connection.IsInTrans();

            if (bWasInTrans)
            {
                connection.CommitTrans();
            }
            DateTime dt = DateTime.Now;

            if (table.Rows.Count > 0)
            {
                if (table.Rows.Count > 10000 && connection is COracleDatabaseConnexion)
                {
                    string strQuery = "Update " + strNomTableInDb + " set " + CObjetDonnee.c_champIdUniversel +
                                      "=CONCAT('" + strNomTableInDb + "'," + strChampId + ")";
                    result = connection.RunStatement(strQuery);
                }
                else
                {
                    foreach (DataRow row in table.Rows)
                    {
                        string strQuery = "Update " + strNomTableInDb + " set " +
                                          CObjetDonnee.c_champIdUniversel + "='" + CUniqueIdentifier.GetNew() + "' where " +
                                          strChampId + "=" + row[0].ToString();
                        result = connection.ExecuteScalar(strQuery);
                        if (!result)
                        {
                            break;
                        }
                        nNb++;
                        if (nNb % 100 == 0)
                        {
                            TimeSpan sp   = DateTime.Now - dt;
                            double   fVal = (double)sp.TotalSeconds / (double)nNb * (double)(table.Rows.Count - nNb);
                            Console.WriteLine(strNomTableInDb + " " + nNb + "/" + table.Rows.Count + " reste " + fVal.ToString("0s"));
                        }
                    }
                }
            }
            if (bWasInTrans)
            {
                connection.BeginTrans();
            }
            return(result);

            /*
             *
             * //Trouve tous les éléments du type qui n'ont pas d'id universel
             * using (CContexteDonnee ctx = new CContexteDonnee(connection.IdSession, true, false))
             * {
             *  CListeObjetsDonnees lst = new CListeObjetsDonnees(ctx, m_type, false);
             *  lst.Filtre = new CFiltreData(CObjetDonnee.c_champIdUniversel + "=@1", "");
             *  lst.Filtre.IgnorerVersionDeContexte = true;
             *  lst.AppliquerFiltreAffichage = false;
             *
             *  foreach (IObjetDonnee objet in lst.ToArrayList())
             *  {
             *      objet.Row[CObjetDonnee.c_champIdUniversel] = CUniqueIdentifier.GetNew();
             *  }
             *  string strNomTable = CContexteDonnee.GetNomTableForType(m_type);
             *  CObjetServeur objetServeur = CContexteDonnee.GetTableLoader(strNomTable, null, connection.IdSession) as CObjetServeur;
             *  int nCount = ctx.Tables[strNomTable].Rows.Count;
             *  DataTable tableSource = ctx.Tables[strNomTable];
             *
             *   List<string> lstChampsExclus = new List<string>();
             *  HashSet<string> lstIDs = new HashSet<string>();
             *  CStructureTable structure = CStructureTable.GetStructure(m_type);
             *  foreach (CInfoChampTable info in structure.ChampsId)
             *      lstIDs.Add(info.NomChamp);
             *
             *  foreach (CInfoChampTable champ in structure.Champs)
             *      if (champ.NomChamp != CObjetDonnee.c_champIdUniversel && !lstIDs.Contains(champ.NomChamp))
             *          lstChampsExclus.Add(champ.NomChamp);
             *
             *  IDataAdapter adapter = objetServeur.GetDataAdapter(DataRowState.Modified, lstChampsExclus.ToArray());
             *
             *  for (int nRow = 0; nRow < nCount; nRow += 5000)
             *  {
             *
             *      using (DataSet dsCopie = new DataSet())
             *      {
             *          dsCopie.EnforceConstraints = false;
             *          DataTable tableCopie = ctx.Tables[strNomTable].Clone();
             *          tableCopie.BeginLoadData();
             *          dsCopie.Tables.Add(tableCopie);
             *          int nMax = Math.Min(nRow + 5000, nCount);
             *          DateTime dt = DateTime.Now;
             *          for (int n = nRow; n < nMax; n++)
             *          {
             *              tableCopie.ImportRow(tableSource.Rows[n]);
             *          }
             *          TimeSpan sp = DateTime.Now - dt;
             *          Console.WriteLine("Write 1" + strNomTable + " " + nRow + "/" + nCount+"  "+sp.TotalSeconds.ToString());
             *          adapter.Update(dsCopie);
             *          sp = DateTime.Now - dt;
             *          Console.WriteLine("Write 2" + strNomTable + " " + nRow + "/" + nCount + "  " + sp.TotalSeconds.ToString());
             *      }
             *  }
             * }
             * return result;*/
        }
Exemplo n.º 22
0
        public override CResultAErreur ExecuterOperation(IDatabaseConnexion connection, IIndicateurProgression indicateur)
        {
            CResultAErreur   result   = CResultAErreur.True;
            IDataBaseCreator createur = connection.GetDataBaseCreator();

            if (createur.TableExists(m_strNomTable))
            {
                result = createur.DeleteTable(m_strNomTable);
            }
            return(result);
        }
Exemplo n.º 23
0
 public override CResultAErreur ExecuterOperation(IDatabaseConnexion connection, IIndicateurProgression indicateur)
 {
     return(CResultAErreur.True);
 }
Exemplo n.º 24
0
 public override CResultAErreur ExecuterOperation(IDatabaseConnexion connection, IIndicateurProgression indicateur)
 {
     return(Delegue(connection.GetDataBaseCreator()));
 }
Exemplo n.º 25
0
 public override CResultAErreur ExecuterOperation(IDatabaseConnexion connection, IIndicateurProgression indicateur)
 {
     if (connection.GetDataBaseCreator().ChampExists(m_strNomTable, m_strNomChamp))
     {
         return(connection.GetDataBaseCreator().DeleteChamp(m_strNomTable, m_strNomChamp));
     }
     return(CResultAErreur.True);
 }
Exemplo n.º 26
0
        public override CResultAErreur ExecuterOperation(IDatabaseConnexion connection, IIndicateurProgression indicateur)
        {
            IDataBaseCreator creator     = connection.GetDataBaseCreator();
            string           strNomTable = DynamicClassAttribute.GetNomConvivial(m_type);

            if (!m_bSuppression)
            {
                                #if PDA
                return(COracleTableCreator.CreationOuUpdateTableFromType(tp, m_nIdSession));
                                #else
                return(creator.CreationOuUpdateTableFromType(m_type, new ArrayList(m_strChampsAutorisesANull)));
                                #endif
            }
            else
            {
                                #if PDA
                return(CSQLCeTableCreator.SuppressionTable(strNomTable, m_nIdSession));
                                #else
                return(creator.DeleteTable(CStructureTable.GetStructure(m_type).NomTableInDb));
                                #endif
            }
        }
Exemplo n.º 27
0
        /// <summary>
        /// Stocke le résultat d'une requête pour un type de données
        /// </summary>
        /// <param name="nIdTypeDonnee"></param>
        /// <param name="requete"></param>
        /// <returns></returns>
        public CResultAErreur StockeResultat(int nIdTypeDonnee, IIndicateurProgression indicateur)
        {
            using (C2iSponsor sponsor = new C2iSponsor())
            {
                sponsor.Register(indicateur);
                CResultAErreur result = CResultAErreur.True;
                if (m_tableCalculsEnCours[nIdTypeDonnee] != null)
                {
                    result.EmpileErreur(I.T("The recalculation for this cumulated data type is already in progress|143"));
                    return(result);
                }
                m_tableCalculsEnCours[nIdTypeDonnee] = true;
                CSessionProcessServeurSuivi sessionSuivi = null;
                try
                {
                    //Crée une session pour le calcul
                    CSessionClient session = CSessionClient.GetSessionForIdSession(IdSession);
                    if (session == null)
                    {
                        result.EmpileErreur(I.T("Session error|144"));
                        return(result);
                    }

                    System.Threading.Thread.CurrentThread.Priority = System.Threading.ThreadPriority.BelowNormal;
                    sessionSuivi = new CSessionProcessServeurSuivi();
                    result       = sessionSuivi.OpenSession(new CAuthentificationSessionServer(),
                                                            I.T("Recalculation of datas @1|145", nIdTypeDonnee.ToString()),
                                                            session);
                    if (!result)
                    {
                        result.EmpileErreur(I.T("Opening session error|146"));
                        return(result);
                    }
                    IdSession = sessionSuivi.IdSession;
                    System.Threading.Thread.CurrentThread.Priority = System.Threading.ThreadPriority.Lowest;
                    using (CContexteDonnee contexte = new CContexteDonnee(IdSession, true, false))
                    {
                        //Récupère le type de donnée
                        CTypeDonneeCumulee typeDonnee = new CTypeDonneeCumulee(contexte);
                        if (!typeDonnee.ReadIfExists(nIdTypeDonnee))
                        {
                            result.EmpileErreur(I.T("The cumulated data type @1 doesn't exist|147", nIdTypeDonnee.ToString()));
                            return(result);
                        }

                        if (indicateur != null)
                        {
                            indicateur.SetInfo(I.T("Existing datas recovery|148"));
                            indicateur.SetValue(0);
                        }

                        CParametreDonneeCumulee parametre = typeDonnee.Parametre;

                        //Lit les données pour ce type de donnée cumulée
                        CListeObjetsDonnees liste = new CListeObjetsDonnees(contexte, typeof(CDonneeCumulee));
                        liste.Filtre = new CFiltreData(CTypeDonneeCumulee.c_champId + "=@1",
                                                       nIdTypeDonnee);
                        liste.AssureLectureFaite();
                        if (parametre.ViderAvantChaqueCalcul)
                        {
                            result = VideTable(nIdTypeDonnee, contexte.Tables[CDonneeCumulee.c_nomTable]);
                            if (!result)
                            {
                                return(result);
                            }
                        }


                        //Liste des champs clé à lire
                        ArrayList lstClesALire = new ArrayList();
                        //Liste des champs destination des clés
                        ArrayList lstDestClesALire = new ArrayList();

                        //Liste des valeurs décimales à lire
                        ArrayList lstValeursDecimalesALire = new ArrayList();
                        //Liste des champs destinatation des valeurs décimales
                        ArrayList lstDestValeursDecimalesALire = new ArrayList();

                        //Liste des valeurs dates à lire
                        ArrayList lstValeursDatesALire = new ArrayList();
                        //Liste des champs destinatation des valeurs dates
                        ArrayList lstDestValeursDatesALire = new ArrayList();

                        //Liste des valeurs texte à lire
                        ArrayList lstValeursTextesALire = new ArrayList();
                        //Liste des champs destinatation des valeurs texte
                        ArrayList lstDestValeursTextesALire = new ArrayList();

                        //Change les clés de la table de données pour qu'elles
                        //correspondent aux clés déclarées
                        //Pour des recherches ultérieures plus rapides
                        DataTable    tableDonnees = contexte.Tables[CDonneeCumulee.c_nomTable];
                        DataColumn[] oldKey       = tableDonnees.PrimaryKey;
                        ArrayList    lstCles      = new ArrayList();

                        for (int nCle = 0; nCle < CParametreDonneeCumulee.c_nbChampsCle; nCle++)
                        {
                            if (parametre.GetChampCle(nCle) != null &&
                                parametre.GetChampCle(nCle).Champ != "")
                            {
                                lstClesALire.Add(parametre.GetChampCle(nCle).Champ);
                                string strChampDest = CDonneeCumulee.c_baseChampCle + nCle.ToString();
                                lstDestClesALire.Add(strChampDest);
                                lstCles.Add(tableDonnees.Columns[strChampDest]);
                            }
                        }
                        try
                        {
                            tableDonnees.PrimaryKey = (DataColumn[])lstCles.ToArray(typeof(DataColumn));
                        }
                        catch
                        {
                            //On n'y arrive pas, on a probablement changé la requete ->On vide tout !
                            result = VideTable(nIdTypeDonnee, tableDonnees);
                            if (!result)
                            {
                                return(result);
                            }
                            tableDonnees.PrimaryKey = (DataColumn[])lstCles.ToArray(typeof(DataColumn));
                        }

                        //Repère les données à lire
                        for (int nChamp = 0; nChamp < CParametreDonneeCumulee.c_nbChampsValeur; nChamp++)
                        {
                            string strChamp = parametre.GetValueField(nChamp);
                            if (strChamp != null && strChamp != "")
                            {
                                lstValeursDecimalesALire.Add(strChamp);
                                lstDestValeursDecimalesALire.Add(CDonneeCumulee.c_baseChampValeur + nChamp.ToString());
                            }
                        }

                        for (int nChamp = 0; nChamp < CParametreDonneeCumulee.c_nbChampsDate; nChamp++)
                        {
                            string strChamp = parametre.GetDateField(nChamp);
                            if (strChamp != null && strChamp != "")
                            {
                                lstValeursDatesALire.Add(strChamp);
                                lstDestValeursDatesALire.Add(CDonneeCumulee.c_baseChampDate + nChamp.ToString());
                            }
                        }

                        for (int nChamp = 0; nChamp < CParametreDonneeCumulee.c_nbChampsTexte; nChamp++)
                        {
                            string strChamp = parametre.GetTextField(nChamp);
                            if (strChamp != null && strChamp != "")
                            {
                                lstValeursTextesALire.Add(strChamp);
                                lstDestValeursTextesALire.Add(CDonneeCumulee.c_baseChampTexte + nChamp.ToString());
                            }
                        }

                        if (indicateur != null)
                        {
                            indicateur.SetInfo(I.T("Request execution|149"));
                            indicateur.SetValue(10);
                        }

                        IDefinitionJeuDonnees defJeu = typeDonnee.Parametre.DefinitionDeDonnees;
                        IElementAVariablesDynamiquesAvecContexteDonnee eltAVariables = null;
                        if (defJeu is C2iRequete)
                        {
                            eltAVariables = (IElementAVariablesDynamiquesAvecContexteDonnee)defJeu;
                        }
                        else if (defJeu is CStructureExportAvecFiltre)
                        {
                            eltAVariables = ((CStructureExportAvecFiltre)defJeu).Filtre;
                            if (eltAVariables == null)
                            {
                                CFiltreDynamique filtre = new CFiltreDynamique(contexte);
                                filtre.TypeElements = defJeu.TypeDonneesEntree;
                                eltAVariables       = filtre;
                            }
                            ((CFiltreDynamique)eltAVariables).ContexteDonnee = contexte;
                        }

                        result = CParametreDonneeCumulee.GetTableSource(eltAVariables, defJeu, indicateur);
                        //Calcule le résultat de la requête demandée
                        if (!result)
                        {
                            result.EmpileErreur(I.T("Error in request|150"));
                            return(result);
                        }

                        //Liste des lignes trouvées dans la requête
                        Hashtable tableExistantes = new Hashtable();

                        DataTable tableSource = (DataTable)result.Data;

                        if (indicateur != null)
                        {
                            indicateur.SetInfo(I.T("Result Storage|151"));
                            indicateur.SetValue(20);
                            indicateur.PushSegment(20, 80);
                            indicateur.SetBornesSegment(0, tableSource.Rows.Count);
                        }

                        int nIndex = 0;

                        foreach (DataRow row in tableSource.Rows)
                        {
                            nIndex++;
                            if (indicateur != null && nIndex % 50 == 0)
                            {
                                indicateur.SetValue(nIndex);
                            }
                            lstCles.Clear();
                            for (int nCle = 0; nCle < lstClesALire.Count; nCle++)
                            {
                                lstCles.Add(row[(string)lstClesALire[nCle]]);
                            }
                            DataRow rowDest = tableDonnees.Rows.Find((object[])lstCles.ToArray(typeof(object)));
                            if (rowDest == null)
                            {
                                rowDest = tableDonnees.NewRow();
                                rowDest[CObjetDonnee.c_champIdUniversel] = CUniqueIdentifier.GetNew();
                                for (int nCle = 0; nCle < lstCles.Count; nCle++)
                                {
                                    rowDest[(string)lstDestClesALire[nCle]] = lstCles[nCle];
                                }
                                rowDest[CTypeDonneeCumulee.c_champId] = nIdTypeDonnee;
                                tableDonnees.Rows.Add(rowDest);
                            }
                            // Rempli les valeurs décimales de destination
                            for (int nChampVal = 0; nChampVal < lstValeursDecimalesALire.Count; nChampVal++)
                            {
                                try
                                {
                                    rowDest[(string)lstDestValeursDecimalesALire[nChampVal]] = Convert.ToDouble(row[(string)lstValeursDecimalesALire[nChampVal]]);
                                }
                                catch
                                {
                                    rowDest[CDonneeCumulee.c_baseChampValeur + nChampVal.ToString()] = 0;
                                }
                            }
                            // Rempli les valeurs Dates de destination
                            for (int nChampVal = 0; nChampVal < lstValeursDatesALire.Count; nChampVal++)
                            {
                                try
                                {
                                    rowDest[(string)lstDestValeursDatesALire[nChampVal]] = Convert.ToDateTime(row[(string)lstValeursDatesALire[nChampVal]]);
                                }
                                catch
                                {
                                    rowDest[CDonneeCumulee.c_baseChampDate + nChampVal.ToString()] = DBNull.Value;
                                }
                            }
                            // Rempli les valeurs Texte de destination
                            for (int nChampVal = 0; nChampVal < lstValeursTextesALire.Count; nChampVal++)
                            {
                                try
                                {
                                    rowDest[(string)lstDestValeursTextesALire[nChampVal]] = (row[(string)lstValeursTextesALire[nChampVal]]).ToString();
                                }
                                catch
                                {
                                    rowDest[CDonneeCumulee.c_baseChampTexte + nChampVal.ToString()] = "";
                                }
                            }

                            tableExistantes[rowDest] = true;
                        }
                        //Remet la clé à la valeur initiale
                        tableDonnees.PrimaryKey = oldKey;

                        if (indicateur != null)
                        {
                            indicateur.PopSegment();
                            indicateur.PushSegment(80, 90);
                            indicateur.SetBornesSegment(0, tableDonnees.Rows.Count);
                            indicateur.SetInfo(I.T("Deleting of old values|152"));
                        }

                        if (!parametre.PasDeSuppression)
                        {
                            //Supprime les lignes à supprimer
                            ArrayList lstRows = new ArrayList(tableDonnees.Rows);
                            nIndex = 0;
                            foreach (DataRow row in lstRows)
                            {
                                if (!tableExistantes.Contains(row))
                                {
                                    row.Delete();
                                }
                                nIndex++;
                                if (indicateur != null && nIndex % 50 == 0)
                                {
                                    indicateur.SetValue(nIndex);
                                }
                            }
                        }
                        if (indicateur != null)
                        {
                            indicateur.PopSegment();
                            indicateur.SetInfo(I.T("Datas saving|153"));
                        }
                        contexte.EnableTraitementsAvantSauvegarde = false;
                        result = contexte.SaveAll(true);
                        if (indicateur != null)
                        {
                            indicateur.SetInfo(I.T("Finished calculation|154"));
                        }
                    }
                }
                catch (Exception e)
                {
                    result.EmpileErreur(new CErreurException(e));
                    return(result);
                }
                finally
                {
                    if (sessionSuivi != null)
                    {
                        sessionSuivi.CloseSession();
                    }
                    m_tableCalculsEnCours.Remove(nIdTypeDonnee);
                }
                return(result);
            }
        }
Exemplo n.º 28
0
 //---------------------------------------------
 public double RecalcActualCost(IIndicateurProgression indicateur)
 {
     CUtilElementACout.RecalculeCoutDescendant(this, true, true, indicateur);
     return(CoutReel);
 }
Exemplo n.º 29
0
 public CBackgroundWorkerAvecProgress(IIndicateurProgression indicateur)
 {
     m_indicateur = CConteneurIndicateurProgression.GetConteneur(indicateur);
 }
Exemplo n.º 30
0
        private void m_btnTesterImport_Click(object sender, EventArgs e)
        {
            CConfigMappagesSmartImport config = null;
            DataTable      table  = null;
            CResultAErreur result = PrepareImport(ref config, ref table);

            if (!result || table == null)
            {
                CFormAlerte.Afficher(result.Erreur);
                return;
            }

            DialogResult dr = MessageBox.Show(I.T("Would you like to save configuration first ?|20225"), "",
                                              MessageBoxButtons.YesNoCancel,
                                              MessageBoxIcon.Question);

            if (dr == DialogResult.Cancel)
            {
                return;
            }
            if (dr == DialogResult.Yes)
            {
                if (!SaveConfig())
                {
                    return;
                }
            }

            if (!CFormOptionsSimulation.EditeOptions(m_optionsSimulation))
            {
                return;
            }

            using (CContexteDonnee ctx = new CContexteDonnee(CSc2iWin32DataClient.ContexteCourant.IdSession, true, false))
            {
                CContexteImportDonnee contexteImport = new CContexteImportDonnee(ctx);
                contexteImport.StartLine  = m_optionsSimulation.StartLine;
                contexteImport.EndLine    = m_optionsSimulation.EndLine;
                contexteImport.BestEffort = true;

                IIndicateurProgression indicateur = null;
                indicateur = CFormProgression.GetNewIndicateurAndPopup(I.T("Testing import|20246"));
                result     = config.ImportTable(table, contexteImport, indicateur);
                CFormProgression.EndIndicateur(indicateur);
                indicateur = null;
                if (!result)
                {
                    CFormAlerte.Afficher(result.Erreur);
                    return;
                }
                if (m_optionsSimulation.TestDbWriting)
                {
                    CSessionClient session = CSessionClient.GetSessionForIdSession(ctx.IdSession);
                    session.BeginTrans();
                    result = ctx.SaveAll(false);
                    session.RollbackTrans();
                    if (!result)
                    {
                        if (CFormAlerte.Afficher(result.Erreur, EFormAlerteBoutons.ContinuerAnnuler, EFormAlerteType.Info) == System.Windows.Forms.DialogResult.Cancel)
                        {
                            return;
                        }
                    }
                }
                if (CFormResultatSmartImport.ShowImportResult(ctx, contexteImport, config, m_rootValues, table))
                {
                    result = ctx.SaveAll(true);
                    if (!result)
                    {
                        CFormAlerte.Afficher(result.Erreur);
                        return;
                    }
                }
            }
        }