예제 #1
0
        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();
                }
            }
        }
예제 #2
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_dicDirectementConcernesParServices.Clear();

            m_infoSchemaRacine.FillDicsConcernes(
                m_dicDirectementConcernesParSite,
                m_dicDirectementConcernesParLiaison,
                m_dicDirectementConcernesParEquipement,
                m_dicDirectementConcernesParServices);
        }
예제 #3
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);
                    }
                }
            }
        }
예제 #4
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;
                }
            }
        }
예제 #5
0
        //---------------------------------------------------------------------------------------------
        protected override void RecalculeGravite()
        {
            //bool bOldOperationnel = m_bIsOperationnel;

            EEtatOperationnelSchema OldEtat = m_etatOperationnel;

            try
            {
                base.RecalculeGravite();
                //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)
                    {
                        m_etatOperationnel = infoSchema.EtatOperationnel;
                    }
                    if (infoFils.GraviteAlarme > GraviteAlarme)
                    {
                        ChangeGravite(infoFils.GraviteAlarme);
                    }
                }
                //if (GraviteAlarme >= EGraviteAlarme.Major && (m_dicSitesSpvConcernant.Count > 0 || m_dicEquipementsSpvConcernant.Count > 0))//Pas de schéma
                if (GraviteAlarme >= EGraviteAlarme.Major)// && (m_dicSitesSpvConcernant.Count > 0 || m_dicEquipementsSpvConcernant.Count > 0))//Pas de schéma
                {
                    m_etatOperationnel = EEtatOperationnelSchema.HS;
                }
            }
            finally
            {
                if (m_etatOperationnel != OldEtat)
                {
                    m_base.OnChangementEtatSupervise(this);
                }
            }
        }
예제 #6
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_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;
                    }
                }
            }
        }
예제 #7
0
        public void InitFromSchema(CSchemaReseau schema)
        {
            m_nIdSchemaReseau = schema.Id;
            m_schema          = schema;

            CSpvSchemaReseau schemaSPV = CSpvSchemaReseau.GetObjetSpvFromObjetTimos(schema);

            if (schemaSPV != null)
            {
                m_nIdSchemaReseauSpv = schemaSPV.Id;
            }

            CListeObjetsDonnees lstElements = schema.ElementsDeSchema;

            lstElements.ReadDependances(
                "SchemaReseauInclu",
                "SchemaReseauContenu");
            //Charge les données SPV
            AssureRelationsToSpv();
            CListeObjetsDonnees lstTmp = lstElements.GetDependances("Site");

            lstTmp.GetDependances(m_relationFromSiteSpvToSite).AssureLectureFaite();

            lstTmp = lstElements.GetDependances("EquipementLogique");
            lstTmp.GetDependances(m_relationFromEquipementSpvToEquipement).AssureLectureFaite();

            lstTmp = lstElements.GetDependances("LienReseau");
            lstTmp.GetDependances(m_relationFromLiaisonSpvToLiaison).AssureLectureFaite();

            //CSpvService service = CSpvService.GetObjetSpvFromObjetTimos(schema);

            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 != null)
                    {
                        fils.InitFromElementDeSchema(elt);
                        m_listeFils.Add(fils);
                    }
                }
            }

            PrepareSupervisionEtatOperationnel(schema);
            CalculArbreOperationnel();
        }