Beispiel #1
0
        ///////////////////////////////////////////////////////////////
        protected override CResultAErreur MyFillFromElementDeGraphe(CElementDeArbreOperationnel element)
        {
            CResultAErreur result = CResultAErreur.True;
            CElementDeArbreOperationnelEntite eltComposant = element as CElementDeArbreOperationnelEntite;

            if (eltComposant == null)
            {
                result.EmpileErreur(I.T("Bad element type|20030"));
                return(result);
            }
            CComposantDeGrapheReseau composant = eltComposant.Composant;

            IElementDeSchemaReseau eltAssocie = composant.GetElementAssocie(ContexteDonnee);

            ElementAssocie = null;
            if (eltAssocie is CSite)
            {
                ElementAssocie = CSpvSite.GetObjetSpvFromObjetTimosAvecCreation(eltAssocie as CSite);
            }
            else if (eltAssocie is CEquipementLogique)
            {
                ElementAssocie = CSpvEquip.GetObjetSpvFromObjetTimosAvecCreation(eltAssocie as CEquipementLogique);
            }
            else if (eltAssocie is CLienReseau)
            {
                ElementAssocie = CSpvLiai.GetObjetSpvFromObjetTimosAvecCreation(eltAssocie as CLienReseau);
            }
            if (ElementAssocie == null)
            {
                result.EmpileErreur(I.T("Can not associate element to Graph component|20031"));
                return(result);
            }
            return(result);
        }
Beispiel #2
0
        public override sc2i.common.CResultAErreur MyInitChamps()
        {
            if (ObjetEdite is CEquipementLogique)
            {
                m_spvEquip = CSpvEquip.GetSpvEquipFromEquipement(ObjetEdite as CEquipementLogique) as CSpvEquip;
            }

            CResultAErreur result = base.MyInitChamps();

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

            if (result && m_spvEquip != null)
            {
                m_PanelAlarmPorts.InitFromListeObjets(
                    m_spvEquip.AlarmesCablesBouclesAndTrap,
                    typeof(CSpvLienAccesAlarme),
                    typeof(CFormEditionAccesAlarmeEquipement),
                    m_spvEquip,
                    "SpvEquip");

                /*
                 * m_PanelTransmissionPorts.InitFromListeObjets(
                 * m_spvEquip.AccesTransmission,
                 * typeof(CSpvAccesTrans),
                 * typeof(CFormEditionAccesTrans),
                 * m_spvEquip,
                 * "SpvEquip");*/
            }

            return(result);
        }//MyInitChamps()
Beispiel #3
0
        public override sc2i.common.CResultAErreur MyInitChamps()
        {
            if (ObjetEdite is CEquipementLogique)
            {
                m_spvEquip = CSpvEquip.GetSpvEquipFromEquipement(ObjetEdite as CEquipementLogique) as CSpvEquip;
            }

            CResultAErreur result = base.MyInitChamps();

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

            if (result && m_spvEquip != null)
            {
                m_PanelAlarmWiredPorts.InitFromListeObjets(
                    m_spvEquip.AlarmesCablesBoucles,
                    typeof(CSpvLienAccesAlarme),
                    typeof(CFormEditionCablageAccesAlarmeBoucle),
                    m_spvEquip,
                    "SpvEquip");
            }

            return(result);
        }//MyInitChamps()
Beispiel #4
0
        private void FillDicsForNode(CElementDeArbreOperationnel node,
                                     CDictionnaireElementToNoeudArbre dicEquipementToNoeudArbreOp,
                                     CDictionnaireElementToNoeudArbre dicSiteToNoeudArbreOp,
                                     CDictionnaireElementToNoeudArbre dicLiaisonToNoeudArbreOp,
                                     CDictionnaireElementToNoeudArbre dicServiceToNoeudArbreOp)
        {
            CElementDeArbreOperationnelEntite noeudEntite = node as CElementDeArbreOperationnelEntite;

            if (noeudEntite != null)
            {
                try
                {
                    IElementDeSchemaReseau eltAssocie = noeudEntite.Composant.GetElementAssocie(m_base.ContexteDonnee);

                    if (eltAssocie is CEquipementLogique)
                    {
                        CSpvEquip equipement = CSpvEquip.GetObjetSpvFromObjetTimos((CEquipementLogique)eltAssocie);
                        if (equipement != null)
                        {
                            dicEquipementToNoeudArbreOp.Add(equipement.Id, noeudEntite);
                        }
                    }
                    else if (eltAssocie is CSite)
                    {
                        CSpvSite site = CSpvSite.GetObjetSpvFromObjetTimos((CSite)eltAssocie);
                        if (site != null)
                        {
                            dicSiteToNoeudArbreOp.Add(site.Id, noeudEntite);
                        }
                    }
                    else if (eltAssocie is CLienReseau)
                    {
                        CSpvLiai liaison = CSpvLiai.GetObjetSpvFromObjetTimos((CLienReseau)eltAssocie);
                        if (liaison != null)
                        {
                            dicLiaisonToNoeudArbreOp.Add(liaison.Id, noeudEntite);
                        }
                    }
                    else if (eltAssocie is CSchemaReseau)
                    {
                        CSpvSchemaReseau schema = CSpvSchemaReseau.GetObjetSpvFromObjetTimos((CSchemaReseau)eltAssocie);
                        if (schema != null)
                        {
                            dicServiceToNoeudArbreOp.Add(schema.Id, noeudEntite);
                        }
                    }
                }
                catch { }
            }

            // Fonction récursive sur les noeuds fils
            foreach (CElementDeArbreOperationnel nodeFils in node.Fils)
            {
                FillDicsForNode(nodeFils,
                                dicEquipementToNoeudArbreOp,
                                dicSiteToNoeudArbreOp,
                                dicLiaisonToNoeudArbreOp,
                                dicServiceToNoeudArbreOp);
            }
        }
 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);
     }
 }
