Exemplo n.º 1
0
        //--------------------------------------------------------------------
        static void CTimosServeur_OnMajStructureBaseEvent(object sender, EventArgs e)
        {
            // Mise à jour de la base
            C2iDataBaseUpdateOperationTable opTableCamusatData =
                new C2iDataBaseUpdateOperationTable(typeof(CCamusatQowisioData));
            C2iDataBaseUpdateOperationTable opTableCamusatAlarm =
                new C2iDataBaseUpdateOperationTable(typeof(CCamusatQowisioAlarm));

            IDatabaseConnexion connexion = CSc2iDataServer.GetInstance().GetDatabaseConnexion(0, "");

            if (connexion != null)
            {
                CResultAErreur result = CResultAErreur.True;
                try
                {
                    connexion.BeginTrans();
                    result = opTableCamusatData.ExecuterOperation(connexion, null);
                    if (result)
                    {
                        result = opTableCamusatAlarm.ExecuterOperation(connexion, null);
                    }
                    if (!result)
                    {
                        connexion.RollbackTrans();
                    }
                    else
                    {
                        connexion.CommitTrans();
                    }
                }
                catch (Exception ex)
                {
                    result.EmpileErreur(ex.Message);
                }
            }
            m_bTraitementEnCours = false;
        }
Exemplo n.º 2
0
        public static void Demasque()
        {
            int c_nAttente     = 500;                   // 500 ms d'attente dans la boucle
            int nNbToursBoucle = 1800000 / c_nAttente;  // Nb de tours de boucle pour 1/2h d'attente

            Thread.Sleep(50000);

            CSessionClient session = CSessionClient.CreateInstance();

            session.OpenSession(new CAuthentificationSessionServer(), "Unmask alarms", ETypeApplicationCliente.Service);


            IDatabaseConnexion connexion = CSc2iDataServer.GetInstance().GetDatabaseConnexion(session.IdSession, CSpvServeur.c_spvConnection);
            string             stSQL     = "Begin MaskModified; end;";
            CResultAErreur     result;
            int nErreur1 = 0, nErreur2 = 0;

            while (true)
            {
                // Démasquage
                result = CResultAErreur.True;
                try
                {
                    // Démasquage
                    result += connexion.BeginTrans();
                    if (result)
                    {
                        result += connexion.ExecuteScalar(stSQL);
                    }

                    if (result)
                    {
                        result += connexion.CommitTrans();
                    }
                    else
                    {
                        connexion.RollbackTrans();
                    }
                }
                catch (Exception e)
                {
                    result.EmpileErreur(e.Message);
                }

                if (!result)
                {
                    if (nErreur1 == 0)
                    {
                        C2iEventLog.WriteErreur(I.T("Problem with unmasking alarms automatically|50000"));
                        nErreur1++;
                    }
                }

                // Pour ne pas trop encombrer les événements windows
                if (nErreur1 > 0)
                {
                    nErreur1++;
                }
                else if (nErreur1 > nNbToursBoucle) // Equipvaut à 1/2 heure
                {
                    nErreur1 = 0;
                }

                // Démasquage alarmes filles (traitement déconnecté du précédent)
                try
                {
                    result = connexion.BeginTrans();
                    if (result)
                    {
                        result += connexion.ExecuteScalar("DELETE " + CSpvFinalarm.c_nomTableInDb);
                    }

                    if (result)
                    {
                        result += connexion.CommitTrans();
                    }
                    else
                    {
                        connexion.RollbackTrans();
                    }
                }
                catch (Exception e)
                {
                    result.EmpileErreur(e.Message);
                }

                if (!result)
                {
                    if (nErreur2 == 0)
                    {
                        C2iEventLog.WriteErreur(I.T("Problem with unmasking child alarms automatically|50001"));
                        nErreur2++;
                    }
                }

                // Pour ne pas trop encombrer les événements windows
                if (nErreur2 > 0)
                {
                    nErreur2++;
                }
                else if (nErreur2 > nNbToursBoucle) // Equipvaut à 1/2 heure
                {
                    nErreur2 = 0;
                }

                if (C2iStopApp.AppStopper.WaitOne(c_nAttente, false))
                {
                    break;
                }
            }
        }
Exemplo n.º 3
0
        //---------------------------------------------------------------------------
        public CResultAErreur UpdateStructureBase(IIndicateurProgression indicateurProgress)
        {
            CResultAErreur result = CResultAErreur.True;

            m_indicateurProgress = indicateurProgress;

            int nVersionDB     = (int)new CDatabaseRegistre(Connection).GetValeurLong(c_strCleVersionBDD, -1);
            int nVersionFinale = m_structureDB.GetLastVersion();

            int nOldVersion = nVersionDB;

            if (nVersionDB < 0)
            {
                result = InitialisationBase();
            }

            if (m_bForceMAJ)
            {
                nVersionDB = nVersionDB > 0 ? nVersionDB - 1 : 0;
            }

            if (nVersionDB < 0)
            {
                nVersionDB = 0;
            }

            if (m_indicateurProgress != null)
            {
                m_indicateurProgress.PushLibelle(I.T("Database Update|30005"));
                m_indicateurProgress.SetBornesSegment(nVersionDB, nVersionFinale);
                //m_indicateurProgress.PushSegment(nVersionDB, nVersionFinale);
            }

            result = m_connexion.GetDataBaseCreator().UpdateStructureTableRegistre();

            while (nVersionDB < nVersionFinale && result)
            {
                nVersionDB++;

                result = m_connexion.BeginTrans();

                if (!result)
                {
                    return(result);
                }

                if (m_indicateurProgress != null)
                {
                    m_indicateurProgress.SetInfo("Version " + nVersionDB.ToString());
                    m_indicateurProgress.SetValue(nVersionDB - 1);
                    m_indicateurProgress.PushLibelle("DataBase v" + nVersionDB.ToString());
                    m_indicateurProgress.PushSegment(nVersionDB - 1, nVersionDB);
                }

                result = UpdateToVersion(nVersionDB);

                //Validation ou annulation des modifications si erreur
                if (!result)
                {
                    m_connexion.RollbackTrans();
                    result.EmpileErreur(I.T("Database Update Error|30006"));
                    throw new CExceptionErreur(result.Erreur);
                }
                else
                {
                    result = m_connexion.CommitTrans();
                }


                if (m_indicateurProgress != null)
                {
                    m_indicateurProgress.PopSegment();
                    m_indicateurProgress.PopLibelle();
                }
            }

            /*if (m_indicateurProgress != null)
             *      m_indicateurProgress.PopSegment();*/

            //rafraichit les caches de schéma
            CObjetServeur.ClearCacheSchemas();
            C2iOracleDataAdapter.ClearCacheSchemas();
            CStructureTable.ClearCache();

            return(result);
        }