private void SoitConcernePar(CListeObjetsDonnees lstEquips) { if (m_relationToEquipSpv == null) { foreach (CInfoRelation info in CContexteDonnee.GetListeRelationsTable(CEquipementLogique.c_nomTable)) { if (info.TableParente == CEquipementLogique.c_nomTable && info.TableFille == CSpvEquip.c_nomTable) { m_relationToEquipSpv = info; break; } } } lstEquips.GetDependances(m_relationToEquipSpv).AssureLectureFaite(); foreach (CEquipementLogique eqpt in lstEquips) { CSpvEquip spvEquip = new CSpvEquip(eqpt.ContexteDonnee); if (spvEquip.ReadIfExists(new CFiltreData(CSpvEquip.c_champSmtEquipementLogique_Id + "=@1", eqpt.Id), false)) { m_dicEquipementsSpvConcernant[spvEquip.Id] = true; } } lstEquips = lstEquips.GetDependances("EquipementsLogiquesContenus"); if (lstEquips.Count > 0) { SoitConcernePar(lstEquips); } }
public CSpvEquip GetSpvEquip(CContexteDonnee contexteDonnee) { CSpvEquip equip = new CSpvEquip(contexteDonnee); if (equip.ReadIfExists(m_nId)) { return(equip); } return(null); }
internal override void InitFromElementDeSchema(CElementDeSchemaReseau elementDeSchema) { base.InitFromElementDeSchema(elementDeSchema); CLienReseau lien = elementDeSchema.LienReseau; if (lien == null) { throw new Exception("Bad element for supervision data "); } m_nIdLienSmt = lien.Id; CSpvLiai liaisonSpv = CSpvLiai.GetObjetSpvFromObjetTimos(lien); if (liaisonSpv != null) { m_dicLiaisonsSpvConcernant[liaisonSpv.Id] = true; m_nIdLienSpv = liaisonSpv.Id; } /* */ CSchemaReseau schemaDeLiaison = lien.SchemaReseau; if (schemaDeLiaison != null) { CInfoSchemaDeSchemaSupervise info = new CInfoSchemaDeSchemaSupervise(this, null, m_base, NiveauProfondeur + 1); m_listeFils.Add(info); info.InitFromSchema(schemaDeLiaison); } //Si pas de schéma ou que le schéma ne contient pas les sites bool bHasElement1 = false; bool bHasElement2 = false; IElementALiensReseau elt1 = lien.Element1; IElementALiensReseau elt2 = lien.Element2; if (schemaDeLiaison != null) { foreach (CElementDeSchemaReseau elt in schemaDeLiaison.ElementsDeSchema) { IElementALiensReseau eltAssocie = elt.ElementAssocie as IElementALiensReseau; if (eltAssocie != null && eltAssocie.Equals(elt1)) { bHasElement1 = true; } if (eltAssocie != null && eltAssocie.Equals(elt2)) { bHasElement2 = true; } if (bHasElement1 && bHasElement2) { break; } } } CSpvSite site = new CSpvSite(m_base.ContexteDonnee); CSpvEquip equip = new CSpvEquip(m_base.ContexteDonnee); if (!bHasElement1) { if (elt1 is CSite) { if (site.ReadIfExists(new CFiltreData(CSpvSite.c_champSmtSite_Id + "=@1", elt1.Id), false)) { m_dicSitesSpvConcernant[site.Id] = true; } } else if (elt1 is CEquipementLogique) { if (equip.ReadIfExists(new CFiltreData(CSpvEquip.c_champSmtEquipementLogique_Id + "=@1", elt1.Id), false)) { m_dicEquipementsSpvConcernant[equip.Id] = true; } } } if (!bHasElement2) { if (elt2 is CSite) { if (site.ReadIfExists(new CFiltreData(CSpvSite.c_champSmtSite_Id + "=@1", elt2.Id), false)) { m_dicSitesSpvConcernant[site.Id] = true; } } else if (elt2 is CEquipementLogique) { if (equip.ReadIfExists(new CFiltreData(CSpvEquip.c_champSmtEquipementLogique_Id + "=@1", elt2.Id), false)) { m_dicEquipementsSpvConcernant[equip.Id] = true; } } } }
////////////////////////////////////////////////////////////////// public static void ModificationsSNMP( CContexteDonnee contexte, Hashtable tableData, ref CResultAErreur result) { if (!result) { return; } DataTable table = contexte.Tables[CRelationEquipementLogique_ChampCustom.c_nomTable]; if (table == null) { return; } ArrayList lst = new ArrayList(table.Rows); IRequeteSNMPServeur requeteurServeur = null; foreach (DataRow row in lst) { if (row.RowState == DataRowState.Modified || row.RowState == DataRowState.Added) { if (row[CObjetDonnee.c_champContexteModification] == DBNull.Value || (string)row[CObjetDonnee.c_champContexteModification] != CSpvChampCustomSNMP.c_contexteModificationRefreshFromSNMP) { CRelationEquipementLogique_ChampCustom relChamp = new CRelationEquipementLogique_ChampCustom(row); CSpvChampCustomSNMP champSNMP = new CSpvChampCustomSNMP(contexte); if (champSNMP.ReadIfExists(new CFiltreData(CSpvChampCustomSNMP.c_champIdChampCustomTimos + "=@1", (int)row[CChampCustom.c_champId]))) { if (!champSNMP.GetOnly) { CSpvEquip eqptSpv = new CSpvEquip(contexte); if (eqptSpv.ReadIfExists(new CFiltreData(CSpvEquip.c_champSmtEquipementLogique_Id + "=@1", row[CEquipementLogique.c_champId]))) { string strIP = eqptSpv.AdresseIP; string strCommunaute = eqptSpv.CommunauteSnmp; if (requeteurServeur == null) { requeteurServeur = C2iFactory.GetNewObjetForSession("CRequeteSNMPServeur", typeof(IRequeteSNMPServeur), eqptSpv.ContexteDonnee.IdSession) as IRequeteSNMPServeur; } if (champSNMP != null && champSNMP.OID != null && champSNMP.OID.Length > 0 && champSNMP.FormuleIndex != null) { CContexteEvaluationExpression ctxFormule = new CContexteEvaluationExpression(relChamp.ElementAChamps); CResultAErreur resTmp = champSNMP.FormuleIndex.Eval(ctxFormule); if (resTmp) { try { int nIndex = Convert.ToInt32(result.Data); string strOid = champSNMP.OID + "." + nIndex.ToString(); CRequeteSnmpOID requete = new CRequeteSnmpOID(strIP, strCommunaute, strOid); requeteurServeur.SetValue(requete, relChamp.Valeur); } catch { } } } } } } } } } }
public bool FormatMessAccesAlarme(CSpvLienAccesAlarme spvLienAccesAlarme, DataRowState rowState) { Int32 nIdTypeCARTE_GTR = 0, nIdTypeIP2PORT = 0, nIdTypeGSITE = 0; string strCategorieObjet = ""; Int32 nIdObjet = 0; bool bEquipToSurv = false; string strCodeSaisie; string strAddrIP; if (rowState == DataRowState.Added) { strCodeSaisie = "C"; } else if (rowState == DataRowState.Modified) { strCodeSaisie = "M"; } else if (rowState == DataRowState.Deleted) { strCodeSaisie = "S"; } else { throw new Exception(I.T("DataRowState not provided for this function|50010")); } CSpvTypeq spvTypeq = new CSpvTypeq(ContexteDonnee); if (spvTypeq.ReadIfExists(new CFiltreData(CSpvTypeq.c_champTYPEQ_NOM + "=@1", CSpvTypeq.c_CARTE_GTR))) { nIdTypeCARTE_GTR = spvTypeq.Id; } if (spvTypeq.ReadIfExists(new CFiltreData(CSpvTypeq.c_champTYPEQ_NOM + "=@1", CSpvTypeq.c_GSITE))) { nIdTypeGSITE = spvTypeq.Id; } if (spvTypeq.ReadIfExists(new CFiltreData(CSpvTypeq.c_champTYPEQ_NOM + "=@1", CSpvTypeq.c_IP2PORT))) { nIdTypeIP2PORT = spvTypeq.Id; } CSpvAccesAlarme accesOne, accesTwo; accesOne = spvLienAccesAlarme.AccesAlarmeOne; accesTwo = spvLienAccesAlarme.AccesAlarmeTwo; CSpvEquip spvEqt = spvLienAccesAlarme.SpvEquip; CSpvSite spvSite = spvLienAccesAlarme.SpvSite; CSpvLiai spvLiai = spvLienAccesAlarme.SpvLiai; if (rowState == DataRowState.Deleted) { if (accesOne.Row.RowState == DataRowState.Deleted) { accesOne.VersionToReturn = DataRowVersion.Original; } if (accesTwo.Row.RowState == DataRowState.Deleted) { accesTwo.VersionToReturn = DataRowVersion.Original; } if (spvEqt != null && spvEqt.Row.RowState == DataRowState.Deleted) { spvEqt.VersionToReturn = DataRowVersion.Original; } if (spvSite != null && spvSite.Row.RowState == DataRowState.Deleted) { spvSite.VersionToReturn = DataRowVersion.Original; } if (spvLiai != null && spvLiai.Row.RowState == DataRowState.Deleted) { spvLiai.VersionToReturn = DataRowVersion.Original; } } if (accesOne == spvLienAccesAlarme.SpvAccesAlarmeSysteme0()) { // Dans ce cas, seul le cas GSITE nous intéresse CSpvEquip spvEquip = new CSpvEquip(ContexteDonnee); if (spvEquip.ReadIfExists(new CFiltreData(CSpvEquip.c_champEQUIP_ID + "=@1", spvLienAccesAlarme.BindingId))) { if (spvEquip.TypeEquipement.Id != nIdTypeGSITE) { return(false); } else { bEquipToSurv = spvEquip.ASuperviser; } } } else { if (spvSite != null) { strCategorieObjet = c_SITE; nIdObjet = spvSite.Id; bEquipToSurv = true; } else if (spvLiai != null) { strCategorieObjet = c_LIAISON; nIdObjet = spvLiai.Id; bEquipToSurv = true; } else if (spvEqt != null) { strCategorieObjet = c_EQUIP; nIdObjet = spvEqt.Id; bEquipToSurv = spvEqt.ASuperviser; strAddrIP = spvEqt.AdresseIP; } else { throw new Exception(I.T("Father object not filled|50009")); } } if (!bEquipToSurv) { return(false); } string strMess = ""; if (accesOne == spvLienAccesAlarme.SpvAccesAlarmeSysteme0()) { // Concerne un accès alarme GSITE if (rowState == DataRowState.Deleted) { strMess = string.Format("#9#7#5#S#{0}#{1}#", spvLienAccesAlarme.BindingId, spvEqt.CommentairePourSituer); } else { strMess = string.Format("#9#11#5#{0}#{1}#{2}#{3}#{4}#{5}#{6}#", strCodeSaisie, spvLienAccesAlarme.BindingId, spvEqt.CommentairePourSituer, spvLienAccesAlarme.DureeMin, spvLienAccesAlarme.FreqNb, spvLienAccesAlarme.FreqPeriod, System.Convert.ToInt32(spvLienAccesAlarme.Surveiller)); } } else if (accesTwo == spvLienAccesAlarme.SpvAccesAlarmeSysteme0()) { // Concerne un accès alarme TRAP if (rowState == DataRowState.Deleted) { strMess = string.Format("#9#8#5#S#{0}#{1}#{2}#", spvEqt.AdresseIP, spvEqt.Id, accesOne.TrapIdent); } else { strMess = string.Format("#9#12#4#{0}#{1}#{2}#{3}#{4}#{5}#{6}#{7}#", strCodeSaisie, spvEqt.AdresseIP, spvEqt.Id, accesOne.TrapIdent, spvLienAccesAlarme.DureeMin, spvLienAccesAlarme.FreqNb, spvLienAccesAlarme.FreqPeriod, System.Convert.ToInt32(spvLienAccesAlarme.Surveiller)); } } else if (accesTwo != null && accesTwo != spvLienAccesAlarme.SpvAccesAlarmeSysteme0()) { // Concerne un accès alarme de type boucle // La donnée "A surveiller" a-t-elle changée bool bSurveillanceChangee = (rowState == DataRowState.Added && spvLienAccesAlarme.Surveiller) || (rowState == DataRowState.Modified && (bool)spvLienAccesAlarme.Row[CSpvLienAccesAlarme.c_champALARMGEREE_TOSURV, DataRowVersion.Original] != spvLienAccesAlarme.Surveiller); if (accesTwo.SpvEquip.TypeEquipement.Id == nIdTypeCARTE_GTR) { // Le nom de l'équipement de collecte est de la forme // IS xx/GTR yy string strNomEquipCollecte = accesTwo.SpvEquip.CommentairePourSituer; if (rowState == DataRowState.Deleted) { strMess = string.Format("#9#9#2#S#{0}#{1}#{2}#{3}#", strCategorieObjet, nIdObjet, strNomEquipCollecte.Substring(3, 2), ((Convert.ToInt32(strNomEquipCollecte.Substring(10, 2)) - 1) * 48) + Convert.ToInt32(accesTwo.NomAcces)); } else if (bSurveillanceChangee) { strMess = string.Format("#9#10#2#{0}#{1}#{2}#{3}#{4}#{5}#", strCodeSaisie, strCategorieObjet, nIdObjet, strNomEquipCollecte.Substring(3, 2), ((Convert.ToInt32(strNomEquipCollecte.Substring(10, 2)) - 1) * 48) + Convert.ToInt32(accesTwo.NomAcces), System.Convert.ToInt32(spvLienAccesAlarme.Surveiller)); } } else { // IP2PORT ou IP2CHOICE ou autre EDC boucle de type IP (ex: NEC) if (rowState == DataRowState.Deleted) { strMess = string.Format("#9#10#3#S#{0}#{1}#{2}#{3}#{4}#", strCategorieObjet, nIdObjet, accesTwo.SpvEquip.AdresseIP, accesTwo.SpvEquip.Id, accesTwo.NomAcces); } else { strMess = string.Format("#9#14#3#{0}#{1}#{2}#{3}#{4}#{5}#{6}#{7}#{8}#{9}#", strCodeSaisie, strCategorieObjet, nIdObjet, accesTwo.SpvEquip.AdresseIP, accesTwo.SpvEquip.Id, accesTwo.NomAcces, spvLienAccesAlarme.DureeMin, spvLienAccesAlarme.FreqNb, spvLienAccesAlarme.FreqPeriod, System.Convert.ToInt32(spvLienAccesAlarme.Surveiller)); } } } Message = strMess; return(true); }