Beispiel #6
0
        public override sc2i.common.CResultAErreur MyInitChamps()
        {
            CResultAErreur result = base.MyInitChamps();

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

            if (ObjetEdite is CEquipementLogique)
            {
                m_spvEquip = CSpvEquip.GetSpvEquipFromEquipement(ObjetEdite as CEquipementLogique) as CSpvEquip;
            }
            else
            {
                return(result);
            }

            InitListSNMPTables();
            result = InitListSnmpVariables();
            if (!result)
            {
                return(result);
            }

            return(result);
        }
Beispiel #7
0
        public void MajIpFromEquip(CSpvEquip spvEquip)
        {
            this.EquipAddrIP    = spvEquip.AdresseIP;
            this.EquipSNMPIndex = spvEquip.IndexSnmp;

            this.EquipTrapNom     = FormatEquipTrapNom(spvEquip.CommentairePourSituer);
            this.EquipCommutateur = (spvEquip.PositionCommutateur > 0 ? true : false);
        }
Beispiel #8
0
        public CSpvEquip GetSpvEquip(CContexteDonnee contexteDonnee)
        {
            CSpvEquip equip = new CSpvEquip(contexteDonnee);

            if (equip.ReadIfExists(m_nId))
            {
                return(equip);
            }

            return(null);
        }
Beispiel #9
0
        private sc2i.common.CResultAErreur InitListSNMPTables()
        {
            CResultAErreur result = CResultAErreur.True;

            if (m_spvEquip == null && ObjetEdite is CEquipementLogique)
            {
                m_spvEquip = CSpvEquip.GetSpvEquipFromEquipement(ObjetEdite as CEquipementLogique) as CSpvEquip;
            }
            if (m_spvEquip == null)
            {
                return(result);
            }

            List <string>     lstNomColonnes = new List <string>();
            List <CSpvMibobj> lstSpvMibobj   = new List <CSpvMibobj>();

            lstNomColonnes.Add(I.T("Name|134"));

            /*  select #l#MIBOBJ_ID, #129S#MIBOBJ_NOM, #l#MIBOBJ_CLASSID, #i#0, #i#127, #l#0 \
             *            from EQUIP, TYPEQ_MIBMODULE, MIBOBJ	\
             *            where  EQUIP_ID = #l#:m_BddId and	\
             *                       EQUIP.TYPEQ_ID = TYPEQ_MIBMODULE.TYPEQ_ID and	\
             *                       TYPEQ_MIBMODULE.MIBMODULE_ID = MIBOBJ.MIBMODULE_ID and \
             *                       MIBOBJ_TYPE = 'TAB' and MIBOBJ_VISIBLE = 1 \
             *            order by MIBOBJ_NOM*/
            CListeObjetsDonnees objlstMibObj = new CListeObjetsDonnees(m_spvEquip.ContexteDonnee, typeof(CSpvMibobj));

            objlstMibObj.Filtre = new CFiltreDataAvance(CSpvMibobj.c_nomTable, "ModuleMib.SpvTypeq_Mibmodules."
                                                        + CSpvTypeq_Mibmodule.c_champTYPEQ_ID + "= @1 and " +
                                                        CSpvMibobj.c_champMIBOBJ_TYPE + " = 'TAB' and " +
                                                        CSpvMibobj.c_champMIBOBJ_VISIBLE + " = 1 ", m_spvEquip.TypeEquipement.Id);
            objlstMibObj.Tri = CSpvMibobj.c_champMIBOBJ_NOM;

            foreach (CSpvMibobj mibobj in objlstMibObj)
            {
                lstSpvMibobj.Add(mibobj);
            }

            m_lstTables.Init(lstNomColonnes.ToArray(), lstSpvMibobj.ToArray());

            if (m_lstTables.Columns.Count > 0)
            {
                int width = (int)((m_lstTables.Width - 4) / m_lstTables.Columns.Count);

                foreach (ColumnHeader header in m_lstTables.Columns)
                {
                    header.Width = width;
                }
            }

            return(result);
        }
