//-------------------------------------------------------------------- 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; }
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; } } }
//--------------------------------------------------------------------------- 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); }