//---------------------------------------------------------------- private static void UpdateOptimizedDb() { CDataHotel hotel = null; if (m_database != null) { CListeEntitesDeMemoryDb <CDataHotel> lst = new CListeEntitesDeMemoryDb <CDataHotel>(m_database); if (lst.Count() > 0) { hotel = lst.ElementAt(0); } } m_optimizedDb = new CDataRoomOptimizedDataBase(hotel); }
//-------------------------------------------------------- public static CDataRoom GetRoomFor(string strIdEntite, CMemoryDb db) { string strRoomId = ""; if (m_cacheDispatch.TryGetValue(strIdEntite, out strRoomId)) { CDataRoom room = new CDataRoom(db); if (room.ReadIfExist(strRoomId)) { return(room); } } CListeEntitesDeMemoryDb <CDataDispatch> lstDispatch = new CListeEntitesDeMemoryDb <CDataDispatch>(db); lstDispatch.Filtre = new CFiltreMemoryDb(CDataDispatch.c_champStartEntityId + " like @1", strIdEntite[0] + "%"); lstDispatch.Sort = CDataDispatch.c_champStartEntityId + " desc"; CDataRoom roomDest = null; foreach (CDataDispatch dd in lstDispatch) { if (strIdEntite.StartsWith(dd.StartEntityId)) { roomDest = dd.DestinationRoom; } ; } if (roomDest == null) { //Cherche le dispatch vide lstDispatch.Filtre = new CFiltreMemoryDb(CDataDispatch.c_champStartEntityId + "=@1", ""); if (lstDispatch.Count() > 0) { roomDest = lstDispatch.ElementAt(0).DestinationRoom; } } if (roomDest != null) { m_cacheDispatch[strIdEntite] = roomDest.Id; } return(roomDest); }
public void CreateAlarmesOnTrap(CTrapInstance trap, CFuturocomTrace trace) { trap.CurrentTrapHandler = this; CDefinitionProprieteDynamiqueVariableFormule def = AssureVariableTrap(FormulePreTraitementTrap); CContexteEvaluationExpression ctx = new CContexteEvaluationExpression(TypeAgent); if (def != null) { ctx.SetValeurVariable(def, trap); } CResultAErreur result = CResultAErreur.True; trap.EntiteAssociee = null; if (FormuleIndexEntite != null && TypeEntiteAssocie != null) { CContexteEvaluationExpression ctxSurThis = new CContexteEvaluationExpression(trap); result = FormuleIndexEntite.Eval(ctxSurThis); if (result && result.Data != null) { CListeEntitesDeMemoryDb <CEntiteSnmpPourSupervision> lst = trap.AgentSnmp.Entites; lst.Filtre = new CFiltreMemoryDb(CEntiteSnmpPourSupervision.c_champIndex + "=@1 and " + CTypeEntiteSnmpPourSupervision.c_champId + "=@2", result.Data.ToString(), TypeEntiteAssocie.Id); if (lst.Count() > 0) { trap.EntiteAssociee = lst.ElementAt(0); if (trace != null) { trace.Write( "Trap associated to entity " + trap.EntiteAssociee.Libelle + " (" + trap.EntiteAssociee.TypeEntite.Libelle + ")", ALTRACE.DEBUG); } } else { if (trace != null) { trace.Write( "Associated entity is null (" + TypeEntiteAssocie.Libelle + " " + result.Data.ToString() + ")", ALTRACE.DEBUG); } } } else { if (trace != null) { if (!result) { trace.Write( "Error in associed entity index formula : " + result.Erreur.ToString(), ALTRACE.DEBUG); } else { trace.Write( "Error in associed entity index formula : the formula returned a null result", ALTRACE.DEBUG); } } } } bool bEvalPretraite = true; if (FormulePreTraitementTrap is C2iExpressionGraphique && FormulePreTraitementTrap.Parametres.Count == 0) { bEvalPretraite = false; } if (bEvalPretraite) { result = FormulePreTraitementTrap.Eval(ctx); if (!result && trace != null) { trace.Write( "Error in Pretreatment formula " + result.Erreur.ToString(), ALTRACE.DEBUG); } } foreach (CCreateurAlarme createur in CreateursAlarmes) { if (trace != null) { trace.Write( "Try creator " + createur.Libelle + " (" + createur.Code + ")", ALTRACE.DEBUG); } bool bCreer = createur.FormuleCondition.GetType() == typeof(C2iExpressionVrai); if (!bCreer) { ctx = new CContexteEvaluationExpression(trap); result = createur.FormuleCondition.Eval(ctx); if (result && result.Data is bool && (bool)result.Data) { bCreer = true; } else if (trace != null) { if (!result) { trace.Write( "Creator " + createur.Libelle + " condition error : " + result.Erreur.ToString(), ALTRACE.DEBUG); } else { trace.Write( "Create " + createur.Libelle + " condition returned false", ALTRACE.DEBUG); } } } if (bCreer) { if (trace != null) { trace.Write( "Creator " + createur.Libelle + " condition returned true", ALTRACE.DEBUG); } trap.AddAlarm(createur.Code, 0, trace); } } }
private int CompareAdresse(string strAdresse1, string strAdresse2, int nNiveau, bool bEgalSiVide) { CListeEntitesDeMemoryDb <CRelationSystemeCoordonnees_FormatNumerotation> lstFormats = RelationFormatsNumerotation; if (nNiveau >= lstFormats.Count()) { return(0); } CRelationSystemeCoordonnees_FormatNumerotation relFormat = (CRelationSystemeCoordonnees_FormatNumerotation)lstFormats.ElementAt(nNiveau); if (strAdresse2 == "" || strAdresse1 == "") { if (bEgalSiVide) { return(0); } else { return(strAdresse1.CompareTo(strAdresse2)); } } int nPos1 = strAdresse1.IndexOf(c_separateurNumerotations); int nPos2 = strAdresse2.IndexOf(c_separateurNumerotations); string strDebut1, strFin1; string strDebut2, strFin2; if (nPos1 > 0) { strDebut1 = strAdresse1.Substring(0, nPos1); strFin1 = strAdresse1.Substring(nPos1 + 1); } else { strDebut1 = strAdresse1; strFin1 = ""; } if (nPos2 > 0) { strDebut2 = strAdresse2.Substring(0, nPos2); strFin2 = strAdresse2.Substring(nPos2 + 1); } else { strDebut2 = strAdresse2; strFin2 = ""; } int nResult = relFormat.Compare(strDebut1, strDebut2); if (nResult != 0) { return(nResult); } return(CompareAdresse(strFin1, strFin2, nNiveau + 1, bEgalSiVide)); }
/// <summary> /// Ajoute à la coordonnée nNbToAdd et retourne la nouvelle /// coordonnée (string dans le data), ou une erreur si ce n'est pas possible /// </summary> /// <param name="strCoordonnee"></param> /// <param name="nNbToAdd"></param> /// <returns></returns> public CResultAErreur AjouteDansNiveau(string strCoordonnee, int nNbToAdd) { CResultAErreur result = CResultAErreur.True; string[] strNiveaux = strCoordonnee.Split(c_separateurNumerotations); int nNiveauFinal = strNiveaux.Length - 1; //récupère le la système de numérotation de ce niveau CListeEntitesDeMemoryDb <CRelationSystemeCoordonnees_FormatNumerotation> listeNiveaux = RelationFormatsNumerotation; listeNiveaux.Sort = CRelationSystemeCoordonnees_FormatNumerotation.c_champPosition; if (nNiveauFinal > listeNiveaux.Count()) { //plus de paramétrage pour ce niveau result.EmpileErreur(I.T("The coordinate has too many levels for the defined system|253")); return(result); } //Ajoute le nombre au dernier niveau CRelationSystemeCoordonnees_FormatNumerotation rel = (CRelationSystemeCoordonnees_FormatNumerotation)listeNiveaux.ElementAt(nNiveauFinal); result = rel.Ajoute(strNiveaux[strNiveaux.Length - 1], nNbToAdd); if (!result) { return(result); } //Reconstruit la coordonnée string strCoord = ""; for (int nNiveau = 0; nNiveau < nNiveauFinal; nNiveau++) { strCoord += strNiveaux[nNiveau] + c_separateurNumerotations; } strCoord += (string)result.Data; result.Data = strCoord; return(result); }
/// <summary> /// Analyse une coordonnée donnée avec une unité pour voir si le dernier niveau<br/> /// de la coordonnée correspond bien avec fournie /// </summary> /// <param name="strCoordonnee">coordonnée à vérifier</param> /// <param name="unite">Unite</param> /// <returns>Retourne vrai ou faux avec des erreurs en cas de problème syntaxique ou autre sur la coordonnée</returns> public CResultAErreur VerifieUnite(string strCoordonnee, CUniteCoordonnee unite) { CResultAErreur result = CResultAErreur.True; string[] strNiveaux = strCoordonnee.Split(c_separateurNumerotations); int nNiveauFinal = strNiveaux.Length - 1; //récupère le la système de numérotation de ce niveau CListeEntitesDeMemoryDb <CRelationSystemeCoordonnees_FormatNumerotation> listeNiveaux = RelationFormatsNumerotation; listeNiveaux.Sort = CRelationSystemeCoordonnees_FormatNumerotation.c_champPosition; if (nNiveauFinal > listeNiveaux.Count()) { //plus de paramétrage pour ce niveau result.EmpileErreur(I.T("The coordinate has too many levels for the defined system|253")); return(result); } CRelationSystemeCoordonnees_FormatNumerotation rel = (CRelationSystemeCoordonnees_FormatNumerotation)listeNiveaux.ElementAt(nNiveauFinal); return(rel.VerifieUnite(unite)); }