Beispiel #10
0
        private sc2i.common.CResultAErreur InitListSnmpVariables()
        {
            CResultAErreur result = CResultAErreur.True;

            if (m_spvEquip == null && ObjetEdite is CEquipementLogique)
            {
                m_spvEquip = CSpvEquip.GetSpvEquipFromEquipement(ObjetEdite as CEquipementLogique) as CSpvEquip;
            }
            if (m_spvEquip == null)
            {
                return(result);
            }

            List <string>     lstNomColonnes = new List <string>();
            List <CSpvMibobj> lstSpvMibobj;

            lstNomColonnes.Add("OID");
            lstNomColonnes.Add(I.T("Name|134"));
            lstNomColonnes.Add(I.T("Value|60029"));

            // "select #l#MIBMODULE_ID from EQUIP, TYPEQ_MIBMODULE \
            //						where EQUIP_ID = #l#:Id and	\
            //							  EQUIP.TYPEQ_ID = TYPEQ_MIBMODULE.TYPEQ_ID"

            //  "select #129S#MIBOBJ_NOM, #257S#MIBOBJ_OID from  MIBOBJ \
            //						where MIBMODULE_ID = #l#:Id and \
            //							  MIBOBJ_TYPE = 'VS' and	\
            //							  MIBOBJ_VISIBLE = 1"

            CListeObjetsDonnees lstMibObj = new CListeObjetsDonnees(m_spvEquip.ContexteDonnee, typeof(CSpvMibobj));

            lstMibObj.Filtre = new CFiltreDataAvance(CSpvMibobj.c_nomTable, "ModuleMib.SpvTypeq_Mibmodules."
                                                     + CSpvTypeq_Mibmodule.c_champTYPEQ_ID + "= @1 and " +
                                                     CSpvMibobj.c_champMIBOBJ_TYPE + " = 'VS' and " +
                                                     CSpvMibobj.c_champMIBOBJ_VISIBLE + " = 1 ", m_spvEquip.TypeEquipement.Id);

            lstSpvMibobj = FillListMibobjToDisplay(lstMibObj);

            m_listSnmpValues.Init(lstNomColonnes.ToArray(), lstSpvMibobj.ToArray());

            if (m_listSnmpValues.Columns.Count > 0)
            {
                int width = (int)((m_listSnmpValues.Width - 4) / m_listSnmpValues.Columns.Count);

                foreach (ColumnHeader header in m_listSnmpValues.Columns)
                {
                    header.Width = width;
                }
            }

            return(result);
        }
Beispiel #11
0
        public static bool RefreshFromSNMP(object obj)
        {
            CEquipementLogique eqpt = obj as CEquipementLogique;

            if (eqpt == null)
            {
                return(false);
            }
            CSpvEquip eqptSpv = CSpvEquip.GetObjetSpvFromObjetTimos(eqpt);

            if (eqptSpv == null)
            {
                return(false);
            }
            string strIP         = eqptSpv.AdresseIP;
            string strCommunaute = eqptSpv.CommunauteSnmp;

            CChampCustom[] lstChamps           = eqpt.TousLesChamps;
            string         strOldContexteModif = eqpt.ContexteDonnee.IdModificationContextuelle;;

            eqpt.ContexteDonnee.IdModificationContextuelle = CSpvChampCustomSNMP.c_contexteModificationRefreshFromSNMP;
            IRequeteSNMPServeur requeteurServeur = C2iFactory.GetNewObjetForSession("CRequeteSNMPServeur", typeof(IRequeteSNMPServeur), eqpt.ContexteDonnee.IdSession) as IRequeteSNMPServeur;

            foreach (CChampCustom champ in lstChamps)
            {
                CSpvChampCustomSNMP champSNMP = CSpvChampCustomSNMP.GetObjetSpvFromObjetTimos(champ);
                if (champSNMP != null && champSNMP.OID != null && champSNMP.OID.Length > 0 &&
                    champSNMP.FormuleIndex != null)
                {
                    CContexteEvaluationExpression ctxFormule = new CContexteEvaluationExpression(eqpt);
                    CResultAErreur result = champSNMP.FormuleIndex.Eval(ctxFormule);
                    if (result)
                    {
                        try
                        {
                            int             nIndex  = Convert.ToInt32(result.Data);
                            string          strOid  = champSNMP.OID + "." + nIndex.ToString();
                            CRequeteSnmpOID requete = new CRequeteSnmpOID(strIP, strCommunaute, strOid);
                            result = requeteurServeur.GetValue(requete);
                            if (result)
                            {
                                eqpt.SetValeurChamp(champ, result.Data);
                            }
                        }
                        catch {}
                    }
                }
            }
            eqpt.ContexteDonnee.IdModificationContextuelle = strOldContexteModif;
            return(true);
        }
