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);
     }
 }
示例#2
0
        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;
                    }
                }
            }
        }
示例#4
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 { }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
示例#5
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);
        }