예제 #1
0
        //---------------------------------------------------------------------------------------------
        protected override void RecalculeGraviteEtMasquage()
        {
            //bool bOldOperationnel = m_bIsOperationnel;

            EEtatOperationnelSchema oldEtat = EtatOperationnel;

            try
            {
                base.RecalculeGraviteEtMasquage();
                //Normallement, il n'y a qu'un fils !
                m_bIsOperationnel = true;
                foreach (CInfoElementDeSchemaSupervise infoFils in m_listeFils)
                {
                    CInfoSchemaDeSchemaSupervise infoSchema = infoFils as CInfoSchemaDeSchemaSupervise;
                    if (infoSchema != null && EtatOperationnel > infoSchema.EtatOperationnel)
                    {
                        EtatOperationnel = infoSchema.EtatOperationnel;
                    }
                }
            }
            finally
            {
                if (EtatOperationnel != oldEtat)
                {
                    m_base.OnChangementEtatSupervise(this);
                }
            }
        }
        private void CalculArbreOperationnel()
        {
            // Calcul les graphes
            CResultAErreur result = CResultAErreur.True;

            CGrapheReseau grapheAller = new CGrapheReseau();

            result = grapheAller.CalculeGraphe(m_schema, ESensAllerRetourLienReseau.Forward);
            if (result)
            {
                result = m_arbreAller.CalculArbreRedondanceAuto(m_schema, grapheAller);
            }

            CGrapheReseau grapheRetour = new CGrapheReseau();

            result = grapheRetour.CalculeGraphe(m_schema, ESensAllerRetourLienReseau.Backward);
            if (result)
            {
                result = m_arbreRetour.CalculArbreRedondanceAuto(m_schema, grapheAller);
            }


            foreach (CInfoElementDeSchemaSupervise info in this.ListeFils)
            {
                CInfoSchemaDeSchemaSupervise infoSchema = info as CInfoSchemaDeSchemaSupervise;
                if (infoSchema != null)
                {
                    infoSchema.CalculArbreOperationnel();
                }
            }
        }
        public void InitFromSchema(CSchemaReseau schema)
        {
            m_dbKeySchemaReseau = schema.DbKey;
            m_schema            = schema;

            CListeObjetsDonnees lstElements = schema.ElementsDeSchema;

            lstElements.ReadDependances(
                "SchemaReseauInclu",
                "SchemaReseauContenu");

            foreach (CElementDeSchemaReseau elt in lstElements)
            {
                IElementDeSchemaReseau elementFils = elt.ElementAssocie;
                if (elementFils != null)
                {
                    CInfoElementDeSchemaSupervise fils = null;
                    if (elementFils is CSite)
                    {
                        fils = new CInfoSiteDeSchemaSupervise(this, elt, m_base, NiveauProfondeur + 1);
                    }
                    if (elementFils is CLienReseau)
                    {
                        fils = new CInfoLienDeSchemaSupervise(this, elt, m_base, NiveauProfondeur + 1);
                    }
                    if (elementFils is CElementDeSchemaReseau)
                    {
                        fils = new CInfoEquipementDeSchemaSupervise(this, elt, m_base, NiveauProfondeur + 1);
                    }
                    if (elementFils is CSchemaReseau)
                    {
                        fils = new CInfoSchemaDeSchemaSupervise(this, elt, m_base, NiveauProfondeur + 1);
                    }
                    if (elementFils is CEquipementLogique)
                    {
                        fils = new CInfoEquipementDeSchemaSupervise(this, elt, m_base, NiveauProfondeur + 1);
                    }
                    if (elementFils is CEntiteSnmp)
                    {
                        fils = new CInfoEntiteSnmpDeSchemaSupervise(this, elt, m_base, NiveauProfondeur + 1);
                    }
                    if (elementFils != null)
                    {
                        fils.InitFromElementDeSchema(elt);
                        m_listeFils.Add(fils);
                    }
                }
            }

            PrepareSupervisionEtatOperationnel(schema);
            CalculArbreOperationnel();
        }
예제 #4
0
        public override void FillDicNoeudArbreRacineToInfoElement(
            Dictionary <CElementDeArbreOperationnel, CInfoElementDeSchemaSupervise> dicNoeudArbreRacineToInfoElement)
        {
            //base.FillDicNoeudArbreRacineToInfoElement(dicNoeudArbreRacineToInfoElement);


            foreach (CInfoElementDeSchemaSupervise infoFils in m_listeFils)
            {
                CInfoSchemaDeSchemaSupervise infoSchema = infoFils as CInfoSchemaDeSchemaSupervise;
                if (infoSchema != null)
                {
                    if (!dicNoeudArbreRacineToInfoElement.ContainsKey(infoSchema.ArbreAller.ElementRacine))
                    {
                        dicNoeudArbreRacineToInfoElement.Add(infoSchema.ArbreAller.ElementRacine, this);
                    }
                }
            }
        }
예제 #5
0
        private void TrouveLesConcernes(CSchemaReseau schema)
        {
            m_infoSchemaRacine = new CInfoSchemaDeSchemaSupervise(null, null, this, 0);
            m_infoSchemaRacine.InitFromSchema(schema);

            m_dicDirectementConcernesParEquipement.Clear();
            m_dicDirectementConcernesParLiaison.Clear();
            m_dicDirectementConcernesParSite.Clear();
            m_dicDirectementConcernesParEntiteSnmp.Clear();
            m_dicDirectementConcernesParServices.Clear();

            m_infoSchemaRacine.FillDicsConcernes(
                m_dicDirectementConcernesParSite,
                m_dicDirectementConcernesParLiaison,
                m_dicDirectementConcernesParEquipement,
                m_dicDirectementConcernesParEntiteSnmp,
                m_dicDirectementConcernesParServices);
        }
예제 #6
0
        internal override void InitFromElementDeSchema(CElementDeSchemaReseau eltDeSchema)
        {
            base.InitFromElementDeSchema(eltDeSchema);
            CSite site = eltDeSchema.Site;

            if (site == null)
            {
                throw new Exception("Bad element for supervision data ");
            }
            InitForSite(site);
            //Cherche les cablages pour ce site
            foreach (CSchemaReseau sousSchema in eltDeSchema.SchemaReseau.SchemaFils)
            {
                if (site.Equals(sousSchema.SiteApparenance))
                {
                    CInfoSchemaDeSchemaSupervise info = new CInfoSchemaDeSchemaSupervise(this, eltDeSchema, m_base, NiveauProfondeur + 1);
                    m_listeFils.Add(info);
                    info.InitFromSchema(sousSchema);
                    break;
                }
            }
        }
예제 #7
0
        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_dbKeyLien = lien.DbKey;

            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;
                    }
                }
            }
            IElementALiensReseau extremite = lien.Element1;

            if (extremite is CSite)
            {
                m_dicSitesConcernant[extremite.DbKey] = true;
            }
            if (extremite is CEquipementLogique)
            {
                m_dicEquipementsConcernant[extremite.DbKey] = true;
            }
            extremite = lien.Element2;
            if (extremite is CSite)
            {
                m_dicSitesConcernant[extremite.DbKey] = true;
            }
            if (extremite is CEquipement)
            {
                m_dicEquipementsConcernant[extremite.DbKey] = true;
            }
            m_dicLiaisonsConcernant[lien.DbKey] = true;
        }