Beispiel #12
0
        ///////////////////////////////////////////////////////////////
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                //TODO : Insérer la logique de vérification de donnée

                // Saisie obligatoire de l'un des éléments de coordonnées
                CSpvEquip spvEquip = objet as CSpvEquip;
                if (spvEquip.CommentairePourSituer == null && spvEquip.Reference == null &&
                    spvEquip.AdresseIP == null)
                {
                    throw new Exception(I.T("Mandatory supervision fields : Comment or Subrack or reference or IP Address |4"));
                }

                // Si le type d'équipement est EQUIP MEDIATION (type système)
                if (spvEquip.TypeEquipement.Id == CSpvTypeq.c_TypeEquipMediationId)
                {
                    if (spvEquip.IndexSnmp == null || spvEquip.IndexSnmp.Length == 0)
                    {
                        throw new Exception(I.T("Snmp index field should be filled when equipement type is @1|50014", CSpvTypeq.c_strTypeEquipMediation));
                    }

                    int nIndex = Convert.ToInt32(spvEquip.IndexSnmp);
                    if (nIndex < CSpvEquip.c_nMinSnmpIndexMediation || nIndex > CSpvEquip.c_nMaxSnmpIndexMediation)
                    {
                        throw new Exception(I.T("Snmp index should be between @1 and @2 when equipment type is @3|50015",
                                                CSpvTypeq.c_strTypeEquipMediation,
                                                CSpvEquip.c_nMinSnmpIndexMediation.ToString(),
                                                CSpvEquip.c_nMaxSnmpIndexMediation.ToString()));
                    }

                    int nPos = spvEquip.CommentairePourSituer.IndexOf('/');
                    if (nPos < 0)
                    {
                        throw new Exception(I.T("For equipment type EQUIP MEDIATION, equipement label should be like 'mediation_name/service_name'|50016"));
                    }
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }
Beispiel #13
0
        //  public void CopyFromLienReseau(CLienReseau lienReseau)
        public override void CopyFromObjetTimos(CLienReseau lienReseau)
        {
            CResultAErreur result = CanSupervise(lienReseau);

            if (!result)
            {
                throw new CExceptionErreur(result.Erreur);
            }
            NomTypeLiaison = lienReseau.TypeLienReseau.Libelle;
            Typeliaison    = CSpvTypliai.GetObjetSpvFromObjetTimos(lienReseau.TypeLienReseau) as CSpvTypliai;
            if (lienReseau.Site1 != null)
            {
                SiteOrigine = CSpvSite.GetObjetSpvFromObjetTimosAvecCreation(lienReseau.Site1);
            }
            if (lienReseau.Site2 != null)
            {
                SiteDestination = CSpvSite.GetObjetSpvFromObjetTimosAvecCreation(lienReseau.Site2);
            }

            if (lienReseau.Equipement1 != null)
            {
                EquipementOrigine = CSpvEquip.GetObjetSpvFromObjetTimosAvecCreation(lienReseau.Equipement1);
            }
            if (lienReseau.Equipement2 != null)
            {
                EquipementDestination = CSpvEquip.GetObjetSpvFromObjetTimosAvecCreation(lienReseau.Equipement2);
            }

            result = UpdateMasquagesEquipements();

            NomLiaison = lienReseau.Libelle;

            switch (lienReseau.Direction.Code)
            {
            case EDirectionLienReseau.UnVersDeux:
                Direction = new CSensLiaison(ESensLiaison.AVersB);
                break;

            case EDirectionLienReseau.DeuxVersUn:
                Direction = new CSensLiaison(ESensLiaison.BVersA);
                break;
            }

            /*UpdateSupportants();
             * UpdateSupportés();*/
        }
