public void PushLibelle(string strInfo)
 {
     try
     {
         if (m_indicateur != null)
         {
             m_indicateur.PushLibelle(strInfo);
         }
     }
     catch
     { }
 }
Esempio n. 2
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);
        }