Beispiel #14
0
        private static CSpvEquip GetSpvEquip(DataRow row)
        {
            CSpvEquip          spvEquip;
            CEquipementLogique equipement = new CEquipementLogique(row);

            if (equipement.Site != null)
            {
                spvEquip = CSpvEquip.GetSpvEquipFromEquipement(equipement) as CSpvEquip;
                if (spvEquip == null)
                {
                    spvEquip = CSpvEquip.GetSpvEquipFromEquipementAvecCreation(equipement);
                }
                spvEquip.CopyFromObjetTimos(equipement);
                return(spvEquip);
            }
            return(null);
        }
Beispiel #15
0
 void OnRowUpdated(object sender, OracleRowUpdatedEventArgs e)
 {
     if (e.StatementType == StatementType.Insert ||
         e.StatementType == StatementType.Update)
     {
         C2iOracleDataAdapter adapter    = sender as C2iOracleDataAdapter;
         CSpvEquip            equipement = new CSpvEquip(e.Row);
         bool bSuperviser = equipement.ASuperviser;
         if (e.StatementType == StatementType.Insert ||
             e.Row[CSpvEquip.c_champEQUIP_TOSURV] != e.Row[CSpvEquip.c_champEQUIP_TOSURV, DataRowVersion.Original])
         {
             int           nValeurMasquage = bSuperviser ? 0 : 2;
             OracleCommand cmd             = e.Command.Connection.CreateCommand();
             cmd.Transaction = e.Command.Transaction;
             cmd.CommandText = "Begin SetMaskAdmEquip(" +
                               equipement.Id + "," + nValeurMasquage + "); end;";
             cmd.ExecuteScalar();
         }
     }
 }
        internal override void InitFromElementDeSchema(CElementDeSchemaReseau elementDeSchema)
        {
            base.InitFromElementDeSchema(elementDeSchema);
            CEquipementLogique eqtLogique = elementDeSchema.EquipementLogique;

            if (eqtLogique == null)  //Ca ne doit jamais arriver
            {
                throw new Exception("Bad element for supervision data ");
            }
            CSpvEquip equip = CSpvEquip.GetObjetSpvFromObjetTimos(eqtLogique);

            if (equip != null)
            {
                m_dicEquipementsSpvConcernant[equip.Id] = true;
                m_nIdEquipementSpv = equip.Id;
            }
            CDonneeDessinElementDeSchemaReseau donneeDessin = elementDeSchema.DonneeDessin as CDonneeDessinElementDeSchemaReseau;

            if (donneeDessin != null && donneeDessin.CollectChildsAlarms)
            {
                SoitConcernePar(eqtLogique.EquipementsLogiquesContenus);
            }
        }
        public override sc2i.common.CResultAErreur MyInitChamps()
        {
            if (ObjetEdite is CEquipementLogique)
            {
                m_spvEquip = CSpvEquip.GetSpvEquipFromEquipement(ObjetEdite as CEquipementLogique) as CSpvEquip;
            }

            CResultAErreur result = base.MyInitChamps();

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

            if (result && m_spvEquip != null)
            {
                m_txtBoxIPAddress.Text               = m_spvEquip.AdresseIP;
                m_txtBoxSnmpIndex.Text               = m_spvEquip.IndexSnmp;
                m_txtBoxSnmpCommunity.Text           = m_spvEquip.CommunauteSnmp;
                m_txtBoxEquiptTypeSnmpReference.Text = m_spvEquip.ReferenceSnmpTypeEquipement;
                m_txtBoxMediationEquipment.Text      = m_spvEquip.EquipementDeMediation;
                m_chkToRediscover.Checked            = m_spvEquip.ARedecouvrirPeriodiquement;
                m_chkToSurv.Checked = m_spvEquip.ASuperviser;
            }
            else
            {
                m_txtBoxIPAddress.Text               = "";
                m_txtBoxSnmpIndex.Text               = "";
                m_txtBoxSnmpCommunity.Text           = "";
                m_txtBoxEquiptTypeSnmpReference.Text = "";
                m_txtBoxMediationEquipment.Text      = "";
                m_chkToRediscover.Checked            = false;
                m_chkToSurv.Checked = false;
            }

            return(result);
        }
Beispiel #18
0
        public override CResultAErreur TraitementApresSauvegarde(CContexteDonnee contexte, bool bOperationReussie)
        {
            CResultAErreur result = base.TraitementApresSauvegarde(contexte, bOperationReussie);

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

            DataTable table = contexte.Tables[GetNomTable()];

            if (table == null)
            {
                return(result);
            }

            List <DataRow> lstCrees = (List <DataRow>)table.ExtendedProperties[CDivers.c_cleRowCrees];

            if (lstCrees == null)
            {
                return(result);
            }

            foreach (DataRow row in lstCrees)
            {
                CSpvEquip spvEquip = new CSpvEquip(row);
                if (spvEquip.ASuperviser)
                {
                    // Création du message dans MessEm
                    CSpvMessem spvMessem = new CSpvMessem(spvEquip.ContexteDonnee);
                    spvMessem.CreateNewInCurrentContexte();
                    spvMessem.FormatMessCreEquip(spvEquip.Id);
                }
            }

            return(result);
        }
        public override sc2i.common.CResultAErreur MyMajChamps()
        {
            CResultAErreur result = base.MyMajChamps();

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

            if (Equipement != null && m_spvEquip == null && m_extModeEdition.ModeEdition)
            {
                m_spvEquip = CSpvEquip.GetSpvEquipFromEquipementAvecCreation(Equipement);
            }

            m_spvEquip.AdresseIP      = m_txtBoxIPAddress.Text;
            m_spvEquip.IndexSnmp      = m_txtBoxSnmpIndex.Text;
            m_spvEquip.CommunauteSnmp = m_txtBoxSnmpCommunity.Text;
            m_spvEquip.ReferenceSnmpTypeEquipement = m_txtBoxEquiptTypeSnmpReference.Text;
            m_spvEquip.EquipementDeMediation       = m_txtBoxMediationEquipment.Text;
            m_spvEquip.ARedecouvrirPeriodiquement  = m_chkToRediscover.Checked;
            m_spvEquip.ASuperviser = m_chkToSurv.Checked;

            return(result);
        }
Beispiel #20
0
        ////////////////////////////////////////////////////////////////////
        public static void PropagerCEquipement(CContexteDonnee contexte, Hashtable tableData, ref CResultAErreur result)
        {
            // Traitement CEquipementLogique
            DataTable dt = contexte.Tables[CEquipementLogique.c_nomTable];

            if (dt != null)
            {
                ArrayList rows = new ArrayList(dt.Rows);
                CSpvEquip spvEquip;

                foreach (DataRow row in rows)
                {
                    if (row.RowState != DataRowState.Unchanged)
                    {
                        switch (row.RowState)
                        {
                        case DataRowState.Added:
                        case DataRowState.Modified:
                            spvEquip = CSpvEquipServeur.GetSpvEquip(row);
                            if (spvEquip == null)
                            {
                                continue;
                            }

                            break;

                        default:
                            break;
                        }
                    }
                } //foreach (DataRow row in rows)
            }     // if (dt != null)

            // Traitement CSpvEquip
            DataTable table = contexte.Tables[CSpvEquip.c_nomTable];

            if (table == null)
            {
                return;
            }

            List <DataRow> lstCrees = (List <DataRow>)table.ExtendedProperties[CDivers.c_cleRowCrees];

            if (lstCrees != null)
            {
                table.ExtendedProperties.Clear();
            }

            lstCrees = new List <DataRow>();

            ArrayList lstRows = new System.Collections.ArrayList(table.Rows);

            foreach (DataRow row in lstRows)
            {
                // Stockage temporaire des enregistrements dans une liste
                // pour traitement dans AfterSave (messages pour
                // EmessEM). Car à ce niveau, on ne dispose pas de l'ID de l'équipement
                CSpvEquip spvEquip;
                if (row.RowState == DataRowState.Added)
                {
                    spvEquip = new CSpvEquip(row);
                    if (spvEquip.ASuperviser)
                    {
                        lstCrees.Add(row);
                    }

                    spvEquip.TraitementMetier(row.RowState);
                }
                else if (row.RowState == DataRowState.Modified)
                {
                    spvEquip = new CSpvEquip(row);
                    spvEquip.TraitementMetier(row.RowState);

                    if (((bool)spvEquip.Row[CSpvEquip.c_champEQUIP_TOSURV, DataRowVersion.Original] == true &&
                         !spvEquip.ASuperviser) || (
                            (bool)spvEquip.Row[CSpvEquip.c_champEQUIP_TOSURV, DataRowVersion.Original] == true &&
                            spvEquip.ASuperviser && (
                                spvEquip.Row[CSpvEquip.c_champEQUIP_ADDRIP, DataRowVersion.Original] !=
                                spvEquip.Row[CSpvEquip.c_champEQUIP_ADDRIP] || (
                                    spvEquip.Row[CSpvEquip.c_champEQUIP_EMNAME, DataRowVersion.Original] !=
                                    spvEquip.Row[CSpvEquip.c_champEQUIP_EMNAME]))))
                    {
                        // Message pour EmessEM
                        CSpvMessem spvMessem = new CSpvMessem(spvEquip.ContexteDonnee);
                        spvMessem.CreateNewInCurrentContexte();
                        spvMessem.FormatMessDelEquip(spvEquip.Id,
                                                     (string)spvEquip.Row[CSpvEquip.c_champEQUIP_ADDRIP, DataRowVersion.Original],
                                                     (string)spvEquip.Row[CSpvEquip.c_champEQUIP_EMNAME, DataRowVersion.Original],
                                                     spvEquip.ASuperviser);
                    }

                    if (((bool)spvEquip.Row[CSpvEquip.c_champEQUIP_TOSURV, DataRowVersion.Original] == false &&
                         spvEquip.ASuperviser) || (
                            (bool)spvEquip.Row[CSpvEquip.c_champEQUIP_TOSURV, DataRowVersion.Original] == true &&
                            spvEquip.ASuperviser && (
                                spvEquip.Row[CSpvEquip.c_champEQUIP_ADDRIP, DataRowVersion.Original] !=
                                spvEquip.Row[CSpvEquip.c_champEQUIP_ADDRIP] || (
                                    spvEquip.Row[CSpvEquip.c_champEQUIP_EMNAME, DataRowVersion.Original] !=
                                    spvEquip.Row[CSpvEquip.c_champEQUIP_EMNAME]))))
                    {
                        // Message pour EmessEM
                        CSpvMessem spvMessem = new CSpvMessem(spvEquip.ContexteDonnee);
                        spvMessem.CreateNewInCurrentContexte();
                        spvMessem.FormatMessCreEquip(spvEquip.Id);
                    }
                }
                else if (row.RowState == DataRowState.Deleted)
                {
                    spvEquip = new CSpvEquip(row);
                    if ((bool)spvEquip.Row[CSpvEquip.c_champEQUIP_TOSURV, DataRowVersion.Original] == true)
                    {
                        // Message pour EmessEM
                        CSpvMessem spvMessem = new CSpvMessem(spvEquip.ContexteDonnee);
                        spvMessem.CreateNewInCurrentContexte();
                        spvMessem.FormatMessDelEquip(
                            (Int32)spvEquip.Row[CSpvEquip.c_champEQUIP_ID, DataRowVersion.Original],
                            (string)spvEquip.Row[CSpvEquip.c_champEQUIP_ADDRIP, DataRowVersion.Original],
                            (string)spvEquip.Row[CSpvEquip.c_champEQUIP_EMNAME, DataRowVersion.Original],
                            (bool)spvEquip.Row[CSpvEquip.c_champEQUIP_TOSURV, DataRowVersion.Original]);
                    }

                    if ((string)spvEquip.Row[CSpvEquip.c_champTYPEQ_NOM, DataRowVersion.Original] == CSpvTypeq.c_strTypeEquipMediation)
                    {
                        spvEquip.SuppressionTestEM(
                            (string)spvEquip.Row[CSpvEquip.c_champSITE_EQUIP_COMMENT, DataRowVersion.Original],
                            (string)spvEquip.Row[CSpvEquip.c_champEQUIP_INDEXSNMP, DataRowVersion.Original]);
                        CSpvTestem testEM = new CSpvTestem(spvEquip.ContexteDonnee);
                    }
                }
            }
            table.ExtendedProperties.Add(CDivers.c_cleRowCrees, lstCrees);
        }
Beispiel #21
0
        //-----------------------------------------
        public CResultAErreur PropageMasquage()
        {
            CResultAErreur result = CResultAErreur.True;

            //STEF 20/10/2010, le masquage est à revoir, il crée des boucles infinies.
            //c'est notamment à cause des boucles, qui ne peuvent pas être gerées par le masquage.
            //Il faut travailler sur un masquage au niveau service !
            return(result);


            CSpvEquip masquant = EquipementMasquant;
            CSpvEquip masqué   = EquipementMasque;

            //Recherche tout ce que masque le masqué
            CListeObjetsDonnees listeMasqués = new CListeObjetsDonnees(ContexteDonnee, typeof(CSpvEquip_Msk));

            listeMasqués.Filtre = new CFiltreData(c_champEQUIP_MASQUANT_ID + "=@1",
                                                  masqué.Id);
            foreach (CSpvEquip_Msk mskExistant in listeMasqués)
            {
                //Trouve le masquage entre le masquant et le masqué du masqué
                CSpvEquip_Msk msk = new CSpvEquip_Msk(ContexteDonnee);
                if (!msk.ReadIfExists(new CFiltreData(
                                          c_champEQUIP_MASQUANT_ID + "=@1 and " +
                                          CSpvEquip_Msk.c_champEQUIP_MASQUE_ID + "=@2",
                                          masquant.Id,
                                          mskExistant.EquipementMasque.Id)))
                {
                    //Stef 11/10/2010 : Evite le masquage de boucle : si le masquant est masqué par le
                    //masqué, on ne crée pas
                    CSpvEquip_Msk mskTmp = new CSpvEquip_Msk(ContexteDonnee);
                    if (!mskTmp.ReadIfExists(new CFiltreData(
                                                 c_champEQUIP_MASQUANT_ID + "=@1 and " +
                                                 CSpvEquip_Msk.c_champEQUIP_MASQUE_ID + "=@2",
                                                 mskExistant.EquipementMasquant.Id,
                                                 masquant.Id)))
                    {
                        msk.CreateNewInCurrentContexte();
                        msk.EquipementMasquant = masquant;
                        msk.EquipementMasque   = mskExistant.EquipementMasque;
                        msk.PropageMasquage();
                    }
                    else
                    {
                        msk = null;
                    }
                }
                if (msk != null)
                {
                    //S'assure que je suis bien source du masquage
                    CListeObjetsDonnees sources = msk.Sources;
                    sources.Filtre = new CFiltreData(
                        CSpvEquip_Msk_Source.c_champMasquageParent1 + "=@1 and " +
                        CSpvEquip_Msk_Source.c_champMasquageParent2 + "=@2",
                        Id,
                        mskExistant.Id);
                    if (sources.Count == 0)
                    {
                        CSpvEquip_Msk_Source source = new CSpvEquip_Msk_Source(ContexteDonnee);
                        source.CreateNewInCurrentContexte();
                        source.Equip_Msk        = msk;
                        source.Equip_MskSource1 = this;
                        source.Equip_MskSource2 = mskExistant;
                    }
                }
            }

            //Recherche tout ce qui masque le masquant
            CListeObjetsDonnees listeMasquants = new CListeObjetsDonnees(ContexteDonnee, typeof(CSpvEquip_Msk));

            listeMasquants.Filtre = new CFiltreData(
                c_champEQUIP_MASQUE_ID + "=@1",
                masquant.Id);
            foreach (CSpvEquip_Msk mskExistant in listeMasquants)
            {
                //Trouve le masquage entre le masquant du masquant et le masqué
                CSpvEquip_Msk msk = new CSpvEquip_Msk(ContexteDonnee);
                if (!msk.ReadIfExists(new CFiltreData(
                                          c_champEQUIP_MASQUANT_ID + "=@1 and " +
                                          c_champEQUIP_MASQUE_ID + "=@2",
                                          mskExistant.EquipementMasquant.Id,
                                          masqué.Id)))
                {
                    //Stef 11/10/2010 : Evite le masquage de boucle : si le masquant est masqué par le
                    //masqué, on ne crée pas

                    CSpvEquip_Msk mskTmp = new CSpvEquip_Msk(ContexteDonnee);
                    if (!mskTmp.ReadIfExists(new CFiltreData(
                                                 c_champEQUIP_MASQUANT_ID + "=@1 and " +
                                                 CSpvEquip_Msk.c_champEQUIP_MASQUE_ID + "=@2",
                                                 masquant.Id,
                                                 mskExistant.EquipementMasquant.Id)))
                    {
                        //Crée le masquage
                        msk.CreateNewInCurrentContexte();
                        msk.EquipementMasquant = mskExistant.EquipementMasquant;
                        msk.EquipementMasque   = masqué;
                        msk.PropageMasquage();
                    }
                    else
                    {
                        msk = null;
                    }
                }
                if (msk != null)
                {
                    //S'assure que je suis bien source du masquage
                    CListeObjetsDonnees sources = msk.Sources;
                    sources.Filtre = new CFiltreData(
                        CSpvEquip_Msk_Source.c_champMasquageParent1 + "=@1 and " +
                        CSpvEquip_Msk_Source.c_champMasquageParent2 + "=@2",
                        mskExistant.Id,
                        Id);
                    if (sources.Count == 0)
                    {
                        //Crée la source
                        CSpvEquip_Msk_Source source = new CSpvEquip_Msk_Source(ContexteDonnee);
                        source.CreateNewInCurrentContexte();
                        source.Equip_Msk        = msk;
                        source.Equip_MskSource1 = mskExistant;
                        source.Equip_MskSource2 = this;
                    }
                }
            }
            return(result);
        }
Beispiel #22
0
        //////////////////////////////////////////////////////////////////
        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 { }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        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;
                    }
                }
            }
        }
Beispiel #24
0
        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);
        }